From 350f12bdc0acd288d5b1ef1c3da0062a46c6e8da Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 2 Feb 2014 11:19:16 +0000 Subject: [PATCH] Add initial files for lang-gd (Sottish Gaelic). git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@372 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/gd_list | 136 ++++++++++++++ dictsource/gd_rules | 410 +++++++++++++++++++++++++++++++++++++++++++ phsource/ph_s_gaelic | 357 +++++++++++++++++++++++++++++++++++++ 3 files changed, 903 insertions(+) create mode 100755 dictsource/gd_list create mode 100755 dictsource/gd_rules create mode 100755 phsource/ph_s_gaelic diff --git a/dictsource/gd_list b/dictsource/gd_list new file mode 100755 index 00000000..5a21992f --- /dev/null +++ b/dictsource/gd_list @@ -0,0 +1,136 @@ + +// Letter names (temporary English names) +_a eI +b bi: $atend +c si: +d di: $atend +_e i: +f Ef +g dZi: $atend +h eItS $atend +_i aI +j dZeI +k keI +l El +m Em $atend +n En $atend +_o o: +p pi: +q kju: +r aR +_s Es +t ti: $atend +_u ju: +v vi: +w d'O#b@lju: +x Eks +y waI +z zEd + +_à $accent +_á $accent +_è $accent +_é $accent +_ì $accent +_ò $accent +_ó $accent +_ù $accent + +_acu akj'u:t +_grv 'aksEnt + + + +// Numbers + +_0 n'OnI +_1 'u-:n +_2 Q'a +_3 t*;'i +_4 k;'ehI*; +_5 k'O:g; +_6 S'i@ +_7 S'Exg +_8 'Oxg +_9 n['u-I +_10 d;'eC +_11 'u-:nd;,iag +_12 Q'aQ,iag +_13 t*;'id;,iag +_14 k;'ehI*;d;,iag +_15 k'O:g;d;,iag +_16 S'i@d;,iag +_17 S'Exgd;,iag +_18 'Oxgd;,iag +_19 n['u-Id;,iag + +_20 f'iC@d +_30 t*;'iC@d +_40 k;'Eh*@d +_50 k'O:g;@d +_60 S'esg@d +_70 S'Exg@d +_80 'Oxg@d +_90 n['u-:xg@d + +_2X f'iC@ds@h# +_3X t*;'iC@ds@h# +_4X k;'Eh*@ds@h# +_5X k'O:g;@ds@h# +_6X S'esg@ds@h# +_7X S'Exg@ds@h# +_8X 'Oxg@ds@h# +_9X n['u-:xg@ds@h# + +_0C k;'iad +_0M1 m'il@ +_0M2 m'il^@n + +_dpt _st'adf'u-n^u-g; // ?? full-stop + + +// Unstressed words + + // articles +a $u+ +an $u+ +am $u+ +na $u+ +nan $u+ +nam $u+ + +gun $u+ +gu $u+ +gum $u+ +gur $u+ + + // personal pronouns +mi $u+ +thu $u+ +tu $u+ +e E: $u+ +i i: $u+ +sinn $u+ +sibh $u+ +iad $u+ + + // possessive adjectives + +mo m@ +do d@ +ar $u +ur $u + + // prepositions +á a2 $u+ +ag $u+ +gu $u+ +sa $u+ +san $u+ + + // verbs +bu b@ + + +// Pronunciation exceptions +// $alt1 silent ending (-bh, -gh) diff --git a/dictsource/gd_rules b/dictsource/gd_rules new file mode 100755 index 00000000..2069cd3a --- /dev/null +++ b/dictsource/gd_rules @@ -0,0 +1,410 @@ + +// Based on: +// http://en.wikipedia.org/wiki/Scottish_Gaelic_orthography + +// front vowels +.L01 e è é i ì + +// back vowels +.L02 a à á o ò ó u ù + +// slender consonant followed by a back vowel +.L03 eall eann earr earn eadh eahg eo eò ioll ionn iu iù + +.L04 b bh g gh m mh +.L05 ll m nn + +.L06 l n r // cause epenthetic vowel +.L07 l r s ch // epenthetic after 'm' + + +// NOTES: +// Use phoneme [#] for possible preaspiration +// Use phoneme [&] for epenthetic vowel + +.group a + a a + a (dh_ o- + a (dhA o- + a (gh_ o- + a (ghA o- + a (L05K aU + a (rrK a: + a (rd a: + a (rn a: + + a (g_ a2 // don't reduce to [@] + ai (l_ a2 + @) ai I + + ai a + ai (L05K aI + ai (mL07 E // ? aimsir + ai (bhC aI + ai (mhC aI + ai (rrK a: + ai (rd a: + ai (rn a: + + ao u-: + aoi u-I + + abh (C a_|u + amh (C a_|u + adh (C o-: + agh (C o-: + aidh (C a_|i + aigh (C o-_|i + +.group à + à a: + ài a: // or E: ?? + +.group á + á a: + ái a: + + +.group e + e e + + @) ea (g_ a2 // unstressed + @) ea @ + + ea E + ea (dh_ o- + ea (gh_ o- + ea (d e + ea (g e + ea (s e + ea (llK aU + ea (nnK aU + ea (rrK a: + ea (rn a: + _) ea (llA ja + _) ea (nnA ja + _) ea (rrA ja + ea (llA a + ea (nnA a + ea (rrA a + + eagh (C o-: // ?? or O: + eamh (C E_|u + + ei e + @) ei I // unstressed + ei (L05K eI + + eo O + _) eò jO: + _) eòi jO: + eò O: + eòi O: + + eu ia + eu (m e: + +.group è + è E: // or e: + èi E: // or e: + èa ia + +.group é + é e: + éi e: + +.group i + i i + i (L05K i: + i (mL07 i + i (mh i + + ia i@ // or ia + io i + _) io (llK ju + _) io (nnK ju + io (llK u: + io (nnK u: + + iodh (C i_|@ + iogh (C i_|@ + + _) iu ju + iu u + iu (rr u: + iu (rs u: + iù u: + iùi u: + +.group ì + ì i: + ìo i@ + +.group o + o O + o (L04 o + o (L05K OU + o (mh o + o (rrK O: + o (rd O: + o (rn O: + + ogh (C o: + oibh (C o-_i + oigh (C o-_i + oimh (C O_i + + oi o- // or O + oi (L04 o + oi (mh o + oi (L05K @I + +.group ò + ò O: // or o: + òi O: // or o: + +.group ó + ó o: + ói o: + +.group u + u u + u (L05K u: + u (rn u: + u (rr u: + u (_ u: + + ua u@ // [ua] if followed by m or n ? + uai u@ + + ui u + ui (m u- + ui (n u- + ui (s u- + ui (dh u-I + ui (L05K u-I + ui (L05 u- + + uimh (C u_|i + +.group ù + ù u: + ùi u: + + +.group b + b b + b (L03 bj // try b; + + L06) b &b // insert epenthetic vowel + L06) b (L03 &bj + +.group bh + bh v + bh (_ v + bh (_+$w_alt1 // null + bh (L03 vj + // bh sometimes null between vowels or word-final + + L06) bh &v + L06) bh (_ &v + L06) bh (L03 &vj + +.group c + c k + A) c (L02 #k + A) c (_ #g + C) c (_ g + + c (L01 k; + A) c (L01 #k; + L01) c (_ #g; + L01C) c (_ g; + + + ch x + L01) ch C + ch (L01 C + chd #g + + L06) ch &x +L01L06) ch &C + L06) ch (L01 &C + + cn kR + + +.group d + d d + L01) d d; + d (L01 d; + + dh Q + A) dh (L02 Q // or null + dh (L01 J^ + L01) dh J^ + A) dh (L01 + ai) dh (_ + éi) dh (_ + + +.group f + f f + f (L03 fj + fh + + +.group g + g g + L01) g g; + g (L01 g; + + L06) g &g +L01L06) g &g; + L06) g (L01 &g; + + gh Q + gh (_+$w_alt1 // null + A) gh (L02 Q // or null + L01) gh J^ + gh (L01 J^ + A) gh (L01 + + L06) gh &Q +L01L06) gh &J^ + L06) gh (L01 &J^ + + gn gR + + +.group h + h h + + +.group j + j dZ + + +.group k + k k + + +.group l + l L + L01) l l + l (L01 l + _) l (L01 l^ + + ll L + L01) ll l^ + ll (L01 l^ + + +.group m + m m + m (L03 mj + + L06) m &m // epenthetic + L06) m (L03 &mj + m (L07 m& + + mh v + mh (L03 vj + // mh between vowels sometimes null + + L06) mh &v + L06) mh (L03 &vj + + +.group n + n n + _) n (L02 n[ + + L02L01) n n^ // slender after a back vowel +L02L01C) n n^ +L02L01CC) n n^ + + ng Ng + L01) ng ng; + ng (L01 ng; + n (gh n + + nn n[ + L01) nn (+ n^ + nn (L01 n^ + + +.group p + p p + A) p (A #p + A) p (_ #b + C) p (_ b + p (L03 bj + A) p (L03 #bj + + ph f + ph (L03 fj + + +.group q + q kw + + +.group r + r * + L01) r *; + r (L01 *; + _) r R + rr R + rt (_ *Sd + rd (_ *Sd + + +.group s + s s + L01) s S + s (L01 S + + sh h + sh (L03 hj + + +.group t + t t + A) t (L02 #t + A) t (_ #d + C) t (_ d + + t (L01 t; + A) t (L01 #t; + L01) t (_ #d; + L01C) t (_ d; + L01CC) t (_ d; + + th h + th (L03 hj + th (_ // ? + // th between vowels may be null + + +.group v + v v + + +.group w + w w + + +.group x + x ks + _) x z + + +.group y + y i + y (A j + A) y j + +.group z + z z + diff --git a/phsource/ph_s_gaelic b/phsource/ph_s_gaelic new file mode 100755 index 00000000..773f85ba --- /dev/null +++ b/phsource/ph_s_gaelic @@ -0,0 +1,357 @@ +// Phoneme table for Scottish Gaelic (lang=gd) + + + +// Vowels + +phoneme I + vowel starttype #i endtype #i + unstressed + length 130 + FMT(vowel/ii) +endphoneme + +phoneme @ + vowel starttype #@ endtype #@ + unstressed + length 130 + FMT(vowel/@_6) +endphoneme + + +phoneme i: + vowel starttype #i endtype #i long + length 240 + ChangeIfUnstressed(i) + FMT(vowel/i) +endphoneme + +phoneme i + vowel starttype #i endtype #i + length 130 + ChangeIfUnstressed(I) + FMT(vowel/i_6) +endphoneme + +phoneme e: + vowel starttype #e endtype #e long + length 240 + ChangeIfUnstressed(@) + FMT(vowel/e) +endphoneme + +phoneme e + vowel starttype #e endtype #e + length 130 + ChangeIfUnstressed(@) + FMT(vowel/e) +endphoneme + + +phoneme E: + vowel starttype #e endtype #e long + length 240 + FMT(vowel/ee) +endphoneme + +phoneme E + vowel starttype #e endtype #e + length 130 + FMT(vowel/ee) +endphoneme + + +phoneme a: + vowel starttype #a endtype #a long + length 240 + ChangeIfUnstressed(a) + FMT(vowel/aa_8) +endphoneme + +phoneme a + vowel starttype #a endtype #a + length 130 + ChangeIfUnstressed(@) + FMT(vowel/a) +endphoneme + +phoneme a2 // doesn't reduce to [@] + vowel starttype #a endtype #a + length 130 + FMT(vowel/a) +endphoneme + + +phoneme O: + vowel starttype #o endtype #o long + length 240 + FMT(vowel/oo_2) +endphoneme + +phoneme O + vowel starttype #o endtype #o + length 130 + FMT(vowel/oo_2) +endphoneme + + +phoneme o: + vowel starttype #o endtype #o long + length 240 + FMT(vowel/o) +endphoneme + +phoneme o + vowel starttype #o endtype #o + length 130 + FMT(vowel/o_2) +endphoneme + + +phoneme u: + vowel starttype #u endtype #u long + length 240 + ChangeIfUnstressed(u) + FMT(vowel/u_bck2) +endphoneme + +phoneme u + vowel starttype #u endtype #u + length 130 + FMT(vowel/u_bck2) +endphoneme + + +phoneme u- + vowel starttype #@ endtype #@ + ipa ɯ + length 240 + FMT(vowel/u_bck2) +endphoneme + +phoneme u- + vowel starttype #@ endtype #@ long + ipa ɯ + length 130 + FMT(vowel/u_bck2) +endphoneme + + +phoneme o- + vowel starttype #@ endtype #@ long + ipa ɤ + length 240 + ChangeIfUnstressed(@) + FMT(vowel/8_7) +endphoneme + +phoneme o- + vowel starttype #@ endtype #@ + ipa ɤ + length 130 + ChangeIfUnstressed(@) + FMT(vowel/8_7) +endphoneme + +// Diphthongs + + +phoneme i@ + vowel starttype #i endtype #@ long + length 240 + ChangeIfNotStressed(@) + FMT(vdiph2/i@) +endphoneme + + +phoneme ia + vowel starttype #i endtype #@ long + length 240 + ChangeIfNotStressed(@) + FMT(vdiph2/i@_3) +endphoneme + + +phoneme u@ + vowel starttype #u endtype #@ long + length 240 + FMT(vdiph2/u@) +endphoneme + + +phoneme aI + vowel starttype #a endtype #i long + length 240 + ChangeIfUnstressed(@) + FMT(vdiph/ai) +endphoneme + +phoneme eI + vowel starttype #e endtype #i long + length 240 + FMT(vdiph/ei) +endphoneme + +phoneme @I + vowel starttype #@ endtype #i long + length 240 + FMT(vdiph/@i) +endphoneme + +phoneme u-I + vowel starttype #@ endtype #i long + ipa ɯɪ + length 240 + FMT(vdiph/u-i) +endphoneme + +phoneme aU + vowel starttype #a endtype #u long + length 240 + ChangeIfUnstressed(@) + FMT(vdiph/aau_4) +endphoneme + +phoneme OU + vowel starttype #@ endtype #u long + length 240 + FMT(vdiph/Vu) +endphoneme + + +// Consonants + +phoneme b + import_phoneme is/b +endphoneme + +phoneme d + import_phoneme is/d +endphoneme + +phoneme d; + import_phoneme hi/c +endphoneme + +phoneme g + import_phoneme is/g +endphoneme + +phoneme g; + vls vel stop + Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 + Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 + WAV(ustop/ki_ejc, 130) +endphoneme + +phoneme k; + vls vel stop + Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 + Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 + WAV(ustop/ki) +endphoneme + + +phoneme t + import_phoneme hi/t# +endphoneme + +phoneme t; + import_phoneme hi/c# +endphoneme + +phoneme S + vls pal frc sibilant palatal + CALL base/S; + ipa ʃ +endphoneme + + +phoneme n[ // temporary + import_phoneme n +endphoneme + +phoneme * // reduced [t] as in "city" + vcd alv stop + ipa ɾ + lengthmod 5 + Vowelin f1=1 f2=1700 -300 300 f3=-100 80 + Vowelout f1=2 f2=1700 -300 300 f3=-100 80 + + IF KlattSynth THEN + IF PreVoicing THEN + FMT(klatt/x_tap) + ENDIF + FMT(klatt/tap2) addWav(x/d, 70) + ENDIF + + IF PreVoicing THEN + FMT(d/x_tap) + ENDIF + FMT(d/tap2) addWav(x/d, 25) +endphoneme + + +phoneme *; + import_phoneme D +endphoneme + +phoneme R + import_phoneme R2 +endphoneme + + +phoneme & // the epenthetic vowel + vowel starttype #@ endtype #@ + unstressed + length 130 + IF prevVowel(a) THEN + ChangePhoneme(a) + ELSEIF prevVowel(E) THEN + IF prevPh(*) THEN + ChangePhoneme(a) + ELSE + ChangePhoneme(E) + ENDIF + ELSEIF prevVowel(O) THEN + ChangePhoneme(O) + ELSEIF prevVowel(i) THEN + ChangePhoneme(i) + ELSEIF prevVowel(e) THEN + ChangePhoneme(e) + ELSEIF prevVowel(u) THEN + ChangePhoneme(u) + ELSEIF prevVowel(u-) THEN + ChangePhoneme(u-) + ELSEIF prevVowel(o-) THEN + ChangePhoneme(o-) + ENDIF + ChangePhoneme(NULL) +endphoneme + + +phoneme # // used for pre-aspiration + vls glt apr + IF NOT prevPhW(isVowel) OR thisPh(isNotStressed) OR prevVowel(isLong) THEN + ChangePhoneme(NULL) + ELSE + IF nextPhW(g;) OR nextPhW(k;) THEN + ChangePhoneme(C) + ELSEIF nextPhW(g) OR nextPhW(k) THEN + ChangePhoneme(x) + ELSE + ChangePhoneme(h) + ENDIF + ENDIF +endphoneme + + +// [h] only if followed by a vowel +phoneme h# + vls glt apr + IF nextPh(isVowel) THEN + ChangePhoneme(h) + ELSE + ChangePhoneme(NULL) + ENDIF +endphoneme