diff --git a/dictsource/lv_list b/dictsource/lv_list index 8f4c415f..d378c6e7 100644 --- a/dictsource/lv_list +++ b/dictsource/lv_list @@ -477,6 +477,7 @@ dz $abbrev eest $abbrev est $abbrev eur 'euR +irir 'iR_!'iR lnnk $abbrev $pause lp $abbrev ls $abbrev diff --git a/dictsource/lv_rules b/dictsource/lv_rules index 1a495217..80b06c07 100644 --- a/dictsource/lv_rules +++ b/dictsource/lv_rules @@ -66,7 +66,7 @@ // Default rules for o with succeeding consonants .L40 č ģ ķ ļ ņ ŗ š ž // uo indicators — o is spelled as uo in words with Latvian soft consonants -.L41 eo f h ḩ io iē y q w x // o indicators — o is spelled as ȯ in words with Latin letters, also narrowers of e/ē +.L41 eo f h ḩ ia io iē y q w x // o indicators — o is spelled as ȯ in words with Latin letters, also narrowers of e/ē .L42 e i o ng // o prefixes (no a, because of sao.., pao... where o is uo) .L43 lg ng rb zn ļš ss // o postfixes .L44 gļ kļ šņ jā // uo postfixes @@ -144,6 +144,7 @@ .group ā ā a: ā (A a:_! + C) ā (k a:: .group b b b @@ -174,8 +175,7 @@ // international consonants e (JL41+ e e (L41+++ e - L41) e (@ e // narrow only if there is another syllable for ending - L41J) e (@+ e + L41J) e (+ e // narrowing vowels follow e (Cinā e @@ -223,7 +223,7 @@ // specific words ----------------------------------------------------------------- // b) e (dL82L05_ e // bedre _b) e (t_ e - _b) e (z e + _b) e (z+ e _b) e (z_ e _C) e (_ e // re, te, ve c) e (tur e @@ -232,6 +232,7 @@ d) ebe (t ebe _d) e (c e _d) e (poz e + d) e (taļ e _dr) e (nL04_ e _) e (dgarL01_ e // Edgars elem elem @@ -251,6 +252,8 @@ int) ere (L83 eRe _j) e (b_ e _j) e (l_ e + e (soš e + e (sot e _L20) e (sam_+ _!e // esam _L20) e (sat_+ _!e // esat _L20) e (si_ _!e // esi @@ -263,6 +266,7 @@ _n) e (@+ e _n) ere (tL04_ ERE // Nereta n) e (rv E + ns) e (r e p) e (rs e pr) e (cL52z e pr) e (L71L05_ e // prece @@ -305,11 +309,8 @@ // narrow ē ---------------------------------------------------------------------- // // narrowing international consonants - ē (L41+ e: ē (JL41+ e: - ē (L41+ e: - L41) ē (@+ e: // narrow only if there is another syllable for ending - L41J) ē (@ e: + L41J) ē (++ e: // narrowing vowels follow ē (CCCCL21 e: ē (CCCL21 e: @@ -369,6 +370,7 @@ dz) ē (t e: ēcē e:tse: ēdē e:de: + L10) ē (du_ e: ē (kL04_+ E: // ēka ē (L86L13_ e: // ēst ē (rkšķ e: @@ -377,11 +379,15 @@ gr) ē (kL01_ E: izp) ē (t e: _kāp) ē (c_ e: // kāpēc + kr) ē (t+ e: + ķ) ē (dL05_ e: // ķēde _l) ē (L83+ e: // lēst + m) ē (L77L05 e: m) ēne (L83 e:ne m) ē (rķ e: _m) ē (s_ e: // mēs _n) ē (_ e: + ot) ē (k+ e: _p) ē (c+ e: _p) ē (rL01_ e: // pērs p) ēte (r e:te // Pēter.. @@ -461,7 +467,7 @@ .group m m m C) m (C m- // more voiced variant between consonants - mm >m: + mm >m> .group n n n @@ -580,7 +586,7 @@ L46L45L45) o (<< uo dil) o (L80 uo dinam) o o: disp) o o - eg) o o> + _eg) o o> eir) o o _ek) o o eks) o o @@ -809,7 +815,7 @@ L46L45L45) o (<< uo j) odo odo _kl) od (L01_ o:d // Klods k) od (L01_ o:d // ..kods - _k) od (L05_ uod // kode + _k) od (L05_ uo`d // kode k) od (L51 od k) odol uoduol _kum) od (L05_ uod // kumode @@ -1230,6 +1236,7 @@ L46L45L45) o (<< uo k) op (ē_ op // ..kopē k) op (ij op // ..kopij.. k) op (j uop // ..kopj.. + k) op (L65+ uop // ..kuop.. k) op (L04_+ uop // ..kopa k) opo uopuo k) op (pr uop // ..koppr.. @@ -1246,7 +1253,7 @@ L46L45L45) o (<< uo _) op (erL04_++++ o:p // opera op (er++++ op op (iā op - @) op (L01_+ o:p // ..ops + @) op (L01_ o:p // ..ops op (o op op (tiL67 op op (tim op @@ -1506,6 +1513,7 @@ L46L45L45) o (<< uo .group ov _k) ov (ārnL02_ uov // kovārnis k) ov ov + n) ov (ad uov n) ov (at ov n) ov (āci ov n) ov (elL05_ ov // novele @@ -1537,6 +1545,7 @@ L46L45L45) o (<< uo _j) oz (a_ uoz // joza kl) oz (et oz k) ozlov ozlov + l) oz (ung oz _m) oz (L03_ o:z // Mozus _n) oz uoz oz (L01_ o:z // ..ozs @@ -1622,7 +1631,7 @@ L46L45L45) o (<< uo _) vi (stk v'i // vistk.. _) vi (stL04_ v'i // vista _) vi (sum v'i // visum - _) vi (sur_ v'i // visur + _) vi (sur v'i // visur _) vi (sval v'i // Visval.. _) vi (svar v'i // Visvar.. _) vis v%is (P3 @@ -1639,6 +1648,7 @@ L46L45L45) o (<< uo .group y y y // y is used instead of simple "i", to distinguish them in writing + y (A y_| .group z z z diff --git a/phsource/ph_latvian b/phsource/ph_latvian index aca8af8a..e2e7a4b5 100644 --- a/phsource/ph_latvian +++ b/phsource/ph_latvian @@ -1,11 +1,3 @@ -// IF thisPh(isStressed) THEN -// FMT(vowel/..., 100) -// ELIF thisPh(isDiminished) AND NOT prevVowel(isStressed) THEN -// FMT(vowel/..., 50) -// ELSE -// FMT(vowel/..., 75) -// ENDIF - phoneme a vwl starttype #a endtype #a length 130 @@ -171,12 +163,23 @@ phoneme tS WAV(ustop/tsh,40) endphoneme -phoneme n- // more voiced variant of n - vwl starttype #a endtype #a - ipa nU+0329 - lengthmod 4 - length 120 - FMT(n/n-syl) +phoneme D // louder and shorter version of d + vcd alv stp + voicingswitch t + length 10 + lengthmod 5 + Vowelin f1=1 f2=1700 -300 300 f3=-100 80 + Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk + + IF PreVoicing THEN + FMT(d/xd, 110) + ENDIF + + IF nextPh(isPause2) THEN + FMT(d/d_, 120) addWav(x/d_,110) + ENDIF + + FMT(d/d, 110) addWav(x/d,110) endphoneme phoneme h // more quiet version of standard h @@ -194,49 +197,33 @@ phoneme h // more quiet version of standard h WAV(h/ho, 20) ELIF nextPh(#u) THEN WAV(h/hu, 20) + ELIF nextPh(isPause) THEN + WAV(h/h_, 40) // louder for foreign words ENDIF WAV(h/h_, 20) // no vowel following endphoneme -phoneme R // Latvian hard r - liquid trl - lengthmod 6 - Vowelin f1=0 f2=1700 -300 300 f3=-300 80 - Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk -FMT(r3/r_trill) addWav(r3/r_trill.wav, 60) -endphoneme +phoneme j // **y**es + liquid pal starttype #i -phoneme r // Latvian soft r - liquid trl - lengthmod 6 - Vowelin f1=0 f2=1700 -300 300 f3=-300 80 - Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk - FMT(j/j_) addWav(r3/r_trill.wav, 25) -endphoneme + IF nextPhW(isVowel) THEN + NextVowelStarts + VowelStart(j/j@) + VowelStart(j/ja) + VowelStart(j/je) + VowelStart(j/ji) + VowelStart(j/jo) + VowelStart(j/ju) + EndSwitch + VowelEnding(j/xj, 70) // In difference with English, vowel is lengthened, not shortened + ELSE + Vowelout len=127 // no vowel follows + FMT(j/xj) + ENDIF -phoneme t - vls alv stp //lengthenstop - lengthmod 1 - voicingswitch d - IF nextPh(isPause2) THEN - WAV(ustop/t_dnt, 40) + IF prevPh(isPause) THEN + FMT(j/_j) ENDIF - WAV(ustop/t_dnt, 50) -endphoneme - -phoneme p - vls blb stp - lengthmod 2 - voicingswitch b - Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 - Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 - IF nextPh(isPause2) THEN - WAV(ustop/p_unasp_, 80) - ENDIF - IF nextPh(l) THEN - WAV(ustop/pl) - ENDIF - WAV(ustop/p_unasp, 120) endphoneme phoneme k @@ -263,25 +250,169 @@ phoneme c WAV(ustop/c, 80) endphoneme -phoneme D // louder and shorter version of d - vcd alv stp - voicingswitch t - length 10 - lengthmod 5 - Vowelin f1=1 f2=1700 -300 300 f3=-100 80 - Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk +phoneme l + liquid - IF PreVoicing THEN - FMT(d/xd, 110) + IF nextPh(isNotVowel) THEN + ChangePhoneme(l/) ENDIF - IF nextPh(isPause2) THEN - FMT(d/d_, 120) addWav(x/d_,110) + IF nextPh(isNotVowel) THEN + PrevVowelEndings + VowelEnding(l/L1_@L) + VowelEnding(l/L1_aL) + VowelEnding(l/L1_eL) + VowelEnding(l/L1_iL) + VowelEnding(l/L1_oL) + VowelEnding(l/L1_uL) + EndSwitch + + FMT(l/l_) + RETURN ENDIF - FMT(d/d, 110) addWav(x/d,110) + CALL vowelstart_l + + IF prevPh(a) OR prevPh(a:) THEN + VowelEnding(l/xl, 30) // FIXME + ELSEIF prevPh(isVowel) THEN + VowelEnding(l/xl, 10) + ENDIF + + IF prevPh(isPause) THEN + FMT(l/_l) + ENDIF + + IF prevPh(t) THEN + FMT(l/tl) + ENDIF + + IF prevPh(l/) THEN + FMT(l/l_long) // double l, make it longer + ENDIF + + FMT(l/l) endphoneme +phoneme l^ // Latvian ļ, customized from standard l^ + liquid + ipa ʎ + lengthmod 7 + Vowelout len=60 lenadd rate + length 100 + + NextVowelStarts + VowelStart(l^/j2@) + VowelStart(l^/j2a) + VowelStart(l^/j2e) + VowelStart(l^/j2i) + VowelStart(l^/j2o) + VowelStart(l^/j2u) + EndSwitch + + IF prevPh(isPause) THEN + FMT(l^/_l^) + ELSEIF nextPh(isPause) THEN + FMT(l^/l^_) + ENDIF + + FMT(l^/l^) + +endphoneme + + + + +phoneme m // copied from standard m phoneme with rule for 'mm' + vcd blb nas + Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk + lengthmod 4 + + IF KlattSynth THEN + Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 + IF nextPh(isPause2) THEN + FMT(klatt/m_) + ENDIF + FMT(klatt/m) + ENDIF + + NextVowelStarts + VowelStart(m/m@) + VowelStart(m/ma) + VowelStart(m/me) + VowelStart(m/mi) + VowelStart(m/mo) + VowelStart(m/mu) + EndSwitch + + IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN + FMT(m/mj) + ELIF prevPh(isPause) THEN + FMT(m/_m) + ELIF nextPh(isNotVowel) THEN + FMT(m/m_) + ELIF nextPh(m) THEN // m/mj has no volume change, so doubled 'mm' merges better + FMT(m/mj) + ENDIF +endphoneme + +phoneme n- // more voiced variant of n + vwl starttype #a endtype #a + ipa nU+0329 + lengthmod 4 + length 120 + FMT(n/n-syl) +endphoneme + +phoneme p + vls blb stp + lengthmod 2 + voicingswitch b + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 + Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 + IF nextPh(isPause2) THEN + WAV(ustop/p_unasp_, 80) + ENDIF + IF nextPh(l) THEN + WAV(ustop/pl) + ENDIF + WAV(ustop/p_unasp, 120) +endphoneme + +phoneme R // Latvian hard r + liquid trl + lengthmod 6 + Vowelin f1=0 f2=1700 -300 300 f3=-300 80 + Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk +FMT(r3/r_trill) addWav(r3/r_trill.wav, 60) +endphoneme + +phoneme r // Latvian soft r + liquid trl + lengthmod 6 + Vowelin f1=0 f2=1700 -300 300 f3=-300 80 + Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk + FMT(j/j_) addWav(r3/r_trill.wav, 25) +endphoneme + +phoneme s + vls alv frc sib + voicingswitch z + lengthmod 3 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + WAV(ufric/s,60) +endphoneme + +phoneme t + vls alv stp //lengthenstop + lengthmod 1 + voicingswitch d + IF nextPh(isPause2) THEN + WAV(ustop/t_dnt, 40) + ENDIF + WAV(ustop/t_dnt, 50) +endphoneme phoneme z` // Shortened version of z for diphthong dz vcd alv frc sib @@ -330,87 +461,10 @@ endphoneme phoneme } // Tiny, 5ms non-linked pause (used between phonemes in word) pause -// starttype _ endtype _ -// lengthmod 1 nolink length 5 endphoneme -phoneme s - vls alv frc sib - voicingswitch z - lengthmod 3 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 - Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 - WAV(ufric/s,60) -endphoneme - -phoneme j // **y**es - liquid pal starttype #i - - IF nextPhW(isVowel) THEN - NextVowelStarts - VowelStart(j/j@) - VowelStart(j/ja) - VowelStart(j/je) - VowelStart(j/ji) - VowelStart(j/jo) - VowelStart(j/ju) - EndSwitch - VowelEnding(j/xj, 70) // In difference with English, vowel is lengthened, not shortened - ELSE - Vowelout len=127 // no vowel follows - FMT(j/xj) - ENDIF - - IF prevPh(isPause) THEN - FMT(j/_j) - ENDIF -endphoneme - -phoneme l - liquid - - IF nextPh(isNotVowel) THEN - ChangePhoneme(l/) - ENDIF - - IF nextPh(isNotVowel) THEN - PrevVowelEndings - VowelEnding(l/L1_@L) - VowelEnding(l/L1_aL) - VowelEnding(l/L1_eL) - VowelEnding(l/L1_iL) - VowelEnding(l/L1_oL) - VowelEnding(l/L1_uL) - EndSwitch - - FMT(l/l_) - RETURN - ENDIF - - CALL vowelstart_l - - IF prevPh(a) OR prevPh(a:) THEN - VowelEnding(l/xl, 30) // FIXME - ELSEIF prevPh(isVowel) THEN - VowelEnding(l/xl, 10) - ENDIF - - IF prevPh(isPause) THEN - FMT(l/_l) - ENDIF - - IF prevPh(t) THEN - FMT(l/tl) - ENDIF - - IF prevPh(l/) THEN - FMT(l/l_long) // double l, make it longer - ENDIF - - FMT(l/l) -endphoneme