Browse Source

Merge branch 'master' into android

master
Reece H. Dunn 9 years ago
parent
commit
19039c72ab
12 changed files with 92 additions and 38 deletions
  1. 5
    1
      src/compiledata.cpp
  2. 6
    2
      src/compiledict.cpp
  3. 3
    1
      src/dictionary.cpp
  4. 10
    13
      src/espeakedit.cpp
  5. 5
    2
      src/extras.cpp
  6. 4
    0
      src/prosodydisplay.cpp
  7. 21
    13
      src/spect.cpp
  8. 1
    0
      src/spectdisplay.cpp
  9. 16
    4
      src/spectseq.cpp
  10. 6
    0
      src/synthdata.cpp
  11. 4
    0
      src/voices.cpp
  12. 11
    2
      src/vowelchart.cpp

+ 5
- 1
src/compiledata.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2014 by Jonathan Duddington * * Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2013 by Reece H. Dunn *
* Copyright (C) 2013-2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
if(stream.Ok() == FALSE) if(stream.Ok() == FALSE)
{ {
error("Failed to open: '%s'",path); error("Failed to open: '%s'",path);
delete spectseq;
return(0); return(0);
} }
spectseq->Load(stream); spectseq->Load(stream);
if(spectseq->frames == NULL) if(spectseq->frames == NULL)
{ {
error("Bad vowel file, no frames: '%s'",path); error("Bad vowel file, no frames: '%s'",path);
delete spectseq;
return(0); return(0);
} }


{ {
fclose(f_in); fclose(f_in);
fclose(f_errors); fclose(f_errors);
free(tune_data);
return; return;
} }


} }
} }
fwrite(tune_data, n_tune_names, sizeof(TUNE), f_out); fwrite(tune_data, n_tune_names, sizeof(TUNE), f_out);
free(tune_data);
fclose(f_in); fclose(f_in);
fclose(f_out); fclose(f_out);



+ 6
- 2
src/compiledict.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2014 by Jonathan Duddington * * Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
return(-1); return(-1);
} }


fprintf(f_log,"Compiling: '%s'\n",fname);
if(f_log != NULL)
fprintf(f_log,"Compiling: '%s'\n",fname);


linenum=0; linenum=0;


count++; count++;
} }


fprintf(f_log,"\t%d entries\n",count);
if(f_log != NULL)
fprintf(f_log,"\t%d entries\n",count);
fclose(f_in); fclose(f_in);
return(0); return(0);
} /* end of compile_dictlist_file */ } /* end of compile_dictlist_file */
{ {
if(fname_err) if(fname_err)
strcpy(fname_err,fname_out); strcpy(fname_err,fname_out);
fclose(f_in);
return(-1); return(-1);
} }
sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP); sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP);

+ 3
- 1
src/dictionary.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2014 by Jonathan Duddington * * Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2013 Reece H. Dunn *
* Copyright (C) 2013-2015 Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
{ {
fprintf(stderr,"Can't read dictionary file: '%s'\n",fname); fprintf(stderr,"Can't read dictionary file: '%s'\n",fname);
} }
if (f != NULL)
fclose(f);
return(1); return(1);
} }



+ 10
- 13
src/espeakedit.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2015 by Jonathan Duddington * * Copyright (C) 2005 to 2015 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2013 by Reece H. Dunn *
* Copyright (C) 2013-2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
"\tCompile phoneme data in espeak-data/phsource\n" "\tCompile phoneme data in espeak-data/phsource\n"
"\tand dictionary data in espeak-data/dictsource\n"; "\tand dictionary data in espeak-data/dictsource\n";



// Initialise this in OnInit, not statically // Initialise this in OnInit, not statically
bool MyApp::OnInit(void) bool MyApp::OnInit(void)
{//===================== {//=====================


int j; int j;
const wxChar *p;
char param[120]; char param[120];



if(argc > 1) if(argc > 1)
{ {
p = argv[1];
j = 0;
#if wxUSE_UNICODE == 1
wcstombs(param, argv[1], sizeof(param));
#else
const char *p = argv[1];
while((param[j] = p[j]) != 0) j++; while((param[j] = p[j]) != 0) j++;
#endif


if((strcmp(param,"--help")==0) || (strcmp(param,"-h")==0)) if((strcmp(param,"--help")==0) || (strcmp(param,"-h")==0))
{ {
char buf[300]; char buf[300];
wxString url_docs; wxString url_docs;


wxBoxSizer *topsizer;
HtmlWindow *html;
wxDialog dlg(this, wxID_ANY, wxString(_("About")));

topsizer = new wxBoxSizer(wxVERTICAL);

switch(event.GetId()) switch(event.GetId())
{ {
case MENU_ABOUT: case MENU_ABOUT:
{ {
wxDialog dlg(this, wxID_ANY, wxString(_("About")));

sprintf(buf,about_string,espeak_Info(NULL)); sprintf(buf,about_string,espeak_Info(NULL));
html = new HtmlWindow(&dlg, wxID_ANY, wxDefaultPosition, wxSize(380, 160), wxHW_SCROLLBAR_NEVER);
HtmlWindow *html = new HtmlWindow(&dlg, wxID_ANY, wxDefaultPosition, wxSize(380, 160), wxHW_SCROLLBAR_NEVER);
html -> SetBorders(0); html -> SetBorders(0);
html -> SetPage(wxString(buf,wxConvLocal)); html -> SetPage(wxString(buf,wxConvLocal));
html -> SetSize(html -> GetInternalRepresentation() -> GetWidth(), html -> SetSize(html -> GetInternalRepresentation() -> GetWidth(),
html -> GetInternalRepresentation() -> GetHeight()); html -> GetInternalRepresentation() -> GetHeight());


wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
topsizer -> Add(html, 1, wxALL, 10); topsizer -> Add(html, 1, wxALL, 10);


//#if wxUSE_STATLINE //#if wxUSE_STATLINE

+ 5
- 2
src/extras.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2006 to 2011 by Jonathan Duddington * * Copyright (C) 2006 to 2011 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2013 by Reece H. Dunn *
* Copyright (C) 2013-2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
{ {
str = wxString(buf, wxConvLocal); str = wxString(buf, wxConvLocal);
wxLogError(_T("Can't write file: ") + str); wxLogError(_T("Can't write file: ") + str);
fclose(f_in);
return; return;
} }


f_listx = fopen(buf,"w"); f_listx = fopen(buf,"w");
wxLogStatus(_T("Pass 1")); wxLogStatus(_T("Pass 1"));
} }
else
else if(pass == 2)
{ {
CompileDictionary(path_dsource,"it",NULL,NULL,0); CompileDictionary(path_dsource,"it",NULL,NULL,0);
sprintf(buf,"%s/it_listx2",path_dsource); sprintf(buf,"%s/it_listx2",path_dsource);
if((f_out = fopen("compare_de","w")) == NULL) if((f_out = fopen("compare_de","w")) == NULL)
{ {
wxLogError(_T("Can't write file ")); wxLogError(_T("Can't write file "));
fclose(f_out);
return; return;
} }
LoadVoice("de",0); LoadVoice("de",0);
free(p); free(p);
} }
fclose(f_out); fclose(f_out);
free(w_list);


} // end of Make WorkFreqList } // end of Make WorkFreqList



+ 4
- 0
src/prosodydisplay.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2014 by Jonathan Duddington * * Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
} }


if((manifest = (NAMETAB *)realloc(manifest, n_lines * sizeof(NAMETAB))) == NULL) if((manifest = (NAMETAB *)realloc(manifest, n_lines * sizeof(NAMETAB))) == NULL)
{
fclose(f);
return; return;
}


n_manifest = 0; n_manifest = 0;
while(fgets(buf, sizeof(buf), f) != NULL) while(fgets(buf, sizeof(buf), f) != NULL)

+ 21
- 13
src/spect.cpp View File

if(cy.flags & 0x04) if(cy.flags & 0x04)
markers |= 8; markers |= 8;


spect_data = new USHORT[nx];

if(spect_data == NULL)
if(nx>0)
{ {
wxLogError(_T("Failed to allocate memory"));
return(1);
}
spect_data = new USHORT[nx];


max_y = 0;
for(ix=0; ix<nx; ix++)
{
spect_data[ix] = p->data[ix];
if(spect_data[ix] > max_y)
max_y = spect_data[ix];
if(spect_data == NULL)
{
wxLogError(_T("Failed to allocate memory"));
return(1);
}

max_y = 0;
for(ix=0; ix<nx; ix++)
{
spect_data[ix] = p->data[ix];
if(spect_data[ix] > max_y)
max_y = spect_data[ix];
}
} }
if(nx==0)
else
{ {
nx = int(8000/dx); nx = int(8000/dx);
spect_data = new USHORT[nx]; spect_data = new USHORT[nx];
if(spect_data == NULL)
{
wxLogError(_T("Failed to allocate memory"));
return(1);
}
for(ix=0; ix<nx; ix++) for(ix=0; ix<nx; ix++)
spect_data[ix] = 1; spect_data[ix] = 1;
max_y = 1; max_y = 1;

+ 1
- 0
src/spectdisplay.cpp View File

if(stream.Ok() == FALSE) if(stream.Ok() == FALSE)
{ {
wxLogError(_T("Failed to open '%s'"),filename.c_str()); wxLogError(_T("Failed to open '%s'"),filename.c_str());
delete spectseq;
return; return;
} }
wxFileName path = wxFileName(filename); wxFileName path = wxFileName(filename);

+ 16
- 4
src/spectseq.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington * * Copyright (C) 2005 to 2007 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2013 Reece H. Dunn *
* Copyright (C) 2013-2015 Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *


if(import==1) if(import==1)
{ {
if(frame->Import(stream) != 0) break;
if(frame->Import(stream) != 0)
{
delete frame;
break;
}
} }
else else
if(import==2) if(import==2)
{ {
if(frame->ImportSPC2(stream,time_acc) != 0) break;
if(frame->ImportSPC2(stream,time_acc) != 0)
{
delete frame;
break;
}
} }
else else
{ {
if(frame->Load(stream, file_format) != 0) break;
if(frame->Load(stream, file_format) != 0)
{
delete frame;
break;
}
} }


frames[numframes++] = frame; frames[numframes++] = frame;

+ 6
- 0
src/synthdata.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2014 by Jonathan Duddington * * Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
if(fread(p,1,length,f_in) != length) if(fread(p,1,length,f_in) != length)
{ {
fclose(f_in); fclose(f_in);
Free(p);
return(NULL); return(NULL);
} }


if(memcmp(buf,"log",3)==0) if(memcmp(buf,"log",3)==0)
{ {
if(sscanf(&buf[4],"%d %s",&logging_type,string)==2) if(sscanf(&buf[4],"%d %s",&logging_type,string)==2)
{
if (f_logespeak)
fclose(f_logespeak);
f_logespeak = fopen(string,"w"); f_logespeak = fopen(string,"w");
}
} }
else else
if(memcmp(buf,"tone",4)==0) if(memcmp(buf,"tone",4)==0)

+ 4
- 0
src/voices.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2015 by Jonathan Duddington * * Copyright (C) 2005 to 2015 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2015 by Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
new_translator->dict_min_size = dict_min; new_translator->dict_min_size = dict_min;
LoadDictionary(new_translator, new_dictionary, control & 4); LoadDictionary(new_translator, new_dictionary, control & 4);
if(dictionary_name[0]==0) if(dictionary_name[0]==0)
{
DeleteTranslator(new_translator);
return(NULL); // no dictionary loaded return(NULL); // no dictionary loaded
}


new_translator->dict_condition = conditional_rules; new_translator->dict_condition = conditional_rules;



+ 11
- 2
src/vowelchart.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington * * Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* Copyright (C) 2013 Reece H. Dunn *
* Copyright (C) 2013-2015 Reece H. Dunn *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
if(stream.Ok() == FALSE) if(stream.Ok() == FALSE)
{ {
path = wxFindNextFile(); path = wxFindNextFile();
delete spectseq;
continue; continue;
} }
spectseq->Load(stream); spectseq->Load(stream);


filename.SetExt(_T("png")); filename.SetExt(_T("png"));
bitmap->SaveFile(filename.GetFullPath(),wxBITMAP_TYPE_PNG); bitmap->SaveFile(filename.GetFullPath(),wxBITMAP_TYPE_PNG);
fclose(f_in);
return(count); return(count);
} }


ix = GetFileLength(fname); ix = GetFileLength(fname);
prog_log_table = (PHONEME_PROG_LOG *)malloc(ix); prog_log_table = (PHONEME_PROG_LOG *)malloc(ix);
if(prog_log_table == NULL) if(prog_log_table == NULL)
{
fclose(f_prog_log);
return; return;
}
ix = fread(prog_log_table, 1, ix, f_prog_log); ix = fread(prog_log_table, 1, ix, f_prog_log);
fclose(f_prog_log); fclose(f_prog_log);
n_prog_log = ix / sizeof(PHONEME_PROG_LOG); n_prog_log = ix / sizeof(PHONEME_PROG_LOG);


// select the phoneme table by name // select the phoneme table by name
// if(SetVoiceByName(phoneme_tab_list[table].name) != 0) continue; // if(SetVoiceByName(phoneme_tab_list[table].name) != 0) continue;
if(SelectPhonemeTableName(phoneme_tab_list[table].name) < 0) continue;
if(SelectPhonemeTableName(phoneme_tab_list[table].name) < 0)
{
fclose(f);
continue;
}


voice_found = 0; voice_found = 0;
if((LoadVoice(phoneme_tab_list[table].name, 0) != NULL) && (translator->data_dictrules != NULL)) if((LoadVoice(phoneme_tab_list[table].name, 0) != NULL) && (translator->data_dictrules != NULL))

Loading…
Cancel
Save