18 #include <sys/types.h> 20 #include <AquesTalk2.h> 23 void *
file_load(
const char * file,
int * psize);
25 int main(
int ac,
char **av)
27 char speak_str[65536];
28 char phont_fname[1024]={
"phont/aq_f3a.phont"},
29 input_fname[1024]={
""}, output_fname[1024]={
"output.wav"};
32 while ((opt = getopt(ac, av,
"p:o:")) != -1) {
35 strncpy(phont_fname,optarg,1024);
38 strncpy(output_fname,optarg,1024);
41 fprintf(stderr,
"Usage : %s [-p phont_file] [-o output_file] [intput_file]\n", av[0]);
46 strncpy(input_fname,av[optind],1024);
48 fprintf(stderr,
"Phont file : %s\n", phont_fname);
49 fprintf(stderr,
"Input file : %s\n", input_fname);
50 fprintf(stderr,
"Output file : %s\n", output_fname);
54 void *pPhont =
file_load(phont_fname, &size);
56 fprintf(stderr,
"could not found phont file %s\n", phont_fname);
60 FILE *input_fp = stdin;
61 if ((strlen(input_fname)>0)&&((input_fp = fopen(input_fname,
"r"))==NULL)) {
62 fprintf(stderr,
"could not found input file %s\n", input_fname);
65 if(fgets(speak_str,65536-1,input_fp)==0) {
66 fprintf(stderr,
"could not get input string");
68 if ( input_fp != stdin ) fclose(input_fp);
71 unsigned char *wav = AquesTalk2_Synthe_Utf8(speak_str, 100, &size, pPhont);
73 fprintf(stderr,
"ERR %d\n", size);
75 case 100: fprintf(stderr,
"その他のエラー\n");
break;
76 case 101: fprintf(stderr,
"メモリ不足\n");
break;
77 case 102: fprintf(stderr,
"音声記号列に未定義の読み記号が指定された\n");
break;
78 case 103: fprintf(stderr,
"韻律データの時間長がマイナスなっている\n");
break;
79 case 104: fprintf(stderr,
"内部エラー(未定義の区切りコード検出)\n");
break;
80 case 105: fprintf(stderr,
"音声記号列に未定義の読み記号が指定された\n");
break;
81 case 106: fprintf(stderr,
"音声記号列のタグの指定が正しくない\n");
break;
82 case 107: fprintf(stderr,
"タグの長さが制限を越えている(または[>]がみつからない)\n");
break;
83 case 108: fprintf(stderr,
"タグ内の値の指定が正しくない\n");
break;
84 case 109: fprintf(stderr,
"WAVE 再生ができない(サウンドドライバ関連の問題)\n");
break;
85 case 110: fprintf(stderr,
"WAVE 再生ができない(サウンドドライバ関連の問題 非同期再生)\n");
break;
86 case 111: fprintf(stderr,
"発声すべきデータがない\n");
break;
87 case 200: fprintf(stderr,
"音声記号列が長すぎる\n");
break;
88 case 201: fprintf(stderr,
"1つのフレーズ中の読み記号が多すぎる\n");
break;
89 case 202: fprintf(stderr,
"音声記号列が長い(内部バッファオーバー1)\n");
break;
90 case 203: fprintf(stderr,
"ヒープメモリ不足\n");
break;
91 case 204: fprintf(stderr,
"音声記号列が長い(内部バッファオーバー1)\n");
break;
93 fprintf(stderr,
"Please refer to https://www.a-quest.com/archive/manual/aqtk2_lnx_man.pdf for more info.\n");
100 FILE *fp = fopen(output_fname,
"wb");
101 fwrite(wav, 1, size, fp);
104 AquesTalk2_FreeWave (wav);
115 if( stat(file, &st)!=0)
return NULL;
116 if((data=(
char *)malloc(st.st_size))==NULL){
117 fprintf(stderr,
"can not alloc memory(file_load)¥n");
120 if((fp=fopen(file,
"rb"))==NULL) {
125 if(fread(data, 1, st.st_size, fp)<(
unsigned)st.st_size) {
126 fprintf(stderr,
"can not read data (file_load)¥n");
int main(int ac, char **av)
void * file_load(const char *file, int *psize)