For an unvoiced frame this code
|
if (!repeat) { |
|
// All frames use the first 4 coefficients |
|
synthK1 = tmsK1[getBits(5)]; |
|
synthK2 = tmsK2[getBits(5)]; |
|
synthK3 = tmsK3[getBits(4)]; |
|
synthK4 = tmsK4[getBits(4)]; |
|
if (synthPeriod) { |
|
// Voiced frames use 6 extra coefficients. |
|
synthK5 = tmsK5[getBits(4)]; |
|
synthK6 = tmsK6[getBits(4)]; |
|
synthK7 = tmsK7[getBits(4)]; |
|
synthK8 = tmsK8[getBits(3)]; |
|
synthK9 = tmsK9[getBits(3)]; |
|
synthK10 = tmsK10[getBits(3)]; |
|
} |
|
} |
sets synthK1 to synthK4 but does not set synthK5 to synthK10. This leaves any values previously set so the current frame will actually inherit any set values from a previous frame.
This appears at odds with the (brief) comments in the data sheet on how it operates if I am interpreting them correctly? Page 9 says:
Unvoiced speech requires fewer filter coefficients. When Pitch = 000000, only K1-K4 are fetched from the VSM and stored in the Parameter RAM. K5-K10 are zeroed.
I've not executed this code, I've just inspected it...
For an unvoiced frame this code
Talkie/Talkie/talkie.cpp
Lines 125 to 140 in 7f57628
sets
synthK1tosynthK4but does not setsynthK5tosynthK10. This leaves any values previously set so the current frame will actually inherit any set values from a previous frame.This appears at odds with the (brief) comments in the data sheet on how it operates if I am interpreting them correctly? Page 9 says:
I've not executed this code, I've just inspected it...