[Subject Prev][Subject Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hts-users:03551] HTS 2.3alpha F0 problem: a bug in pitch calculation?


Hi all,

I got unexpectedly bad results when I applied HTS 2.3 alpha to a 22kHz
voice. After some investigation I now suspect that it's the new F0
algorithm from SPTK 3.6 that is causing me problems...

I have a wav file with following contentes;

$ ~/speech_tools/bin/ch_wave -info wav/mv_0002.wav
Duration: 8.9165
Sample rate: 22050
Number of samples: 196608
Number of channels: 1
Header type: riff
Data type: short

from which I have taken the 56 byte header away to make it a raw file.
Size and contents otherweise unchanged. Then I calculated the pitch of
this file with the new pitch command introduced in SPTK 3.6.

/usr/local/SPTK-3.6/bin/x2x +sf
/home/niko/festival/lib/voices/finnish/bl_fi_mv_clunits/festy/raw22/mv_0001.raw
| /usr/local/SPTK-3.6/bin/pitch -H 160 -L 50 -s 22.05 -o 1 |
/usr/local/SPTK-3.6/bin/x2x +fa | tee
/home/niko/festival/lib/voices/finnish/bl_fi_mv_clunits/festy/f0/mv_0001.asc

I convert this to asc to see the results. The figures are reasonable
(didn't check them against the wav but there are unvoiced and voiced
sections), implying that the algorithm works. (Obviously, as it worked
perfectly fine with the 48kHz demo voice.). However, I get unexpected
results regarding length:

$ wc -l f0/mv_0002.asc
2458 f0/mv_0002.asc

The F0 contour should have 5ms intervals, but the length of the output
would imply that the input size is 12.29s (2458*5ms). The factor of
unexpected lengthening is 1.378

$ perl -e 'print(12.29/8.9165);'
1.37834352043963

That is extremely close the difference between 22kHz and 16kHz:

$ perl -e 'print(22.050/16);'
1.378125

For some reason, wrong sample rate seems to be applied by pitch command.
So, I think there's a bug in SPTK 3.6 pitch command relating the the input
sample rate for some (not 16/32/48kHz) sample rates.

br,
  Nicholas





Follow-Ups
[hts-users:03552] Re: HTS 2.3alpha F0 problem: a bug in pitch calculation?, Keiichiro Oura