One thought was to allow an elapsed time go by until the next character is registered.
Read reply #3 again for the details.
It is not particularly difficult to locate the positive and negative peaks in the waveform posted in reply #2. Google "peak search algorithm" for ideas.