[Julius Web page]
[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[julius-u:00131] Patch for 3.3p4


坂野@名古屋大です.

Julius 3.3p4のバグを修正しましたので報告させて頂きます.

#Julius for Windowsと,Juliuslibの3.3p4対応版ももうすぐ
正式リリースします.お待ちの方は(いるんだろうか?),
いましばらくお待ち下さい.

----
現象:
 RealtimeParam (realtime-1stpass.c) の中の
 get_back_trellis_proceed (beam.c) の
 最初の for ループの

 /* tk: token data  node: lexicon tree node ID that holds the 'tk' */
 tk = &(tlist[tl][tindex[tl][j]]);

 の部分で落ちる。特に長時間Juliusを実行した場合に発生しやすい。


原因:
 RealTimePipeLineのf_raw が f_delayよりも小さいときに
 get_back_trellis_initが実行されていない。


原因詳細:

1. f_rawがf_delayに達しないうちに、以下の所で
   関数 RealTimePipeLine (realtime-1stpass.c) が終了してしまう。

    if (windownum < windowlen) break; /* shortage or last */

2. すると、get_back_trellis_initが実行されないうちに
   get_back_trellis_proceedが実行される。

3. これにより、get_back_trellis_initで確保されるはずのtlistとかtindexの
  メモリーが確保されない状態でアクセスされてしまう。


解決方法:
 patch参照。

--------
diff -Ncr julius-free-3.3p4/julius/realtime-1stpass.c julius-free-3.3p4-2/julius/realtime-1stpass.c
*** julius-free-3.3p4/julius/realtime-1stpass.c	Thu Nov  7 01:56:41 2002
--- julius-free-3.3p4-2/julius/realtime-1stpass.c	Tue Jun 17 18:57:03 2003
***************
*** 194,203 ****
    }
  
    while (now < nowlen) {	/* till whole input is processed */
      /* fill as many as possible */
      for(i = min(windowlen - windownum, nowlen - now); i > 0 ; i--)
        window[windownum++] = (float) Speech[now++];
!     if (windownum < windowlen) break; /* shortage or last */
  #ifdef RDEBUG
      /*    printf("%d used, %d rest\n", now, nowlen - now);
  
--- 194,205 ----
    }
  
    while (now < nowlen) {	/* till whole input is processed */
+     if (f_raw >= maxframelen) return(1);
+       
      /* fill as many as possible */
      for(i = min(windowlen - windownum, nowlen - now); i > 0 ; i--)
        window[windownum++] = (float) Speech[now++];
!     if (windownum < windowlen) return(1); /* shortage or last */
  #ifdef RDEBUG
      /*    printf("%d used, %d rest\n", now, nowlen - now);
  

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: