2004年7月23日

[julius-u:00178] ノイズスペクトルファイルの作成コマンドについて

バーズ情報科学研究所の大野と申します。初めて投稿させていただきます。

現在、Vine Linux 2.6r3 (2.4.22-0vl2.14) および Windows2000 にて
Julius rev.3.4.2 を試させていただいております。
ノイズスペクトルファイルの作成コマンド mkss が SIGSEGV でアボートして
動作しないのですが、アボートする原因は、costbl_hamming の値が未設定で
あるためのようです。
# 以下に、デバッガでの確認内容を掲載します。

[ohno@xxxxx mkss]$ gdb ./mkss

GNU gdb 5.0
.........中略.........
Breakpoint 3, Hamming (wave=0x0, framesize=-1073744340)
at src/wav2mfcc/wav2mfcc.c:277
277 {
.........中略.........
(gdb) n
281 wave[i] *= costbl_hamming[i-1];
(gdb) p costbl_hamming[0]
Cannot access memory at address 0x0
(gdb) p costbl_hamming
$24 = (double *) 0x0
(gdb) n

Program received signal SIGSEGV, Segmentation fault.
0x08049d48 in Hamming (wave=0x8065380, framesize=400)
at src/wav2mfcc/wav2mfcc.c:281
281 wave[i] *= costbl_hamming[i-1];
(gdb) q
The program is running. Exit anyway? (y or n) y
[ohno@xxxxx mkss]$

ソースコードを斜めに見る限りでは、mkss.c にて、new_SS_calculate() を
呼び出す直前に InitFBank() を呼び出しておくことで、暫定的に問題を回避
できるようです。
ただ理解が足らないため、このような修正でよいのか確信が持てないので、
開発者の意見をお聞かせください。
# 以下に上記の修正差分を掲載します。

[ohno@xxxxx mkss]$ diff -c /usr/local/src/julius-3.4.2/mkss/mkss.c ./mkss.c
*** /usr/local/src/julius-3.4.2/mkss/mkss.c 2004-07-14 13:26:11.000000000 +0
900
--- ./mkss.c 2004-07-21 11:27:56.000000000 +0900
***************
*** 142,147 ****
--- 142,151 ----
para.framesize = fsize;
para.frameshift = fshift;
para.preEmph = DEF_PREENPH;
+
+ /* patch (costbl_hamming is refered in Hamming()) */
+ InitFBank(para);
+
ss = new_SS_calculate(speech, samples, para, &sslen);

/* open file for recording */
[ohno@xxxxx mkss]$

また、当方の環境では、上記の修正後も SIGSEGV が発生する要因が残って
いるようです。ただし、たまに SIGSEGV が発生することなくノイズスペク
トルファイルの作成が出来ることもあります。
# Windows版は、上記の修正で一応は動作するようになっております。
こちらのほうは、今のところ原因がはっきりしておりません。
参考のために、MALLOC_CHECK_=1 とした場合の実行内容を掲載しておきます。

[ohno@xxxxx mkss]$ MALLOC_CHECK_=1
[ohno@xxxxx mkss]$ export MALLOC_CHECK_
[ohno@xxxxx mkss]$ ./mkss filename01
fragment size = 1024 bytes (32 msec)
malloc: using debugging hooks
recording 3.00 second...48000 samples (96000 bytes, 3.0 sec) recorded
compute SS:
fsize : 400 samples (25.0 msec)
fshift: 160 samples (10.0 msec)
malloc: top chunk is corrupt
Segmentation fault (core dumped)
[ohno@xxxxx mkss]$

以上、よろしくお願いいたします。
-------------------------------------------------
(株)バーズ情報科学研究所 ネットワーク事業部
大野 朋也 <ono@xxxxx>

投稿者 xml-rpc : 2004年7月23日 11:16
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/3814
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。