特定の長さの日本語文書を音声合成しようとするとsegvで落ちるときがある。
ある程度の長さの日本語文書を音声合成しようとするとcoreを吐いて落ちるときがありました。
原因は、音声のサンプル数を求めるときの計算順序のようでした。
サンプル数の計算順序を変更することでcoreを吐かなくなりましたので報告いたします。
以下がパッチとなります。
$ diff -u ../../galateatalk{.bkup,}/gtalk/do_synthesis.c --- ../../galateatalk.bkup/gtalk/do_synthesis.c 2006-10-19 12:27:08.000000000 +0900 +++ ../../galateatalk/gtalk/do_synthesis.c 2009-06-14 13:05:16.000000000 +0900 @@ -43,7 +43,7 @@ totalframe -= shift_end; wave.rate = SAMPLE_RATE; - wave.nsample = SAMPLE_RATE * FRAME_RATE * (totalframe - shift_start) / 1000; + wave.nsample = (SAMPLE_RATE / 1000) * FRAME_RATE * (totalframe - shift_start); if ((wave.data = (short *) calloc (wave.nsample, sizeof (short))) == NULL) {
ある程度の長さの日本語文書を音声合成しようとするとcoreを吐いて落ちるときがありました。
原因は、音声のサンプル数を求めるときの計算順序のようでした。
サンプル数の計算順序を変更することでcoreを吐かなくなりましたので報告いたします。
以下がパッチとなります。
よろしくお願いします。