When analyzing .wav files in Praat, total time duration and target speech segments are represented down to 6 decimals. For example: 154.900000 seconds (borrowed from a Google image screenshot). However, standards in linguistic studies on voice onset time and aspiration, for which precise time measurement is necessary, appear to only report data to the 3rd decimal, or down to the millisecond (ms=.001).

My question is: How certain are we that Praat is reliably representing/reporting/analyzing .wav speech data files down to this 6th decimal, or microsecond (.000001 seconds; .001 milliseconds)? Can I feasibly narrow down my speech data analysis to this temporal resolution, without rounding to milliseconds, while still maintaining validity and reliability?

Or, another way to frame this question: Can .wav files offer a method (but not the only method) to cross-check millisecond precision/accuracy as required for psychological software testing?

I'm also posting this question to Research Gate, so both will be linked.

  • researchgate.net/post/… Jun 21, 2018 at 22:01
  • Note: The target here is the empty/negative space of speech, from the end of a speech sample to the beginning of the following speech sample (in the same audio file). For my purposes, the space between these two different streams of speech is from the end of an auditory stimulus presentation to the beginning of an oral response made by a participant. I'm looking at response times, which need the control of millisecond precision in psycholinguistic experiments. Jun 21, 2018 at 22:12

3 Answers 3


The bottom-line positive answer is "there's nothing to worry about". More specifically, though, a bit of background on digital technology will clarify how the question is somewhat misconceived.

Assume that you have a sampled speech file containing 1024 bytes, where (counting from zero) bytes 5 and 987 are 255. The question is, what is the duration in time between those bytes? The answer is, who knows? You have to first specify how many bytes there are in a sample, and what the sampling rate is. If each byte is a sample and the sampling rate is 8000 Hz, then successive bytes (samples) are .000125 seconds apart, and the distance in time between the pulses is .12275 seconds. If samples are 2 bytes (16 bit samples, more common), then samples are still .000125 seconds apart, the pulses are .061375 seconds apart.

The sampling rate defines a limit on time resolution. Although physical sound is continuous, digitized sound chops that continuity up into evenly-spaced values. If you think you have something happening at time 0.000625 sec. and something else happening at 0.001130 sec. representing a duration between events of 0.000505 sec., you have created an measurement artifact. In an 8K srate file, all samples occur at even multiples of .000125. The correct answer is 0.0005 sec (with the sampling rate telling you what the precision of the measurement is).

Praat allows you to position the cursor at arbitrary positions -- it does not say "Can't do that, the cursor has to be exactly on a sample boundary!". Whenever you position the cursor, you are always doing your best to line it up to where the actual sample / event "is", that is, at the screen position that corresponds to where a sample is plotted, given the existing degree of zooming in.

A simple visual technique for understanding the relationship between raw data and Praat displays is to create a plain text file with just a line containing "000..." i.e. just zeros, but with two other characters (e.g. 000Z00000Z00), separated by a known number of zeros. Open this as a "special" (Alaw) raw sound file, and you'll get a flat line with two blips. You can repeatedly try to select the portion between the centers of the blips, and can query the duration of the selection, and I predict that you'll get somewhat different durations nearly all of the time. It's not that Praat is in error, it's that there is a fixed time granularity determined by sampling rate, and a different granularity determined by screen resolution. Praat allows you to set the cursor in places that don't correspond to samples.

To add marginally to your concerns, I was talking only about reading the raw waveform. From the raw waveform, you can compute other functions, such as formant tracks, amplitude traces, pitch, and a spectrogram. Each of these is a "windowed" function, meaning that it take all of the data in a window of a certain size (number of samples of amount of time), and returns a value. That means if the analysis window is 0.001 seconds long, you can't get more time accuracy than 0.001.

A more significant problem for your particular application would be detecting the end and beginning of the speech samples, which can add hundreds of milliseconds of uncertainty to your reaction time computations (depending on the nature of the utterances and the recording setup), as opposed to a fraction of a millisecond owing to uncertainty in time computations from Praat.

  • A sampling rate of 8kHz corresponds approximately to telephone quality; archives of spoken corpora nowadays aim at higher sampling rates (22.05 kHz or even 44.1 kHz). However, this does not change the general validity of this answer. Jun 22, 2018 at 8:40
  • I mentioned 8K because that is the default SR used for Alaw files by Praat, avoiding the necessity of adjusting the SR.
    – user6726
    Jun 22, 2018 at 15:03

Analysing speech data to time intervalls smaller than a few milliseconds is not very sensible: The fundamental frequency f0 of the adult human voice ranges from 100-300 Hz. This means, that one full vibration already takes 3–10 ms, to perceive it as such you need several full vibrations.

The higher frequency components in speech sounds are typically about 1kHz corresponding to a time inteval of 1 ms.

The ear of an adult can perceive sound upto a frequency of 10–20 kHz corresponding to time interval of 0.05–0.1 ms, this being the absolute limit of human perception.


If you want to check the reliability of measurements made in Praat, you could use another computer programme that allows you to look at the waveform and/or spectrogram such as Audacity or ELAN and repeat the measurement there. You'll need some sort of landmark (e.g. zero crossing of first regular voicing period). I am not aware of any complaints about the reliability of temporal measurements made with Praat. Few linguists and phoneticians use anything else (some use Matlab to allow easier computation of measurements derived from the spectrum).

That said, I struggle to come up with a scenario where 0.001 ms would be meaningful. Rounding to a full or, at a stretch, one decimal of a ms should be enough. If the basis of the measurement is boundaries made by human annotators - nobody will be able to achieve that kind of accuracy, and inter- and intra-rater agreement is in most cases substantially worse than 1 ms.

Even if your measurements are automatic, I am not aware of features where anything beyond 0.1 ms would meaningful in speech.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.