Browse Source

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
master
jonsd 11 years ago
parent
commit
350f12bdc0
3 changed files with 903 additions and 0 deletions
  1. 136
    0
      dictsource/gd_list
  2. 410
    0
      dictsource/gd_rules
  3. 357
    0
      phsource/ph_s_gaelic

+ 136
- 0
dictsource/gd_list View File

@@ -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)

+ 410
- 0
dictsource/gd_rules View File

@@ -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


+ 357
- 0
phsource/ph_s_gaelic View File

@@ -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

Loading…
Cancel
Save