Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

synthK5 to synthK10 do not appear to be zeroed for unvoiced frames #39

Open
kevinjwalters opened this issue May 16, 2020 · 0 comments
Open

Comments

@kevinjwalters
Copy link

kevinjwalters commented May 16, 2020

For an unvoiced frame this code

Talkie/Talkie/talkie.cpp

Lines 125 to 140 in 7f57628

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...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant