mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-04 06:32:20 +00:00
[1.47.03a]
Change sound of Portugal 'rr' and initial 'r'. Fixed for Aragonese ordinal numbers. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@330 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+4
-9
@@ -115,7 +115,6 @@ _dpt kon
|
||||
_#º o
|
||||
_#ª a
|
||||
|
||||
|
||||
_1ox prim'Er
|
||||
_2ox seQ'und
|
||||
_3ox tErT'Er
|
||||
@@ -167,6 +166,9 @@ _9Co nweUTEnt'en
|
||||
_0M1o mil'en
|
||||
_0M2o mil^on'en
|
||||
_1M2o mil^on'en
|
||||
_0M4o bil^on'en
|
||||
_1M4o bil^on'en
|
||||
|
||||
|
||||
// characters
|
||||
$ d'olar
|
||||
@@ -277,13 +279,6 @@ hu $u
|
||||
sant $u
|
||||
donya $u
|
||||
don $u
|
||||
he $u
|
||||
has $u
|
||||
ha $u
|
||||
han $u
|
||||
heba $u
|
||||
hebas $u
|
||||
heban $u
|
||||
se'n sen $u
|
||||
|
||||
|
||||
@@ -519,4 +514,4 @@ unix j'uniks
|
||||
whatsapp was'app
|
||||
windows w'indows
|
||||
|
||||
mobile _^_EN
|
||||
//mobile _^_EN
|
||||
|
||||
@@ -35,7 +35,7 @@ n^ p p` r s S t t`
|
||||
tS tS` v w x z Z
|
||||
|
||||
|
||||
Dictionary an_dict 2013-03-19
|
||||
Dictionary an_dict 2013-03-21
|
||||
|
||||
a aI aU e E eI eU i
|
||||
o O oI u U
|
||||
|
||||
@@ -1035,6 +1035,9 @@ szivárvá) ny (játsz n^
|
||||
haszo) n (jár n
|
||||
boszorká) ny (jelet n^
|
||||
káno) n (jog n
|
||||
legé) ny (jár n^
|
||||
szé) n (jelek n
|
||||
teljesítmé) ny (j n^
|
||||
|
||||
.group o
|
||||
o o
|
||||
@@ -2013,6 +2016,8 @@ _tisztele) tj (el tj
|
||||
szen) tj (akab tj
|
||||
közérze) tj (aví tj
|
||||
ké) tj (átszm tj
|
||||
szavaza) tj (og tj
|
||||
szavaza) tj (eg tj
|
||||
|
||||
.group ts
|
||||
ts (_S2 tS //general rule with word end of ts letters
|
||||
@@ -2230,6 +2235,9 @@ felira) ts (áv t|S
|
||||
_cha) tsz (ob t|s
|
||||
robo) ts (of t|S
|
||||
merényle) ts (or t|S
|
||||
szavaza) ts (o t|S
|
||||
szige) ts (ej t|S
|
||||
szige) ts (o t|S
|
||||
|
||||
|
||||
.group tt
|
||||
|
||||
@@ -49,7 +49,7 @@ consonants 11 119
|
||||
ca 11 127
|
||||
an 4 125
|
||||
pt 29 140
|
||||
pt-pt 18 140
|
||||
pt-pt 20 140
|
||||
ro 36 148
|
||||
el 10 125
|
||||
grc 12 129
|
||||
@@ -721,6 +721,7 @@ r3/rx [*] base
|
||||
[r] et
|
||||
[r/] fr
|
||||
[R] fr-ca
|
||||
[x] pt-pt
|
||||
[*;] ro
|
||||
[r#] is
|
||||
[r/] tn
|
||||
@@ -2548,6 +2549,7 @@ vwl_fr/r [r] fr
|
||||
vwl_fr/r_ [r/] fr
|
||||
vwl_fr/r_@ [r/] fr
|
||||
vwl_fr/r@ fr post_r
|
||||
vwl_fr/@R [x] pt-pt
|
||||
vwl_fr/r@2 fr post_r
|
||||
vwl_fr/@R2 [R] fr-ca
|
||||
vwl_fr/ra fr post_r
|
||||
|
||||
@@ -133,6 +133,23 @@ phoneme w
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme x // [r] for Portugal
|
||||
liquid
|
||||
trill
|
||||
ipa ʁ
|
||||
lengthmod 7
|
||||
Vowelin f1=0 f2=1500 -400 400 f3=-400 80
|
||||
IF nextPh(isNotVowel) THEN
|
||||
ChangePhoneme(r/)
|
||||
ENDIF
|
||||
FMT(vwl_fr/@R) addWav(r3/rx, 120)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme R // for Portugal this is same the as [r]
|
||||
import_phoneme pt/r
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme s# // This is [s] for Brazil, [S] for Portugal
|
||||
CALL base/S
|
||||
|
||||
+13
-6
@@ -691,7 +691,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
|
||||
|
||||
if(ph_buf[0] == 0)
|
||||
{
|
||||
if(al_offset == translator->langopts.alt_alphabet)
|
||||
if((al_offset != 0) && (al_offset == translator->langopts.alt_alphabet))
|
||||
language = translator->langopts.alt_alphabet_lang;
|
||||
else
|
||||
if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS))
|
||||
@@ -876,6 +876,7 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)
|
||||
// Numbers
|
||||
|
||||
static char ph_ordinal2[12];
|
||||
static char ph_ordinal2x[12];
|
||||
|
||||
|
||||
static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman)
|
||||
@@ -1302,7 +1303,11 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
|
||||
if(control & 4)
|
||||
{
|
||||
sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits
|
||||
found = Lookup(tr, string, ph_digits);
|
||||
if((found = Lookup(tr, string, ph_digits)) != 0)
|
||||
{
|
||||
if(ph_ordinal2x[0] != 0)
|
||||
strcpy(ph_ordinal, ph_ordinal2x); // alternate pronunciation (lang=an)
|
||||
}
|
||||
}
|
||||
if(found == 0)
|
||||
{
|
||||
@@ -1362,8 +1367,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
|
||||
else
|
||||
{
|
||||
|
||||
if((is_ordinal) &&
|
||||
((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)))
|
||||
if(is_ordinal)
|
||||
{
|
||||
sprintf(string,"_%dX%c", tens, ord_type);
|
||||
if(Lookup(tr, string, ph_tens) != 0)
|
||||
@@ -1457,7 +1461,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
|
||||
{
|
||||
Lookup(tr, "_0and", ph_and);
|
||||
|
||||
if((is_ordinal) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))
|
||||
if((is_ordinal) && (tr->langopts.numbers2 & NUM2_ORDINAL_NO_AND))
|
||||
ph_and[0] = 0;
|
||||
|
||||
if(tr->langopts.numbers & NUM_SWAP_TENS)
|
||||
@@ -1884,6 +1888,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
|
||||
ordinal = 2;
|
||||
flags[0] |= FLAG_SKIPWORDS;
|
||||
skipwords = 1;
|
||||
sprintf(string,"_x#%s",suffix);
|
||||
Lookup(tr, string, ph_ordinal2x); // is there an alternate pronunciation?
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2179,7 +2185,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
|
||||
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
|
||||
utf8_in(&next_char,p);
|
||||
|
||||
if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
|
||||
if(!iswalpha(next_char) && (thousands_exact==0))
|
||||
// if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
|
||||
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.47.03 21.Mar.13";
|
||||
const char *version_string = "1.47.03a 21.Mar.13";
|
||||
const int version_phdata = 0x014701;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
@@ -290,7 +290,7 @@ static const char transpose_map_latin[] = {
|
||||
tr->langopts.max_initial_consonants = 3;
|
||||
tr->langopts.replace_chars = NULL;
|
||||
tr->langopts.ascii_language[0] = 0; // Non-Latin alphabet languages, use this language to speak Latin words, default is English
|
||||
|
||||
tr->langopts.alt_alphabet_lang = L('e','n');
|
||||
|
||||
SetLengthMods(tr,201);
|
||||
// tr->langopts.length_mods = length_mods_en;
|
||||
@@ -679,7 +679,7 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels
|
||||
|
||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA;
|
||||
tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands
|
||||
tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; // variant form of numbers before thousands
|
||||
|
||||
if(name2 == L_grc)
|
||||
{
|
||||
@@ -733,7 +733,7 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels
|
||||
|
||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER;
|
||||
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL;
|
||||
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND;
|
||||
|
||||
if(name2 == L('c','a'))
|
||||
{
|
||||
@@ -745,7 +745,7 @@ Translator *SelectTranslator(const char *name)
|
||||
if(name2 == L('a','n'))
|
||||
{
|
||||
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
|
||||
tr->langopts.numbers2 = 0;
|
||||
tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND;
|
||||
}
|
||||
else
|
||||
if(name2 == L_pap)
|
||||
@@ -1278,7 +1278,7 @@ SetLengthMods(tr,3); // all equal
|
||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
|
||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS;
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN;
|
||||
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS;
|
||||
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS | NUM2_ORDINAL_NO_AND;
|
||||
SetLetterVowel(tr,'y');
|
||||
ResetLetterBits(tr,0x2);
|
||||
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y
|
||||
|
||||
@@ -503,6 +503,7 @@ typedef struct {
|
||||
#define NUM2_THOUSANDS_VAR4 0x100
|
||||
#define NUM2_THOUSANDS_VAR5 0x140
|
||||
|
||||
#define NUM2_ORDINAL_NO_AND 0x800
|
||||
#define NUM2_MULTIPLE_ORDINAL 0x1000
|
||||
#define NUM2_NO_TEEN_ORDINALS 0x2000
|
||||
#define NUM2_MYRIADS 0x4000
|
||||
@@ -511,6 +512,7 @@ typedef struct {
|
||||
// bits 1-4 use variant form of numbers before thousands,millions,etc.
|
||||
// bits 6-8 use different forms of thousand, million, etc (M MA MB)
|
||||
// bit9=(LANG=rw) say "thousand" and "million" before its number, not after
|
||||
// bit11=(LANG=es,an) don't say 'and' between tens and units for ordinal numbers
|
||||
// bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units
|
||||
// bit13=(LANG=pt) don't use 11-19 numbers to make ordinals
|
||||
// bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3)
|
||||
|
||||
Reference in New Issue
Block a user