Galatea Talk を使って mikutter の Mention を話してもらうために。
ダウンロード先
- Galatea Talk
- Chaone (このページの添付ファイル)
FixFix
まず、Galatea Talk がバグだらけのため、その fix。なお、chasen や darts は付属よりも新しいバージョンが公開されていたりしますが、付属のバージョンでなければ動きません。chaone については Java 版が付属しているが、動かないので、C++ 版をダウンロードしてインストールする。unidic も読めない漢字などに影響するのでできるだけ最新のものが望ましい (※ unidic のダウンロードはユーザー登録が必要です。)。
- darts
- chasen
- unidic
- chaone
の順でインストールする。
まずはオーディオデバイス。これはお好みで。
diff -ur galatea-v3.0/SSM/da.h galatea-v3.0.patched/SSM/da.h --- galatea-v3.0/SSM/da.h 2003-08-21 13:49:01.000000000 +0900 +++ galatea-v3.0.patched/SSM/da.h 2012-04-21 05:48:12.148370345 +0900 @@ -18,8 +18,8 @@ #ifdef LINUX #include <sys/soundcard.h> -#define AUDIO_DEV "/dev/dsp" -#define MIXER_DEV "/dev/mixer" +#define AUDIO_DEV "/dev/dsp1" +#define MIXER_DEV "/dev/mixer1" #define MAXAMPGAIN 100 #define DEFAULT_FREQ 16 #endif /* LINUX */
条件が不十分。
diff -ur galatea-v3.0/SSM/make_mora.c galatea-v3.0.patched/SSM/make_mora.c --- galatea-v3.0/SSM/make_mora.c 2003-08-21 13:49:02.000000000 +0900 +++ galatea-v3.0.patched/SSM/make_mora.c 2012-04-22 08:05:58.314343887 +0900 @@ -138,10 +138,16 @@ { MORA *mora; + if(morph == NULL) { + return; + } + /* 、の後の 「 や 、の前の 」 では、ポーズを作らない。*/ - if( morph->hinshiID == H_KAKKO_HIRAKU && /* 「 など */ + if( morph->prev != NULL && + morph->hinshiID == H_KAKKO_HIRAKU && /* 「 など */ morph->prev->silence != NON ) return; - if( morph->hinshiID == H_KAKKO_TOJIRU && /* 」など */ + if( morph->next != NULL && + morph->hinshiID == H_KAKKO_TOJIRU && /* 」など */ morph->next->silence != NON ) return; mora = new_mora();
引数不整合。
diff -ur galatea-v3.0/SSM/mlpg.c galatea-v3.0.patched/SSM/mlpg.c --- galatea-v3.0/SSM/mlpg.c 2003-08-21 13:49:02.000000000 +0900 +++ galatea-v3.0.patched/SSM/mlpg.c 2012-04-20 22:00:19.258081645 +0900 @@ -171,7 +171,7 @@ void InitDWin(PStream *pst) { - double *dcalloc (int, int); + double *dcalloc (int); int str2darray (char *, double **); register int i, j; int fsize, leng; @@ -199,7 +199,7 @@ /* window for static parameter */ pst->dw.width[0][WLEFT] = pst->dw.width[0][WRIGHT] = 0; - pst->dw.coef[0] = dcalloc (1, 0); + pst->dw.coef[0] = dcalloc (1); pst->dw.coef[0][0] = 1; /* set delta coefficients */ @@ -225,7 +225,7 @@ fseek (fp, 0L, 0); /* read coefficients */ - pst->dw.coef[i] = dcalloc (fsize, 0); + pst->dw.coef[i] = dcalloc (fsize); freadf (pst->dw.coef[i], sizeof (**(pst->dw.coef)), fsize, fp); } @@ -250,7 +250,7 @@ } pst->dw.width[i][WLEFT] = -leng; pst->dw.width[i][WRIGHT] = leng; - pst->dw.coef[i] = dcalloc (leng*2 + 1, 0); + pst->dw.coef[i] = dcalloc (leng*2 + 1); pst->dw.coef[i] += leng; }
;
忘れ。
diff -ur galatea-v3.0/SSM/modify_parameter.c galatea-v3.0.patched/SSM/modify_parameter.c --- galatea-v3.0/SSM/modify_parameter.c 2003-08-21 13:49:02.000000000 +0900 +++ galatea-v3.0.patched/SSM/modify_parameter.c 2012-04-20 22:01:06.354082132 +0900 @@ -77,6 +77,7 @@ break; case TA_ABSSPEED: case TA_MORASEC: + ; } if(phoneme == last)break; phoneme = phoneme->next; diff -ur galatea-v3.0/SSM/morph.c galatea-v3.0.patched/SSM/morph.c --- galatea-v3.0/SSM/morph.c 2003-08-21 13:49:02.000000000 +0900 +++ galatea-v3.0.patched/SSM/morph.c 2012-04-20 22:01:57.917082654 +0900 @@ -349,6 +349,7 @@ break; default: /* ErrMsg( "Unknown option ... %s='%s'\n", attr, val ); */ + ; } /* if( strcmp("。",kanji)==0 ) break; */ } @@ -426,6 +427,7 @@ break; default: /* ErrMsg( "Unknown option ... %s='%s'\n", attr, val ); */ + ; } /* if( strcmp("。",kanji)==0 ) break; */ }
この辺もお好みで。インストール先などは要注意。
diff -ur galatea-v3.0/SSM/ssm.conf galatea-v3.0.patched/SSM/ssm.conf --- galatea-v3.0/SSM/ssm.conf 2003-08-21 14:26:59.000000000 +0900 +++ galatea-v3.0.patched/SSM/ssm.conf 2012-04-21 06:46:05.702406108 +0900 @@ -1,13 +1,13 @@ # configuratiuon file for gtalk (GalateaTalk) # path name of 'chasen' -CHASEN: /usr/local/chasen-2.3.3/bin/chasen +CHASEN: /usr/bin/chasen # configuration file for 'chasen' CHASEN-RC: ./chasenrc # command of running 'chaone' -CHAONE: /usr/local/bin/java -jar ../morph/chaone-1.1.0.jar +CHAONE: /usr/chaone/chaone --encoding EUC-JP # default for numbers and alphabets NUMBER: DECIMAL diff -ur galatea-v3.0/SSM/text.c galatea-v3.0.patched/SSM/text.c --- galatea-v3.0/SSM/text.c 2003-08-21 13:49:02.000000000 +0900 +++ galatea-v3.0.patched/SSM/text.c 2012-04-21 07:31:42.283434209 +0900 @@ -107,13 +107,13 @@ break; } else if( strncmp(line,"<S>",3)==0 ) { /* do nothing */ - } else if( strncmp(line,"<W ",3)==0 ) { + } else if( strncmp(line,"<cha:W ",7)==0 ) { p += parse_chasen_morph( line ); - } else if( strncmp(line,"<W1 ",4)==0 ) { + } else if( strncmp(line,"<cha:W1 ",8)==0 ) { p += parse_chasen_morph1( line ); - } else if( strncmp(line,"<W2 ",4)==0 ) { + } else if( strncmp(line,"<cha:W2 ",8)==0 ) { open_chasen_compound( line ); - } else if( strncmp(line,"</W2>",5)==0 ) { + } else if( strncmp(line,"</cha:W2>",9)==0 ) { close_chasen_compound(); } else { parse_tag( line, p );
Mikutter Plugin
で、Mikutter のプラグイン。あまりいいものじゃないが仕方ない。ちゃんと全部話してくれるし、mikutter 本体の制御も邪魔しない。でも、fork すると Gtk のインスタンスとかまでコピーしちゃうんだね。あまり悪い影響はないようだけど。