Obtaining speech parameters from sound files

Two example data files: FIFTEEN3.wav and FIFTEEN165.wav
ESPS uses a proprietary audio file format (".sd" format), so you first have to convert audio files in other formats to that. First, find out what the sampling rate etc are of your original audio file; e.g.

$ sox --info FIFTEEN3.wav

Second, convert the audio file to .raw (headerless) format:

$ sox FIFTEEN3.wav FIFTEEN3.raw

Third, convert the .raw file to .sd using the ESPS btosps function, e.g.

$ btosps -f 16000 -n 1 -t SHORT -c "" FIFTEEN3.raw FIFTEEN3.sd

Now you can run analyses such as voicing and f0 tracking, using e.g. ESPS get_f0 function:

$ get_f0 -i 0.005 FIFTEEN3.sd FIFTEEN3.f0

Formant frequencies and bandwidths:

$ formant FIFTEEN3.sd FIFTEEN3.fb

LPC coefficients:

$ refcof -p '1:50000' -l 160 -S 80 -m "burg" -z FIFTEEN3.sd FIFTEEN3.rc
$ transpec -m "AFC"
FIFTEEN3.rc - | pplain - >FIFTEEN3.afc.csv
$ get_resid -a 2
FIFTEEN3.sd FIFTEEN3.rc FIFTEEN3-resid.d

You can convert the various output files (.sd, .f0, .fb, .rc etc) to plain ASCII using e.g.

$ pplain
FIFTEEN3.f0 >FIFTEEN3.f0.csv

You can convert output .d or .sd audio files to .raw by "beheading" them:

$ bhd FIFTEEN3-resid.d FIFTEEN3-resid.raw
$ sox -r 16000 -b 16 -e signed-integer FIFTEEN3-resid.raw FIFTEEN3-resid.wav

Fitting a known function to some observed data