mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
Latvian language improvements
This commit is contained in:
@@ -477,6 +477,7 @@ dz $abbrev
|
||||
eest $abbrev
|
||||
est $abbrev
|
||||
eur 'euR
|
||||
irir 'iR_!'iR
|
||||
lnnk $abbrev $pause
|
||||
lp $abbrev
|
||||
ls $abbrev
|
||||
|
||||
+23
-13
@@ -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
|
||||
|
||||
+193
-139
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user