Merge branch 'development'

This commit is contained in:
Reece H. Dunn
2013-03-17 00:55:04 +00:00
50 changed files with 134 additions and 79 deletions
+23 -5
View File
@@ -745,6 +745,7 @@ static void CompileReport(void)
REF_HASH_TAB **list;
const char *data_path;
int prev_table;
int procedure_num;
int prev_mnemonic;
if(f_report == NULL)
@@ -802,7 +803,17 @@ static void CompileReport(void)
j++;
}
fprintf(f_report," [%s] %s",WordToString(prev_mnemonic = list[ix]->ph_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name);
prev_mnemonic = list[ix]->ph_mnemonic;
if((prev_mnemonic >> 24) == 'P')
{
// a procedure, not a phoneme
procedure_num = atoi(WordToString(prev_mnemonic));
fprintf(f_report," %s %s", phoneme_tab_list2[prev_table = list[ix]->ph_table].name, proc_names[procedure_num]);
}
else
{
fprintf(f_report," [%s] %s",WordToString(prev_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name);
}
fputc('\n',f_report);
}
@@ -1856,7 +1867,7 @@ static int LoadWavefile(FILE *f, const char *fname)
}
sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp);
if(system(command) < 0)
if(system(command) != 0)
{
failed = 1;
}
@@ -2761,6 +2772,8 @@ int CompilePhoneme(int compile_phoneme)
}
strcpy(proc_names[n_procs], item_string);
phoneme_out = &phoneme_out2;
sprintf(number_buf,"%.3dP", n_procs);
phoneme_out->mnemonic = StringToWord(number_buf);
}
phoneme_out->code = phcode;
@@ -3498,10 +3511,11 @@ static void CompilePhonemeData2(const char *source)
make_envs();
#endif
wxLogStatus(_T("Compiling phoneme data: ")+wxString(path_source,wxConvLocal));
n_envelopes = 0;
error_count = 0;
resample_count = 0;
memset(markers_used,0,sizeof(markers_used));
memset(markers_used,0,sizeof(markers_used));
f_errors = stderr;
@@ -3668,7 +3682,7 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references
if(error_count > 0)
{
report += _T(" See file: 'phsource/error_log'.");
report += _T(" See file: '")+wxString(path_source,wxConvLocal)+_T("phsource/error_log'.");
wxLogError(report);
}
wxLogStatus(report + report_dict);
@@ -4138,7 +4152,11 @@ void CompilePhonemeData()
void CompileSampleRate()
{
long value;
value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs sox)"), 22050, 5000, 48000);
#ifndef PLATFORM_POSIX
wxLogError(_T("Change Sample Rate needs the 'sox' program. It probably doesn't work on Windows"));
#endif
value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs 'sox' program)"), 22050, 5000, 48000);
if(value > 1000)
{
+2 -2
View File
@@ -91,8 +91,8 @@ wxMenuBar *MakeMenu(int type, const char *dict_name)
data_menu = new wxMenu;
data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary"));
data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)"));
data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data"));
data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate"));
data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data 22050Hz"));
data_menu->Append(MENU_COMPILE_PH2, _("Compile at sample &rate"));
data_menu->AppendSeparator();
data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list..."));
data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data"));
+1 -1
View File
@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"
const char *version_string = "1.46.51 15.Mar.13";
const char *version_string = "1.46.53 16.Mar.13";
const int version_phdata = 0x014640;
int option_device_number = -1;
+1 -1
View File
@@ -82,7 +82,7 @@ const char *WordToString(unsigned int word)
int ix;
static char buf[5];
for(ix=0; ix<3; ix++)
for(ix=0; ix<4; ix++)
buf[ix] = word >> (ix*8);
buf[4] = 0;
return(buf);
+7 -3
View File
@@ -455,6 +455,7 @@ Translator *SelectTranslator(const char *name)
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};
static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230};
static const short stress_lengths_ta2[8] = {230, 230, 240, 240, 0, 0, 260, 260};
static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };
// convert name string into a word of up to 4 characters, for the switch()
@@ -731,6 +732,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;
}
else
if(name2 == L_pap)
@@ -1423,7 +1425,7 @@ SetLengthMods(tr,3); // all equal
case L('m','r'): // Marathi
case L('t','e'): // Telugu
{
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
SetupTranslator(tr,stress_lengths_ta2, stress_amps_ta);
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_1L;
@@ -1433,9 +1435,12 @@ SetLengthMods(tr,3); // all equal
if(name2 == L('t','a'))
{
SetupTranslator(tr,stress_lengths_ta, NULL);
tr->letter_bits_offset = OFFSET_TAMIL;
tr->langopts.numbers = NUM_OMIT_1_THOUSAND ;
tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words
}
else
if(name2 == L('m','r'))
{
tr->letter_bits_offset = OFFSET_DEVANAGARI;
@@ -1458,9 +1463,8 @@ SetLengthMods(tr,3); // all equal
tr->letter_bits_offset = OFFSET_TELUGU;
tr->langopts.numbers = 0x1;
}
tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words
SetIndicLetters(tr); // call this after setting OFFSET_
SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial)
SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial)
}
break;
+5 -2
View File
@@ -842,7 +842,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
char prefix_chars[0x3f + 2];
int found=0;
int end_flags;
char c_temp; // save a character byte while we temporarily replace it with space
int c_temp; // save a character byte while we temporarily replace it with space
int first_char;
int last_char = 0;
int add_plural_suffix = 0;
@@ -912,7 +912,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
if((word_length == 1) && (wflags & FLAG_TRANSLATOR2))
{
// retranslating a 1-character word using a different language, say its name
spell_word = 1;
utf8_in(&c_temp, wordx+1); // the next character
if(!IsAlpha(c_temp) || (AlphabetFromChar(last_char) != AlphabetFromChar(c_temp)))
spell_word = 1;
}
if(option_sayas == SAYAS_KEY)
@@ -1938,6 +1940,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
if(ok)
{
*p2 = '-'; // replace next space by hyphen
wtab[0].flags &= ~FLAG_ALL_UPPER; // prevent it being considered an abbreviation
flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word
if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f)))
{