diff --git a/dictsource/en_rules b/dictsource/en_rules index 6d22cdec..32a198f2 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -2710,6 +2710,7 @@ ie (ntal I'E g) ie (n i: _sc) ie (n aI@ +?8 _sc) ie (n aIa2 ie (nCiA I2'E fr) ie (nd E f) ie (nd i: diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 2f8a8228..f5709ac6 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -27,12 +27,12 @@ hierar) ch (i C me) ch (a C te) ch (n C - _pe) ch C pszi) ch C pszy) ch C mün) ch (en C maso) ch (istA C monar) ch (i C + _pe) ch C szé) ch tS _zi) ch (y tS @@ -224,6 +224,7 @@ _munká) s S _nyílá) s S _o) slo slo: _o) sló slo: + tojá) s S sz (öld Sz va) s (zabl S|| @@ -299,6 +300,7 @@ vörösmar) ty ti má) zc (sz z mé) zc (sz z nehé) z (sé z + pén) z z szá) z (sz z tű) z (sz z ví) z (sz z diff --git a/phsource/compile_report b/phsource/compile_report index aa185cda..be3bcc11 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -276,6 +276,7 @@ 3 vdiph/0i_2 en_sc no en_wi 3 vdiph2/e@ en_sc en_wi 1 vdiph2/ea ro + 1 vdiph2/ei_3 en_wm 1 vdiph2/eo ro 1 vdiph2/e[u ro 1 vdiph2/i@ en_n @@ -414,8 +415,8 @@ 1 vowel/@- base 4 vowel/& en_rp fi hi sv 4 vowel/0 base2 en hi pt - 4 vowel/0_2 en_n en_wm pt_pt sw - 4 vowel/0_3 en_us en_sc en_rp hu + 3 vowel/0_2 en_n pt_pt sw + 5 vowel/0_3 en_us en_sc en_rp en_wm hu 2 vowel/@_2 fr 2 vowel/&_2 en_us 6 vowel/@_3 en_sc de hi @@ -444,14 +445,14 @@ 2 vowel/aa_8 en_us 3 vowel/a_en en fr 1 vowel/@_bck hi - 16 vowel/e base2 en en_n af cy eo fr hr it la pt pt_pt ++ + 17 vowel/e base2 en en_n en_wm af cy eo fr hr it la pt ++ 2 vowel/e# en_sc 7 vowel/e_2 en_sc de hi it sv no 1 vowel/e_3 hu 1 vowel/e_5 en_sc 3 vowel/ee fr pl sv 2 vowel/e_e en_sc is - 9 vowel/ee_1 base2 en en_n en_wm pl la sv no zhy + 8 vowel/ee_1 base2 en en_n pl la sv no zhy 4 vowel/ee_2 en en_us cy nl 1 vowel/ee#_2 sv 4 vowel/ee_3 af pt vi @@ -567,7 +568,6 @@ 1 vwl_en_us/oor en_us 3 vwl_en_us/or en_us en_sc 1 vwl_en_us/ur en_us - 1 vwl_en_wm/i en_wm 3 vwl_fr/@R fr pt_pt 1 vwl_fr/@R2 fr_ca 1 vwl_hi/A hi @@ -618,7 +618,7 @@ 1 w/wa base 1 w/we base 3 w/wi base vi zhy - 12 w/wi2 en en_n en_us en_sc en_rp en_wm de nl la sv no + 11 w/wi2 en en_n en_us en_sc en_rp de nl la sv no 1 w/wo base 1 w/wu base 5 w/xw base diff --git a/phsource/ph_english_wi b/phsource/ph_english_wi index 6c72dd68..f657e7bc 100644 --- a/phsource/ph_english_wi +++ b/phsource/ph_english_wi @@ -124,7 +124,7 @@ endphoneme phoneme i: vowel starttype (i) endtype (i) - length 175 + length 190 formants vowel/i_fnt linkout ; endphoneme diff --git a/phsource/ph_english_wm b/phsource/ph_english_wm index db925e70..90db524f 100644 --- a/phsource/ph_english_wm +++ b/phsource/ph_english_wm @@ -26,7 +26,8 @@ endphoneme phoneme E vowel starttype (e) endtype (e) length 150 - formants vowel/ee_1 + formants vowel/e +// formants vowel/ee_1 reduceto I 0 endphoneme @@ -61,7 +62,7 @@ endphoneme phoneme 0 vowel starttype (o) endtype (o) length 140 - formants vowel/0_2 + formants vowel/0_3 reduceto @ 0 endphoneme @@ -125,10 +126,10 @@ endphoneme phoneme i: - vowel starttype (i) endtype (i) + vowel starttype (e) endtype (i) length 220 - formants vwl_en_wm/i - after w w/wi2 + formants vdiph2/ei_3 +// after w w/wi2 linkout ; endphoneme @@ -162,7 +163,6 @@ phoneme u: vowel starttype (u) endtype (u) length 200 formants vdiph/@u -// before l/ vwl_en/u:L2-40+L/uL endphoneme diff --git a/phsource/vdiph/vowelchart.png b/phsource/vdiph/vowelchart.png index ac486e81..83a6170e 100644 Binary files a/phsource/vdiph/vowelchart.png and b/phsource/vdiph/vowelchart.png differ diff --git a/phsource/vdiph/ei_2 b/phsource/vdiph2/ei_2 similarity index 100% rename from phsource/vdiph/ei_2 rename to phsource/vdiph2/ei_2 diff --git a/phsource/vdiph2/ei_3 b/phsource/vdiph2/ei_3 new file mode 100644 index 00000000..c3bc023d Binary files /dev/null and b/phsource/vdiph2/ei_3 differ diff --git a/phsource/vdiph2/vowelchart.png b/phsource/vdiph2/vowelchart.png index cf204b70..f4054b44 100644 Binary files a/phsource/vdiph2/vowelchart.png and b/phsource/vdiph2/vowelchart.png differ diff --git a/phsource/vwl_en_wm/i b/phsource/vwl_en_wm/i deleted file mode 100644 index 42645367..00000000 Binary files a/phsource/vwl_en_wm/i and /dev/null differ diff --git a/phsource/vwl_en_wm/u b/phsource/vwl_en_wm/u deleted file mode 100644 index ef4cc423..00000000 Binary files a/phsource/vwl_en_wm/u and /dev/null differ diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 7335ea00..2ec789ea 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.29.07 17.Sep.07"; +const char *version_string = "1.29.10 16.Oct.07"; const int version_phdata = 0x012901; int option_device_number = -1; diff --git a/src/wavegen.cpp b/src/wavegen.cpp index 1f01fa1a..d7426a5e 100755 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -824,10 +824,12 @@ static void WavegenSetEcho(void) echo_head = (delay * samplerate)/1000; echo_length = echo_head; // ensure completion of echo at the end of speech // echo_length = echo_head * 2; // perhaps allow 2 echo periods at the end of speech ? + + // echo_amp units are 1/256ths of the amplitude of the original sound. echo_amp = amp; // compensate (partially) for increase in amplitude due to echo general_amplitude = GetAmplitude(); - general_amplitude = ((general_amplitude * (512-amp))/512); + general_amplitude = ((general_amplitude * (500-amp))/500); } // end of WavegenSetEcho @@ -837,6 +839,8 @@ int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control) // Calculate the amplitude of each harmonics from the formants // Only for formants 0 to 5 +// control 0=initial call, 1=every 64 cycles + // pitch and freqs are Hz<<16 int f; @@ -897,10 +901,15 @@ int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control) // find the nearest harmonic for HF peaks where we don't use shape for(; pk> 14; peak_height[pk] = (x * x * 5)/2; + // find the nearest harmonic for HF peaks where we don't use shape + if(control == 0) + { + // set this initially, but make changes only at the quiet point + peak_harmonic[pk] = peaks[pk].freq / pitch; + } // only use harmonics up to half the samplerate if(peak_harmonic[pk] >= hmax_samplerate) peak_height[pk] = 0; @@ -1110,6 +1119,7 @@ static int Wavegen() int h; int ix; int z, z1, z2; + int echo; int ov; static int maxh, maxh2; int pk; @@ -1186,6 +1196,12 @@ static int Wavegen() cycle_count++; + for(pk=wvoice->n_harmonic_peaks+1; pk>7) * amplitude2) >> 14); - z = (z1 * agc) >> 8; - z += ((echo_buf[echo_tail++] * echo_amp) >> 8); + echo = (echo_buf[echo_tail++] * echo_amp); + z1 += echo >> 8; if(echo_tail >= N_ECHO_BUF) echo_tail=0; + z = (z1 * agc) >> 8; + // check for overflow, 16bit signed samples if(z >= 32768) {