mmorise / World

A high-quality speech analysis, manipulation and synthesis system
http://www.kisc.meiji.ac.jp/~mmorise/world/english
Other
1.15k stars 249 forks source link

DIO algorithm currently support streaming Handle? #95

Closed BruceYang-yeu closed 4 years ago

BruceYang-yeu commented 4 years ago

(This project is great, I am planning to use it in this project :-) hi mmorise, does the DIO algorithm currently support streaming? From the current self-test situation, the results obtained by streaming are different from the results of the entire file input.

handle with full file: ... float *x = new float[x_length]; // wavread() must be called after GetAudioLength(). int fs, nbit; wavread(argv[1], &fs, &nbit, x); DisplayInformation(fs, nbit, x_length); ... F0EstimationDio(x, x_length, &world_parameters);

handle with steam:

... float *x = new float[x_length]; // wavread() must be called after GetAudioLength(). int fs, nbit; wavread(argv[1], &fs, &nbit, x); DisplayInformation(fs, nbit, x_length); ... int sample_step = 2000; for (int i= 0 ; i <= x_length; i += sample_step) { F0EstimationDio(x+i, sample_step, &world_parameters); }

Looking forward to your reply :)

mmorise commented 4 years ago

Thank you for your comment.

DIO and Harvest don't support the streaming analysis because they use both the past and future waveform to estimate the F0 in a frame. It is possible to implement the algorithm without the processing in using the future waveform, but its performance would be inferior to the original DIO.

BruceYang-yeu commented 4 years ago

Thanks for your reply.