mmorise / World

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

why is pi not 2pi #124

Closed hdmjdp closed 3 years ago

hdmjdp commented 3 years ago

https://github.com/mmorise/World/blob/2c9d3030bf04516bdc19c0afa1ea5571eaaa2c59/src/synthesis.cpp#L259

why is pi not 2pi? can you explain how to got the pulse position?

mmorise commented 3 years ago

Thank you for your question.

This conditional statement is for extracting the phase jump over the value pi. Generally, since this value does not exceed 2pi, you can't use the value of 2pi instead of pi. We can extract the temporal position at phase jump as the pulse location.

hdmjdp commented 3 years ago

Thank you for your question.

This conditional statement is for extracting the phase jump over the value pi. Generally, since this value does not exceed 2pi, you can't use the value of 2pi instead of pi. We can extract the temporal position at phase jump as the pulse location.

so, the pi is empirical value, not theoretical value? or I can use 0.75pi?

mmorise commented 3 years ago

The value pi is determined based on the phase unwrapping problem. You can change this value such as 0.75pi, but using the value pi causes no problem in almost every case. For example, if the F0 contour is set to above Nyquist frequency, the phase difference between N and N+1 samples would exceed pi. There may be a problem in cases where the F0 contour is around such high frequency.

hdmjdp commented 3 years ago

The value pi is determined based on the phase unwrapping problem. You can change this value such as 0.75pi, but using the value pi causes no problem in almost every case. For example, if the F0 contour is set to above Nyquist frequency, the phase difference between N and N+1 samples would exceed pi. There may be a problem in cases where the F0 contour is around such high frequency.

Thank you. I will check the phase unwapping.