Language changes: da. Fixed crash bug (in lang=hi), affects prevVowel(), isFirstVowel, etc in phoneme definitions. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@317 d46cf337-b52f-0410-862d-fd96e6ae7743master
¢ s'ent | ¢ s'ent | ||||
¥ j'en: | ¥ j'en: | ||||
µ my | µ my | ||||
' apostr'Vf // PB o changed to V | |||||
' apostr'Vf | |||||
½ en'hal | ½ en'hal | ||||
+ plus | + plus | ||||
_10 t'i | _10 t'i | ||||
_11 'Elv@ | _11 'Elv@ | ||||
_12 t'Vl | _12 t'Vl | ||||
_13 tR'?&#d@-n // PB & changed to &# | |||||
_13 tR'?&#d@-n | |||||
_14 fj'ord@-n | _14 fj'ord@-n | ||||
_15 f'Emd@-n | _15 f'Emd@-n | ||||
_16 s'ajsd@-n | _16 s'ajsd@-n | ||||
_17 s'Wd@-n // PP Y changed to W | |||||
_18 '?&d@-n // PB a changed to & | |||||
_17 s'Wd@-n | |||||
_18 '?&d@-n | |||||
_19 n'ed@-n | _19 n'ed@-n | ||||
_2X t'y:?u | _2X t'y:?u | ||||
_3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] | |||||
_4X f'?W:_|V //PB [f'W:*3] changed to [ f'?W:V] | |||||
_5X h&l't*Es // PB [a] changed to [&], e changed to E | |||||
_6X t*'Es // PB changed from e to E | |||||
_7X h&lfj'&rs // PV a changed to & | |||||
_3X tR'&#Dv@ | |||||
_4X f'?W:_|V | |||||
_5X h&l't*Es | |||||
_6X t*'Es | |||||
_7X h&lfj'&rs | |||||
_8X f'irs | _8X f'irs | ||||
_9X h&lf'Ems // PB a changed to & | _9X h&lf'Ems // PB a changed to & | ||||
_0C h'un*VD | |||||
_1C ed||h'unRV:D // PB added 'et hundrede' | |||||
_0M1 t'u:s@-n | |||||
_1M1 ed||t'u:s@-n // PB added 'et' to tusind | |||||
_0C h'unRVD | |||||
_1C ed||h'unRV:D | |||||
_0M1 t'?us@-n | |||||
_1M1 ed||t'?us@-n | |||||
_1M2 'e:n||milij'o:n | _1M2 'e:n||milij'o:n | ||||
_0M2 milij'o:nV // PB [3] changed to [V] | |||||
_0M2 milij'o:nV | |||||
_1M3 'e:n||milij'A:d | _1M3 'e:n||milij'A:d | ||||
_0M3 milij'A:d3 | _0M3 milij'A:d3 | ||||
_1M4 'e:n||bilij'o:n | _1M4 'e:n||bilij'o:n | ||||
eller // or | eller // or | ||||
mens $pause // while | mens $pause // while | ||||
for | for | ||||
fordi fVd'i $pause // because - PB: changed stress | |||||
fordi fVd'i $pause // because | |||||
når nVr $pause // while | når nVr $pause // while | ||||
der dEr $u+ $u // PB changed from [dA] | der dEr $u+ $u // PB changed from [dA] | ||||
hvor v'O // where | hvor v'O // where | ||||
ved $u+ // at | ved $u+ // at | ||||
om $u+ $brk // about, within | om $u+ $brk // about, within | ||||
med $u+ // with | med $u+ // with | ||||
af & // PB changed from [a?] to [&] - sound too short in a sentence | |||||
// Also removed $u from 'af' and other words. They disappeared. | |||||
ad & // PB added 'ad' | |||||
ad &D $atend $sentence // PB "Det må ikke skille os ad." | |||||
at & $u // PB changed from [at] to [&:] | |||||
hos // at - PB: removed [$u+] | |||||
som sVm $u // which / that - PB: removed [$u+] | |||||
af & | |||||
ad & | |||||
ad &D $atend $sentence // "Det må ikke skille os ad." | |||||
at & $u | |||||
hos | |||||
som sVm $u // which / that | |||||
// pronouns | // pronouns | ||||
jeg jaj $u+ // I | |||||
jeg jAj $u+ // I | |||||
du du $u | du du $u | ||||
de $u | de $u | ||||
han $u | han $u | ||||
dét de | dét de | ||||
vi vi $u | vi vi $u | ||||
i _i $u+ | i _i $u+ | ||||
mig maj $u // me | |||||
dig daj $u+ | |||||
mig mAj $u // me | |||||
dig dAj $u+ | |||||
dem $u | dem $u | ||||
ham $u | ham $u | ||||
hende $u | hende $u | ||||
er Er $u // is/are | er Er $u // is/are | ||||
var vAr $u+ // was/were | var vAr $u+ // was/were | ||||
har hAr $u+ // has/have | har hAr $u+ // has/have | ||||
havde h&:D@ $u+ // had | |||||
havde h&D@ $u+ // had | |||||
vil $u+ // will | vil $u+ // will | ||||
skal $u+ // shall | skal $u+ // shall | ||||
kan $u+ // can | kan $u+ // can | ||||
word _^_EN | word _^_EN | ||||
warrior _^_EN | warrior _^_EN | ||||
// PB names | |||||
// Names | |||||
august OgOsd $capital | august OgOsd $capital | ||||
austin _^_EN | austin _^_EN | ||||
bailey _^_EN | bailey _^_EN | ||||
reynolds _^_EN | reynolds _^_EN | ||||
white _^_EN | white _^_EN | ||||
// PB French words | |||||
// French words | |||||
croquis _^_FR | croquis _^_FR | ||||
crouton _^_FR | crouton _^_FR | ||||
jugement _^_FR | jugement _^_FR | ||||
madame _^_FR | madame _^_FR | ||||
mademoiselle _^_FR | mademoiselle _^_FR | ||||
// PB (French) nouns with final -age - stressed a, "age" pronounced ['&S@] | |||||
// French) nouns with final -age - stressed a, "age" pronounced ['&S@] | |||||
affutage $alt | affutage $alt | ||||
apanage $alt | apanage $alt | ||||
arbitrage $alt | arbitrage $alt | ||||
tonnage $alt | tonnage $alt | ||||
trikotage $alt | trikotage $alt | ||||
// PB final -abel - stressed a | |||||
// Final -abel - stressed a | |||||
// "el" has been removed in order to make rules for | // "el" has been removed in order to make rules for | ||||
// "konstabel" and the plural "konstabler" without "e" | // "konstabel" and the plural "konstabler" without "e" | ||||
acceptab $alt | acceptab $alt | ||||
tolerans $alt | tolerans $alt | ||||
varians $alt | varians $alt | ||||
// PB nouns with final -ade - stressed a | |||||
// Nouns with final -ade - stressed a | |||||
ambassade $alt | ambassade $alt | ||||
arkade $alt | arkade $alt | ||||
ballade $alt | ballade $alt | ||||
tirade $alt | tirade $alt | ||||
triade $alt | triade $alt | ||||
// PB nouns and adjectives with final -al - stressed a | |||||
// Nouns and adjectives with final -al - stressed a | |||||
admiral $alt | admiral $alt | ||||
adverbial $alt | adverbial $alt | ||||
aksial $alt | aksial $alt | ||||
ækvatorial $alt | ækvatorial $alt | ||||
ødipal $alt | ødipal $alt | ||||
// PB words with final -ar - stressed a | |||||
// Words with final -ar - stressed a | |||||
dokumentar $alt | dokumentar $alt | ||||
aktuar $alt | aktuar $alt | ||||
proletar $alt | proletar $alt | ||||
velar $alt | velar $alt | ||||
vokabular $alt | vokabular $alt | ||||
// PB final -agtig - stressed a | |||||
// Final -agtig - stressed a | |||||
barnagtig $alt | barnagtig $alt | ||||
blødagtig $alt | blødagtig $alt | ||||
delagtig $alt | delagtig $alt | ||||
tvivlagtig $alt | tvivlagtig $alt | ||||
tyvagtig $alt | tyvagtig $alt | ||||
// PB words with final -an - stressed a | |||||
// Words with final -an - stressed a | |||||
aeroplan $alt2 | aeroplan $alt2 | ||||
agraman $alt2 | agraman $alt2 | ||||
altan $alt2 | altan $alt2 | ||||
galan $alt2 | galan $alt2 | ||||
hortulan $alt2 | hortulan $alt2 | ||||
human $alt2 | human $alt2 | ||||
hvordan vVd'&n $alt | |||||
inhuman $alt2 | inhuman $alt2 | ||||
kapellan $alt2 | kapellan $alt2 | ||||
karljohan $alt2 | karljohan $alt2 | ||||
adviser $alt | adviser $alt | ||||
advoker $alt | advoker $alt | ||||
afficer $alt | afficer $alt | ||||
'aflever $alt | |||||
'afmarcher $alt | 'afmarcher $alt | ||||
afrikaniser $alt | afrikaniser $alt | ||||
agere $alt | agere $alt | ||||
(secret service) sigred||s'Wvis | (secret service) sigred||s'Wvis | ||||
(happy hour) h&pi||'AuV | (happy hour) h&pi||'AuV | ||||
chevrolet sjEvrol'e | chevrolet sjEvrol'e | ||||
saigon sajg3-n // PB Saigon | |||||
saigon sAjgVn // PB Saigon | |||||
managua m&n'&:gw& | managua m&n'&:gw& | ||||
(deja-vu) deSja||'vy | (deja-vu) deSja||'vy | ||||
(il duce) il||d'u:tSj@ // PB Italian Fascist | (il duce) il||d'u:tSj@ // PB Italian Fascist |
x z | x z | ||||
Dictionary da_dict 2013-03-13 | |||||
Dictionary da_dict 2013-03-15 | |||||
& &# 0 3 ?& ?&# ?0 ?A | & &# 0 3 ?& ?&# ?0 ?A | ||||
?e ?E ?i ?o ?O ?u ?V ?W | ?e ?E ?i ?o ?O ?u ?V ?W | ||||
S s2 t v w Z | S s2 t v w Z | ||||
Dictionary fr_dict 2013-03-14 | |||||
Dictionary fr_dict 2013-03-15 | |||||
@ @- a a- A~ e E e- | @ @- a a- A~ e E e- | ||||
E: E~ i I o O O~ u | E: E~ i I o O O~ u | ||||
t# t. t.# v w x z | t# t. t.# v w x z | ||||
Dictionary ta_dict 2013-03-14 | |||||
Dictionary ta_dict 2013-03-15 | |||||
a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
I i: o o: u U u2 u: | I i: o o: u U u2 u: |
Andre 0ndreI | Andre 0ndreI | ||||
Andrea andri@ | Andrea andri@ | ||||
Andreas A:ndr'eI@s | Andreas A:ndr'eI@s | ||||
Angela $1 | |||||
Anita $alt3 | Anita $alt3 | ||||
Anthony ant@ni | Anthony ant@ni | ||||
Anton ant0n | Anton ant0n |
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
[l/3] da | [l/3] da | ||||
l/l@ [¨2] base | |||||
l/l@ [¨|5] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [¨2] base | |||||
l/la [¨|5] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
[l/3] da | [l/3] da | ||||
l/le [¨2] base | |||||
l/le [¨|5] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [¨2] base | |||||
l/li [¨|5] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
ll/_ll [L] base | ll/_ll [L] base | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [¨2] base | |||||
l/lo [¨|5] base | |||||
[l#] base | [l#] base | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[l;] lt | [l;] lt | ||||
[l] ru | [l] ru | ||||
[l^] ru | [l^] ru | ||||
l/lu [¨2] base | |||||
l/lu [¨|5] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr |
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 90 //150 | |||||
length 95 //150 | |||||
// PB long vowel followed by consonant and certain vowels "gide" | // PB long vowel followed by consonant and certain vowels "gide" | ||||
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN | |||||
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN | |||||
length 150 | length 150 | ||||
ENDIF | ENDIF | ||||
// "gider" TEST | |||||
// "gider", vrider" | |||||
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | ||||
length 90 | |||||
length 95 | |||||
ENDIF | ENDIF | ||||
// PB long vowel followed by certain vowels - "pigen" [p'i@-n] | // PB long vowel followed by certain vowels - "pigen" [p'i@-n] | ||||
IF nextPhW(#@) OR nextPhW(#e) THEN | IF nextPhW(#@) OR nextPhW(#e) THEN | ||||
ENDIF | ENDIF | ||||
// "vilje" - short followed by 2 consonants | // "vilje" - short followed by 2 consonants | ||||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | ||||
length 90 | |||||
length 95 | |||||
ENDIF | ENDIF | ||||
// PB "tie", "stige", "krige" vowel + vowel: extra length | // PB "tie", "stige", "krige" vowel + vowel: extra length | ||||
// What is causing this very short [i] in words with final [@-]? | // What is causing this very short [i] in words with final [@-]? | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 90 //150 | |||||
length 95 //150 | |||||
// "delte", "mente" | // "delte", "mente" | ||||
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@) THEN | |||||
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN | |||||
length 150 | length 150 | ||||
ENDIF | ENDIF | ||||
// PB "ring", "ringe" | // PB "ring", "ringe" | ||||
IF nextPhW(N) THEN | IF nextPhW(N) THEN | ||||
length 90 | |||||
length 95 | |||||
ENDIF | ENDIF | ||||
// PB "enig", "enige", "evig" | // PB "enig", "enige", "evig" | ||||
IF nextPhW(isNotVowel) AND next2PhW(i) THEN | IF nextPhW(isNotVowel) AND next2PhW(i) THEN | ||||
ENDIF | ENDIF | ||||
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short | // "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short | ||||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | ||||
length 90 | |||||
length 95 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/e) | FMT(vowel/e) | ||||
endphoneme | endphoneme | ||||
phoneme E | phoneme E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 90 //150 | |||||
length 100 //150 | |||||
// "værelse", "breve" | // "værelse", "breve" | ||||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN | IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN | ||||
// length 150 | // length 150 | ||||
ENDIF | ENDIF | ||||
// "ræve" | // "ræve" | ||||
IF nextVowel(#@) OR nextVowel(#e) THEN | IF nextVowel(#@) OR nextVowel(#e) THEN | ||||
length 150 | |||||
length 160 | |||||
ENDIF | ENDIF | ||||
// "ære", "kærester", "ærefrygt" - longer E | // "ære", "kærester", "ærefrygt" - longer E | ||||
IF nextPhW(V) THEN | IF nextPhW(V) THEN | ||||
ENDIF | ENDIF | ||||
// Only the letter "æ" - long | // Only the letter "æ" - long | ||||
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | ||||
length 150 | |||||
length 160 | |||||
ENDIF | ENDIF | ||||
// "stædig" [st'EDi] long | // "stædig" [st'EDi] long | ||||
IF nextPhW(isNotVowel) AND next2PhW(i) THEN | IF nextPhW(isNotVowel) AND next2PhW(i) THEN | ||||
length 150 | |||||
length 160 | |||||
ENDIF | ENDIF | ||||
// "længe" - short - 2 consonants => 1 consonant | // "længe" - short - 2 consonants => 1 consonant | ||||
IF nextPhW(N) THEN | IF nextPhW(N) THEN | ||||
length 90 | |||||
length 120 | |||||
ENDIF | ENDIF | ||||
// "værelse" [v'E3-Vls@_!] | // "værelse" [v'E3-Vls@_!] | ||||
IF nextPhW(3-) AND next2PhW(V) THEN | IF nextPhW(3-) AND next2PhW(V) THEN | ||||
length 90 | |||||
length 120 | |||||
ENDIF | ENDIF | ||||
// "mælkebøtte" - short followed by 2 consonants | // "mælkebøtte" - short followed by 2 consonants | ||||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | ||||
length 90 | |||||
length 120 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
endphoneme | endphoneme | ||||
// "læsse" vs. "læse" | // "læsse" vs. "læse" | ||||
phoneme ?E | phoneme ?E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 90 | |||||
// PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ] | |||||
// Changed now [f'?E3-V] but it won't do any harm | |||||
IF nextPhW(V) THEN | |||||
length 120 | |||||
ENDIF | |||||
ipa ε | |||||
length 100 | |||||
FMT(vowel/e_mid2) | FMT(vowel/e_mid2) | ||||
endphoneme | endphoneme | ||||
// ThisPh + gooup #e or group #@ | // ThisPh + gooup #e or group #@ | ||||
// "ae", "aer" vowel + vowel: extra length | // "ae", "aer" vowel + vowel: extra length | ||||
IF nextPhW(#@) OR nextPhW(#e) THEN | IF nextPhW(#@) OR nextPhW(#e) THEN | ||||
length 240 | |||||
length 220 | |||||
ENDIF | ENDIF | ||||
// This vowel is word end - longer because it sounds too short | // This vowel is word end - longer because it sounds too short | ||||
// "ja", "Omaha" | // "ja", "Omaha" | ||||
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short | // "bange" [bAN@-] - [N] = 2 consonants (ng) => short | ||||
IF nextPhW(N) THEN | IF nextPhW(N) THEN | ||||
length 90 | length 90 | ||||
ENDIF | |||||
// "fare" [f'A:A] | |||||
IF nextPhW(A) THEN | |||||
length 150 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/a_8) | FMT(vowel/a_8) | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 90 //150 | length 90 //150 | ||||
// Short vowel followed by consonant and NOT consonant + 3 or V or @ | |||||
// "blus" vs. "bluse" and "bluser" | |||||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||||
// glstop | |||||
// length 90 | |||||
ENDIF | |||||
// "suge", "uge", bluse | |||||
// "suge", "uge", "bluse", "julegave" | |||||
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN | IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN | ||||
length 150 | length 150 | ||||
ENDIF | ENDIF | ||||
// extra length followed by 3 or V or @ | |||||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||||
// length 240 | |||||
ENDIF | |||||
// "umulig" | |||||
// "umulig" [u:m'uli] | |||||
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | ||||
length 180 | length 180 | ||||
ENDIF | ENDIF | ||||
// Only "u" | // Only "u" | ||||
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | ||||
length 150 | length 150 | ||||
ENDIF | |||||
// "fugl" [ful] - a bit longer | |||||
IF nextPhW(isWordEnd) THEN | |||||
length 120 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/u_bck) | FMT(vowel/u_bck) | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 150 | |||||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||||
glstop | |||||
length 90 | |||||
ENDIF | |||||
// "tro" | |||||
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||||
length 90 | |||||
ENDIF | |||||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||||
length 90 //150 | |||||
// "bore", "borer" | |||||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN | |||||
length 150 | length 150 | ||||
ENDIF | ENDIF | ||||
// "modig" - long vowel after consonant + [i] | // "modig" - long vowel after consonant + [i] | ||||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN | |||||
IF nextPhW(D) AND next2PhW(i) THEN | |||||
length 150 | length 150 | ||||
ENDIF | ENDIF | ||||
FMT(vowel/o_2) | FMT(vowel/o_2) | ||||
phoneme O | phoneme O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 90 // 150 | length 90 // 150 | ||||
// PB "sove", "sover" - consonant + #e or #@: long | |||||
// "sove", "sover" - consonant + #e or #@: long | |||||
IF next2PhW(#@) OR next2PhW(#e) THEN | IF next2PhW(#@) OR next2PhW(#e) THEN | ||||
length 150 | length 150 | ||||
ENDIF | ENDIF | ||||
FMT(vowel/o_5) | FMT(vowel/o_5) | ||||
endphoneme | endphoneme | ||||
// PB Experimental glottal O | |||||
// Short O | |||||
// "toget" vs. "tåget" | // "toget" vs. "tåget" | ||||
phoneme ?O | phoneme ?O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
IF nextPhW(isNotVowel) AND next2Ph(V) THEN | IF nextPhW(isNotVowel) AND next2Ph(V) THEN | ||||
length 90 | length 90 | ||||
ENDIF | ENDIF | ||||
// PB "snorke", "snorker", årlig | |||||
// "snorke", "snorker", årlig | |||||
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN | IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN | ||||
length 180 | length 180 | ||||
ENDIF | ENDIF | ||||
// "sove" [sVw3] - longer followed by w + 3 | // "sove" [sVw3] - longer followed by w + 3 | ||||
IF nextPhW(w) AND next2PhW(3) THEN | IF nextPhW(w) AND next2PhW(3) THEN | ||||
length 220 | length 220 | ||||
ENDIF | |||||
// PB "konge" | |||||
IF nextPhW(N) THEN | |||||
length 95 | |||||
ENDIF | ENDIF | ||||
FMT(vowel/V_4) | FMT(vowel/V_4) | ||||
endphoneme | endphoneme | ||||
// "forstår" vs. "kåre" | // "forstår" vs. "kåre" | ||||
phoneme ?V | phoneme ?V | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 100 | |||||
length 90 | |||||
FMT(vowel/V_4) | FMT(vowel/V_4) | ||||
endphoneme | endphoneme | ||||
FMT(vowel/oo_2) | FMT(vowel/oo_2) | ||||
endphoneme | endphoneme | ||||
// ?B short 0 "sukker" | |||||
// Short 0 "sukker" | |||||
phoneme ?0 | phoneme ?0 | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 90 | length 90 | ||||
phoneme W | phoneme W | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 99 //160 | |||||
// "kløe" vowel + vowel: extra length | |||||
length 90 //160 | |||||
// "kløe" vowel + vowel: extra length | |||||
IF nextPhW(#@) OR nextPhW(#e) THEN | IF nextPhW(#@) OR nextPhW(#e) THEN | ||||
length 220 | length 220 | ||||
ENDIF | ENDIF | ||||
IF next2PhW(#@) OR next2PhW(#e) THEN | IF next2PhW(#@) OR next2PhW(#e) THEN | ||||
length 160 | length 160 | ||||
ENDIF | ENDIF | ||||
// "røveri" TEST | |||||
IF next2PhW(V) OR next2PhW(?V) THEN | |||||
// "røveri" but NOT "surfer" [sWf?V] TEST | |||||
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | |||||
length 90 | length 90 | ||||
ENDIF | ENDIF | ||||
// PB "nødig", "nødigt", "kølige" | // PB "nødig", "nødigt", "kølige" | ||||
FMT(vowel/oe) | FMT(vowel/oe) | ||||
endphoneme | endphoneme | ||||
// PB short W | |||||
// Short W | |||||
// "prøv" vs. "prøve" | // "prøv" vs. "prøve" | ||||
phoneme ?W | phoneme ?W | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
FMT(vowel/oe) | FMT(vowel/oe) | ||||
endphoneme | endphoneme | ||||
// PB added for the ø in "røv", "røg", "øje" instead of [V3] | |||||
// Added for the ø in "røv", "røg", "øje" instead of [V3] | |||||
phoneme W# | phoneme W# | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 90 //150 | length 90 //150 | ||||
FMT(vowel/V) | FMT(vowel/V) | ||||
endphoneme | endphoneme | ||||
// PB short W# | |||||
// Short W# | |||||
// "rømme" | // "rømme" | ||||
phoneme ?W# | phoneme ?W# | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 90 | length 90 | ||||
FMT(vowel/V) | |||||
FMT(vowel/V) | |||||
endphoneme | endphoneme | ||||
phoneme aI | phoneme aI | ||||
PrevVowelEndings | PrevVowelEndings | ||||
VowelEnding(l/l_@) | VowelEnding(l/l_@) | ||||
VowelEnding(l/l_a) | |||||
VowelEnding(l/l_a,-70) // kvalt, kapital | |||||
VowelEnding(l/l_e, -40) | VowelEnding(l/l_e, -40) | ||||
VowelEnding(l/l_i, -70) | VowelEnding(l/l_i, -70) | ||||
VowelEnding(l/l_o) | |||||
VowelEnding(l/l_o,-70) // stole, skole, pistol | |||||
VowelEnding(l/l_u, -70) | VowelEnding(l/l_u, -70) | ||||
EndSwitch | EndSwitch | ||||
VowelStart(j/ja) | VowelStart(j/ja) | ||||
VowelStart(j/je,-35) | VowelStart(j/je,-35) | ||||
VowelStart(j/ji) | VowelStart(j/ji) | ||||
VowelStart(j/jo) | |||||
VowelStart(j/jo,-65) // "kjole" | |||||
VowelStart(j/ju) | VowelStart(j/ju) | ||||
EndSwitch | EndSwitch | ||||
Vowelout len=70 | Vowelout len=70 |
int end_sourceix; | int end_sourceix; | ||||
int alternative; | int alternative; | ||||
int delete_count; | int delete_count; | ||||
int word_start; | |||||
PHONEME_DATA phdata; | PHONEME_DATA phdata; | ||||
int n_ph_list3; | int n_ph_list3; | ||||
// transfer all the phonemes of the clause into phoneme_list | // transfer all the phonemes of the clause into phoneme_list | ||||
ph = phoneme_tab[phonPAUSE]; | ph = phoneme_tab[phonPAUSE]; | ||||
ph_list3[0].ph = ph; | ph_list3[0].ph = ph; | ||||
word_start = 1; | |||||
for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++) | for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++) | ||||
{ | { | ||||
plist3 = &ph_list3[j]; | plist3 = &ph_list3[j]; | ||||
if(plist3->sourceix != 0) | |||||
word_start = j; | |||||
if(insert_ph != 0) | if(insert_ph != 0) | ||||
{ | { | ||||
// we have a (linking) phoneme which we need to insert here | // we have a (linking) phoneme which we need to insert here | ||||
next = phoneme_tab[plist3->phcode]; // this phoneme, i.e. after the insert | next = phoneme_tab[plist3->phcode]; // this phoneme, i.e. after the insert | ||||
// re-use the previous entry for the inserted phoneme. | // re-use the previous entry for the inserted phoneme. | ||||
// That's OK because we don't look backwards from plist3 *** but CountVowelPosiion() and isAfterStress does !!! | |||||
// That's OK because we don't look backwards from plist3 *** but CountVowelPosition() and isAfterStress does !!! | |||||
j--; | j--; | ||||
plist3 = plist3_inserted = &ph_list3[j]; | plist3 = plist3_inserted = &ph_list3[j]; | ||||
if(j > 0) | if(j > 0) | ||||
{ | { | ||||
memcpy(&plist3[-1], &plist3[0], sizeof(*plist3)); | |||||
// move all previous phonemes in the word back one place | |||||
int k; | |||||
if(word_start > 0) | |||||
{ | |||||
k = word_start; | |||||
word_start--; | |||||
} | |||||
else | |||||
{ | |||||
k = 2; // No more space, don't loose the start of word mark at ph_list2[word_start] | |||||
} | |||||
for(; k<=j; k++) | |||||
memcpy(&ph_list3[k-1], &ph_list3[k], sizeof(*plist3)); | |||||
} | } | ||||
memset(&plist3[0], 0, sizeof(*plist3)); | memset(&plist3[0], 0, sizeof(*plist3)); | ||||
plist3->phcode = insert_ph; | plist3->phcode = insert_ph; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.46.50 15.Mar.13"; | |||||
const char *version_string = "1.46.51 15.Mar.13"; | |||||
const int version_phdata = 0x014640; | const int version_phdata = 0x014640; | ||||
int option_device_number = -1; | int option_device_number = -1; |