Browse Source

Make envelope computation more robust

When pollint() returns 100.0, multiplying by 2.55 doesn't actually seem to
be getting 255 on i386. Multiplying by 255 and dividing by 100, however,
does (probably because float computation with small integer values are
guaranteed to have integer results).

Fixes #1151
master
Samuel Thibault 3 years ago
parent
commit
a34d74ed43
2 changed files with 3 additions and 3 deletions
  1. 2
    2
      src/libespeak-ng/compiledata.c
  2. 1
    1
      tests/language-phonemes.test

+ 2
- 2
src/libespeak-ng/compiledata.c View File

if (env_lin[ix2] > 0) { if (env_lin[ix2] > 0) {
y = (env_y[ix2] + (env_y[ix2+1] - env_y[ix2]) * ((float)x - env_x[ix2]) / (env_x[ix2+1] - env_x[ix2])) * 2.55; y = (env_y[ix2] + (env_y[ix2+1] - env_y[ix2]) * ((float)x - env_x[ix2]) / (env_x[ix2+1] - env_x[ix2])) * 2.55;
} else if (n_points > 3) } else if (n_points > 3)
y = (int)(polint(&env_x[ix], &env_y[ix], 4, x) * 2.55); // convert to range 0-255
y = (int)(polint(&env_x[ix], &env_y[ix], 4, x) * 255 / 100); // convert to range 0-255
else else
y = (int)(polint(&env_x[ix], &env_y[ix], 3, x) * 2.55);
y = (int)(polint(&env_x[ix], &env_y[ix], 3, x) * 255 / 100);
if (y < 0) y = 0; if (y < 0) y = 0;
if (y > 255) y = 255; if (y > 255) y = 255;
env[x] = y; env[x] = y;

+ 1
- 1
tests/language-phonemes.test View File

test_phwav bpy 7fc6c8c6b347677885c6e973ff4dc6b2b6fa6d59 "ma na Na pa ta t.a tSa ka p#a t#a t.#a tS#a k#a ba da d.a dZa ga b#a d#a d.#a g#a fa Ba sa za Sa Za ha Ha wa la ja ra *a Ra _:_ ma mE mO me mi mi mu m& mV" test_phwav bpy 7fc6c8c6b347677885c6e973ff4dc6b2b6fa6d59 "ma na Na pa ta t.a tSa ka p#a t#a t.#a tS#a k#a ba da d.a dZa ga b#a d#a d.#a g#a fa Ba sa za Sa Za ha Ha wa la ja ra *a Ra _:_ ma mE mO me mi mi mu m& mV"
test_phwav bs f3b9ea69a52d9cabc18007c0bb49c16583acef1b "ma na Na pa ta ka ba da ga tsa tSa tS;a dZa dZ;a fa sa Sa xa va za Za ja la l^a Ra r*a _:_ m@ m@2 ma ma: me me: mo mo: mi mi: mu mu: mA m& mE mU maI" test_phwav bs f3b9ea69a52d9cabc18007c0bb49c16583acef1b "ma na Na pa ta ka ba da ga tsa tSa tS;a dZa dZ;a fa sa Sa xa va za Za ja la l^a Ra r*a _:_ m@ m@2 ma ma: me me: mo mo: mi mi: mu mu: mA m& mE mU maI"
test_phwav ca 563b93f7de72fb4832f2908484bad4908680d7da "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu" test_phwav ca 563b93f7de72fb4832f2908484bad4908680d7da "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu"
test_phwav chr fdfe21bde53ac3665c401a5532484fa674c68158 "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@"
test_phwav chr 19b85a482cd1b35d0d88660ca73e111accb43673 "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@"
test_phwav cmn 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" test_phwav cmn 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55"
test_phwav cmn-Latn-pinyin 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" test_phwav cmn-Latn-pinyin 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55"
test_phwav cs 73d5bdeebdab81c629d34f76c87930bb6a188c50 "ma na n^a pa ta ca ka ba da Ja ga tsa tSa dza dZa fa sa Sa xa va za Za ha r-a Ra R^a R^/a la ja _:_ mi mi: me me: ma ma: mo mo: mu mu: maU meU moU" test_phwav cs 73d5bdeebdab81c629d34f76c87930bb6a188c50 "ma na n^a pa ta ca ka ba da Ja ga tsa tSa dza dZa fa sa Sa xa va za Za ha r-a Ra R^a R^/a la ja _:_ mi mi: me me: ma ma: mo mo: mu mu: maU meU moU"

Loading…
Cancel
Save