Browse Source

Merge commit 'be3933d1d3' into development

Conflicts:
	dictsource/dict_phonemes
	phsource/compile_report
master
Reece H. Dunn 12 years ago
parent
commit
3f9067c99a
6 changed files with 46 additions and 12 deletions
  1. 8
    0
      dictsource/hu_rules
  2. 17
    0
      phsource/ph_portugal
  3. 13
    6
      src/numbers.cpp
  4. 1
    1
      src/synthdata.cpp
  5. 5
    5
      src/tr_languages.cpp
  6. 2
    0
      src/translate.h

+ 8
- 0
dictsource/hu_rules View File

haszo) n (jár n haszo) n (jár n
boszorká) ny (jelet n^ boszorká) ny (jelet n^
káno) n (jog n káno) n (jog n
legé) ny (jár n^
szé) n (jelek n
teljesítmé) ny (j n^


.group o .group o
o o o o
szen) tj (akab tj szen) tj (akab tj
közérze) tj (aví tj közérze) tj (aví tj
ké) tj (átszm tj ké) tj (átszm tj
szavaza) tj (og tj
szavaza) tj (eg tj


.group ts .group ts
ts (_S2 tS //general rule with word end of ts letters ts (_S2 tS //general rule with word end of ts letters
_cha) tsz (ob t|s _cha) tsz (ob t|s
robo) ts (of t|S robo) ts (of t|S
merényle) ts (or 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 .group tt

+ 17
- 0
phsource/ph_portugal View File

endphoneme 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 phoneme s# // This is [s] for Brazil, [S] for Portugal
CALL base/S CALL base/S

+ 13
- 6
src/numbers.cpp View File



if(ph_buf[0] == 0) 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; language = translator->langopts.alt_alphabet_lang;
else else
if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS))
// Numbers // Numbers


static char ph_ordinal2[12]; 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) static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman)
if(control & 4) if(control & 4)
{ {
sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits 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) if(found == 0)
{ {
else 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); sprintf(string,"_%dX%c", tens, ord_type);
if(Lookup(tr, string, ph_tens) != 0) if(Lookup(tr, string, ph_tens) != 0)
{ {
Lookup(tr, "_0and", ph_and); 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; ph_and[0] = 0;


if(tr->langopts.numbers & NUM_SWAP_TENS) if(tr->langopts.numbers & NUM_SWAP_TENS)
ordinal = 2; ordinal = 2;
flags[0] |= FLAG_SKIPWORDS; flags[0] |= FLAG_SKIPWORDS;
skipwords = 1; skipwords = 1;
sprintf(string,"_x#%s",suffix);
Lookup(tr, string, ph_ordinal2x); // is there an alternate pronunciation?
} }
} }
} }
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
utf8_in(&next_char,p); 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. strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
} }



+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.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; const int version_phdata = 0x014701;


int option_device_number = -1; int option_device_number = -1;

+ 5
- 5
src/tr_languages.cpp View File

tr->langopts.max_initial_consonants = 3; tr->langopts.max_initial_consonants = 3;
tr->langopts.replace_chars = NULL; 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.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); SetLengthMods(tr,201);
// tr->langopts.length_mods = length_mods_en; // tr->langopts.length_mods = length_mods_en;
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels 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.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) if(name2 == L_grc)
{ {
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels 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.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')) if(name2 == L('c','a'))
{ {
if(name2 == L('a','n')) if(name2 == L('a','n'))
{ {
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; 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 else
if(name2 == L_pap) if(name2 == L_pap)
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable 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.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.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'); SetLetterVowel(tr,'y');
ResetLetterBits(tr,0x2); ResetLetterBits(tr,0x2);
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y

+ 2
- 0
src/translate.h View File

#define NUM2_THOUSANDS_VAR4 0x100 #define NUM2_THOUSANDS_VAR4 0x100
#define NUM2_THOUSANDS_VAR5 0x140 #define NUM2_THOUSANDS_VAR5 0x140


#define NUM2_ORDINAL_NO_AND 0x800
#define NUM2_MULTIPLE_ORDINAL 0x1000 #define NUM2_MULTIPLE_ORDINAL 0x1000
#define NUM2_NO_TEEN_ORDINALS 0x2000 #define NUM2_NO_TEEN_ORDINALS 0x2000
#define NUM2_MYRIADS 0x4000 #define NUM2_MYRIADS 0x4000
// bits 1-4 use variant form of numbers before thousands,millions,etc. // 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) // 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 // 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 // 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 // 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) // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3)

Loading…
Cancel
Save