Browse Source

Merge branch 'espeak-ng:master' into master

master
Filomena Rocca 11 months ago
parent
commit
c0717034f8
No account linked to committer's email address

+ 4
- 0
Makefile.am View File

@@ -493,6 +493,7 @@ dictionaries: \
espeak-ng-data/ja_dict \
espeak-ng-data/jbo_dict \
espeak-ng-data/ka_dict \
espeak-ng-data/kaa_dict \
espeak-ng-data/kk_dict \
espeak-ng-data/kl_dict \
espeak-ng-data/kn_dict \
@@ -722,6 +723,9 @@ espeak-ng-data/jbo_dict: dictsource/jbo_list dictsource/jbo_rules dictsource/jbo
ka: espeak-ng-data/ka_dict
espeak-ng-data/ka_dict: dictsource/ka_list dictsource/ka_rules dictsource/ka_extra dictsource/ka_emoji

kaa: espeak-ng-data/kaa_dict
espeak-ng-data/kaa_dict: dictsource/kaa_list dictsource/kaa_rules dictsource/kaa_extra dictsource/kaa_emoji

kk: espeak-ng-data/kk_dict
espeak-ng-data/kk_dict: dictsource/kk_list dictsource/kk_rules dictsource/kk_extra dictsource/kk_emoji


+ 0
- 0
dictsource/kaa_emoji View File


+ 34
- 0
dictsource/kaa_list View File

@@ -0,0 +1,34 @@
// This file is UTF8 encoded
// Spelling to phoneme rules for Karakalpak

// Letters


// Numbers
_0 n'Yl
_1 b'Ir
_2 j'ekI
_3 u#S
_4 t8rt
_5 b'es
_6 'Alt@
_7 Z'etI
_8 s'egIz
_9 t'oG@z
_1X 'on
_2X Z@g@rm'A
_3X 'ot@z
_4X q'@r@q
_5X 'eliw
_6X 'ALp@s
_7X Zetp'Is
_8X seks'en
_9X toqs'An
_0C Z'u#z
_0M1 m'@N
_0M2 m@jLL@j'on
_1M2 m@jLL@j'on
_0M3 m@jLL@j'Ard
_1M3 m@jLL@j'Ard

_dpt _Z&n'e_

+ 150
- 0
dictsource/kaa_rules View File

@@ -0,0 +1,150 @@
// This file is UTF8 encoded
// Spelling to phoneme rules for Karakalpak language

.replace
// Replace Cyrillic script to Latin script
а a
ә á
б b
в v
г g
ғ ǵ
д d
е e
ё yo
ж j
з z
и i
й y
к k
қ q
л l
м m
н n
ң ń
о o
ө ó
п p
р r
с s
т t
у u
ү ú
ў w
ф f
х x
ҳ h
ц c
ч ch
ш sh
щ sch
ы ı
ь ʼ
ъ ʼ
э e
ю yu
я ya

.group a
a A

.group á
á &

.group b
b b

.group v
v v

.group g
g g

.group ǵ
ǵ G

.group d
d d

.group e
e e

.group j
j Z

.group z
z z

.group i
i I

.group y
y j

.group k
k k

.group q
q q

.group l
l l

.group m
m m

.group n
n n

.group ń
ń N

.group o
o o

.group ó
ó 8

.group p
p p

.group r
r *

.group s
s s
sch SS
sh S

.group t
t t

.group u
u U

.group ú
ú u#

.group w
w w

.group f
f f

.group x
x x

.group h
h h

.group c
c ts
ch tS

.group ı
ı @

.group
ʻ ?
ş S
ç tS

+ 2
- 0
espeak-ng-data/lang/trk/kaa View File

@@ -0,0 +1,2 @@
name Karakalpak
language kaa

+ 47
- 30
phsource/mbrola/ptbr View File

@@ -1,6 +1,6 @@
volume 15

0 l/ NULL 0 w
0 l/ NULL 0 l
0 l/2 w 0 l
0 l/2 j 0 l
0 l/2 NULL 0 w
@@ -8,59 +8,76 @@ volume 15
0 r- NULL 0 r
0 w/ NULL 0 w
0 j/ NULL 0 y
0 ; NULL 0 NULL
0 g- NULL 0 NULL
0 @- NULL 0 NULL
0 * @- 0 r2
8 * j 0 r
0 @- NULL 0 NULL
0 * j 0 r
0 * VWL 0 r
0 * NULL 0 r2
0 : NULL 0 NULL
0 ; NULL 0 NULL
0 : NULL 0


0 S NULL 0 x

0 S s 60 x i
0 S NULL 0 x
0 Z NULL 0 j
0 tS NULL 0 t
0 dZ NULL 0 j
0 dZ NULL 0 d
0 l^ NULL 0 h
0 n^ NULL 0 nh
0 N NULL 0 n
0 N VWL 0 n
0 x NULL 0 rr
0 z _ 0 s2
0 s VWL 0 s
0 s w 0 s
0 s j 0 s
0 s NULL 0 s2
8 s# VWL 0 s
0 s# NULL 0 s2
8 r VWL 0 r
0 r VWL 0 r
0 r NULL 0 r2
0 R NULL 0 r
0 j NULL 0 y

// consonant combinations which are OK for br4 voice, but need epenthetic [i] for br1 br3
0 k s 90 k i
0 k t 90 k i
0 p s 90 p i
0 p t 90 p i
0 b s 90 b i
0 f s 90 f i
0 k b 90 k i
0 k d 90 k i
0 k dZ 90 k i
0 k f 90 k i
0 k k 90 k i
0 k p 90 k i
0 k s 90 k i
0 k S 90 k i
0 k t 90 k i
0 k tS 90 k i
0 t s 80 t i
1 tS i 40 t i
0 tS y 90 t y
0 tS NULL 0 t
0 z b 35 s2
0 z Z 35 s2
0 z v 35 s2
0 z dZ 35 s2
0 z l 35 s2
0 z m 35 s2
0 z n 35 s2
0 k VWL 20 k
0 k w 10 k


0 a/ NULL 0 a
0 A NULL 0 a
0 & NULL 0 a
0 &/ NULL 0 a
9 &~ N 0 am
1 &~ N 0 am
0 &~ NULL 0 am
0 E NULL 0 ee
9 eI m 0 em
9 eI N 0 em

8 eI m 10 em
1 eI N 8 em
0 & NULL 70 a
0 i/ NULL 0 i
9 i N 0 im
9 i N 20 im
9 i~ N 0 im
0 i~ NULL 0 im
9 o N 0 om
9 o~ j/ 60 om i
9 o N 40 om
8 o~ j 70 om i
9 o~ j/ 90 om i
9 o~ N 0 om
0 o~ NULL 0 om
0 O NULL 0 oo
@@ -77,12 +94,13 @@ volume 15
0 OI NULL 60 oo y
0 uI NULL 60 u y
0 aU NULL 55 a w
0 &U~ NULL 60 @ w
10 &U~ NULL 60 @ w
0 eU NULL 55 e w
0 EU NULL 55 ee w
0 iU NULL 55 i w



// English phonemes
0 @ NULL 0 @
0 T NULL 0 t
@@ -113,5 +131,4 @@ volume 15
0 aI@ NULL 60 a e
0 aU@ NULL 0 a
0 t2 NULL 0 t
0 h NULL 0 NULL

0 h NULL 0 rr

+ 137
- 0
phsource/ph_karakalpak View File

@@ -0,0 +1,137 @@

// use "flag1" for soft vowels

// short vowels

phoneme I
vwl starttype #@ endtype #@
flag1
length 100
IF thisPh(isWordEnd) THEN
length 140
ENDIF
FMT(vowel/ii#)
endphoneme

phoneme 8
vwl starttype #@ endtype #@
length 100
IF thisPh(isWordEnd) THEN
length 140
ENDIF
FMT(vowel/8)
endphoneme

phoneme u#
vwl starttype @ endtype @
length 100
flag1
IF thisPh(isWordEnd) THEN
length 140
ENDIF
FMT(vdiph2/uw_6)
endphoneme

phoneme U
vwl starttype #u endtype #u
length 100
IF thisPh(isWordEnd) THEN
length 140
ENDIF
FMT(vowel/uu_2)
endphoneme


// long vowels

phoneme A
vwl starttype #a endtype #a
length 200
FMT(vowel/aa_9)
endphoneme

phoneme a
vwl starttype #a endtype #a
length 200
FMT(vowel/a_5)
endphoneme

phoneme &
vwl starttype #a endtype #a
flag1
length 200
FMT(vowel/ee_2)
endphoneme

phoneme e
vwl starttype #e endtype #e
length 200
flag1
FMT(vdiph2/ii@_2)
endphoneme

phoneme E
vwl starttype @ endtype @
length 200
FMT(vowel/@_fnt)
endphoneme

phoneme i
vwl starttype #i endtype #i
length 180
FMT(vowel/ii_8)
endphoneme

phoneme o
vwl starttype #o endtype #o
length 200
FMT(vowel/o_3)
endphoneme

phoneme Y
vwl starttype #@ endtype #@
length 200
flag1
FMT(vowel/y#_4)
endphoneme

phoneme u
vwl starttype #u endtype #u
length 200
FMT(vowel/u_bck3)
endphoneme

phoneme r
import_phoneme base1/R2
endphoneme

phoneme t
import_phoneme base2/t
endphoneme

phoneme G
import_phoneme base1/r"
endphoneme

phoneme X
vls uvl frc
lengthmod 3
Vowelin f1=0 f2=2300 200 400 f3=-100 100
Vowelout f1=0 f2=2300 300 400 f3=-100 100 rms=20
lengthmod 3
WAV(ufric/x2, 60)
endphoneme

phoneme L
import_phoneme sq/ll
// import_phoneme base1/l-
endphoneme

phoneme l
liquid
IF nextPhW(isFlag1) THEN
ELSE
ChangePhoneme(L) // Hard
ENDIF
CALL base1/l
endphoneme

+ 3
- 0
phsource/phonemes View File

@@ -2055,3 +2055,6 @@ phonemetable qdb en
include ph_langbelta

phonemetable ms id

phonemetable kaa kk
include ph_karakalpak

+ 14
- 4
src/libespeak-ng/translate.c View File

@@ -919,7 +919,9 @@ static int UpperCaseInWord(Translator *tr, char *word, int c)
return 0;
}

void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
// Same as TranslateClause except we also get the clause terminator used (full stop, comma, etc.).
// Used by espeak_TextToPhonemesWithTerminator.
void TranslateClauseWithTerminator(Translator *tr, int *tone_out, char **voice_change, int *terminator_out)
{
int ix;
int c;
@@ -983,6 +985,10 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
MAKE_MEM_UNDEFINED(&source, sizeof(source));
terminator = ReadClause(tr, source, charix, &charix_top, N_TR_SOURCE, &tone, voice_change_name);

if (terminator_out != NULL) {
*terminator_out = terminator;
}

if (tone_out != NULL) {
if (tone == 0)
*tone_out = (terminator & CLAUSE_INTONATION_TYPE) >> 12; // tone type not overridden in ReadClause, use default
@@ -1265,7 +1271,7 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
} else {
if (iswlower(prev_in)) {
// lower case followed by upper case, possibly CamelCase
if ((prev_out != ' ') && UpperCaseInWord(tr, &sbuf[ix], c) == 0) { // start a new word
if (UpperCaseInWord(tr, &sbuf[ix], c) == 0) { // start a new word
c = ' ';
space_inserted = true;
prev_in_save = c;
@@ -1276,7 +1282,7 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change)

if ((tr->translator_name == L('n', 'l')) && (letter_count == 2) && (c == 'j') && (prev_in == 'I')) {
// Dutch words may capitalise initial IJ, don't split
} else if ((prev_out != ' ') && IsAlpha(next2_in)) {
} else if (IsAlpha(next2_in)) {
// changing from upper to lower case, start new word at the last uppercase, if 3 or more letters
c = ' ';
space_inserted = true;
@@ -1601,7 +1607,6 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
if (dict_flags & FLAG_SPELLWORD) {
// redo the word, speaking single letters
for (pw = word; *pw != ' ';) {
memset(number_buf, 0, sizeof(number_buf));
memset(number_buf, ' ', 9);
nx = utf8_in(&c_temp, pw);
memcpy(&number_buf[2], pw, nx);
@@ -1669,6 +1674,11 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
}
}

void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
{
TranslateClauseWithTerminator(tr, tone_out, voice_change, NULL);
}

static int CalcWordLength(int source_index, int charix_top, short int *charix, WORD_TAB *words, int word_count) {
int j;
int k;

+ 3
- 0
src/windows/data.vcxproj View File

@@ -233,6 +233,9 @@
<Target Name="ka" Inputs="$(ProjectDir)..\..\dictsource\ka_rules;$(ProjectDir)..\..\dictsource\ka_list" Outputs="$(ProjectDir)..\..\espeak-ng-data\ka_dict" DependsOnTargets="Phonemes">
<Exec Command="cd $(ProjectDir)..\..\dictsource &amp;&amp; $(TargetDir)espeak-ng.exe --path=$(ProjectDir)..\.. --compile=ka" />
</Target>
<Target Name="kaa" Inputs="$(ProjectDir)..\..\dictsource\kaa_rules;$(ProjectDir)..\..\dictsource\kaa_list" Outputs="$(ProjectDir)..\..\espeak-ng-data\kaa_dict" DependsOnTargets="Phonemes">
<Exec Command="cd $(ProjectDir)..\..\dictsource &amp;&amp; $(TargetDir)espeak-ng.exe --path=$(ProjectDir)..\.. --compile=kaa" />
</Target>
<Target Name="kk" Inputs="$(ProjectDir)..\..\dictsource\kk_rules;$(ProjectDir)..\..\dictsource\kk_list" Outputs="$(ProjectDir)..\..\espeak-ng-data\kk_dict" DependsOnTargets="Phonemes">
<Exec Command="cd $(ProjectDir)..\..\dictsource &amp;&amp; $(TargetDir)espeak-ng.exe --path=$(ProjectDir)..\.. --compile=kk" />
</Target>

+ 1
- 0
tests/language-phonemes.test View File

@@ -78,6 +78,7 @@ test_phwav it e2a438778434f699d9be469c4f9ea1576ec4fd03 "ma na n^a pa ba ta da ka
test_phwav ja 6d1483048991b0205b9bc82cec24340a2184c42f "ma na n^a Na N\\a pa ba ta da ka ga t_sa d_za t_s\\a d_z\\a p\\a sa za s\\a z\\a Ca ha r\`a ja wa _:_ mi mu me mo ma mi~ mu~"
test_phwav jbo 1bf9cf5c4898a24d2f71eae6f8a3e260895da884 "ma na Na pa ba ta da ka ga ?a fa va xa ha tSa dZa sa za Sa Za wa ja la Ra n-a r-a l-a _:_ ma me mi mo mu m@ maI maU meI moI"
test_phwav ka 74a6f31909bdc9470e203a658614b6d2c961d7c3 "ma na p#a pa ba t#a ta da k#a ka ga qa ?a ts#a tsa tSa dza dZa va sa za Sa Za ca xa qa Qa ha ra la _:_ ma me mi mo mu m@ mo:"
test_phwav kaa 2fffd426cd03d47f55829ebdd539a9a2f7b3dbd0 "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@"
test_phwav kk bb05c59779660929d7f0a7213189d89fcfc71675 "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@"
test_phwav kl 9b97b1ba5f35bb41a4be67e0a329cff9f494b2b1 "ma na Na pa ta ka qa tsa va sa Sa Qa ra la l#a ja tl#a _:_ ma me mi my mo mu m& mE mV mO mW m3 m@ maI"
test_phwav kn 7a4943a8f06a29a5e59892edb6a39be91b20c2c2 "ma na n.a n^a Na pa p#a ba b#a ta t#a da d#a t.a t.#a d.a d.#a ka k#a ga g#a fa va sa S;a s.a ca c#a Ja J#a ha ja ra la l.a r-a _:_ ma ma: mi mi: mu mu: me me: mo mo: maI"

Loading…
Cancel
Save