Reply To: streamの遅延時間について part2

HARK FORUM streamの遅延時間について part2 Reply To: streamの遅延時間について part2

#849

お問い合わせ、ありがとうございます。

まず、マイクへの入力から分離音が得られるまでの応答速度改善が主目的のようでしたので
分離音(正確には定位区間)の前後に無音区間が入る理由から説明させて頂きます。

前方の無音区間は、SourceIntervalExtenderノードのPREROLL_LENGTHパラメータの影響です。
https://www.hark.jp/document/hark-document-ja/subsec-SourceIntervalExtender.html
[ノードの詳細]の項に記載しているように、定位区間を遡って設定するための機能ですので
前方フレームのバッファからデータを得る必要があるためノードの処理は遅延します。
SourceTrackerノードで設定するTHRESHより大きなパワーが検出されたフレームから定位開始
となりますので暗騒音(環境音)が少なくTHRESHが充分に低く設定できる環境では無音となります。
初期値として500ms(50frame)を設定していますが、音声の頭が切れない範囲で小さな値を
設定して頂くことに問題は無いかと思われます。
注)音声認識エンジンによっては発話区間の前に僅かな無音区間が必要な場合があります。

後方の無音区間は、SourceTrackerノードのPAUSE_LENGTHパラメータの影響です。
https://www.hark.jp/document/hark-document-ja/subsec-SourceTracker.html
PAUSE_LENGTHパラメータの説明に記載しているように、音源が失われてからも生存期間を
超えるまで定位を延長します。本機能は、発話中の句読点にあたる位置や息継ぎなどで
一時的に発生する無音区間(ショートポーズと言われる)で定位区間が分割されることを
防ぐという目的があります。
初期値として800[1/10frames]=800ms(80frames)を設定していますが、この値を小さく
設定する事で発話終了後の無音区間を減らすことが可能です。長文を読み上げた際にも、
意図しない位置で定位が分割されない範囲で減らして頂くことは問題無いと思われます。
遅延量は減りませんが、定位区間の終了が早くなる(出力するフレーム数が減る)事で
入力に対しての応答時間も改善されるものと思われます。

上記の2パラメータと無関係に無音区間が頻繁に定位するような状況でしたら、
SourceTrackerノードのTHRESHパラメータが低すぎる可能性が御座います。
定位区間が希望通りに得られれば外部VADのオーバヘッドも不要となる事が期待されます。

——————–

次に下記のご質問内容についてです。
> 実時間処理をしない方法はないのでしょうか。
マイク入力のようにリアルタイム入力ではなく音声ファイル(WAVファイル等)の入力のみを
想定して高速に処理出来るか否かというご質問でしたら可能です。
内部ではstream処理を行いますが、入力待ち時間無しで処理を行うため高速に処理されます。
AudioStreamFromWaveノードのUSE_WAITパラメータをfalseに設定します。
USE_WAITパラメータでtrueを設定した場合、AudioStreamFromWaveのファイル入力でも
AudioStreamFromMicの実時間動作をシミュレーションします。この機能を無効にします。

——————–

定位の精度について書かれていましたが、下記についてご確認ください。
LocalizeMUSICノードのWINDOWパラメータを変更する際、PERIODパラメータも同じ値に
変更されていますでしょうか。
WINDOWが処理する単位、PERIODが処理する間隔と考えた場合に分かりやすいのですが
PERIODが50の設定のままWINDOWだけ20に設定すると検出しない区間が発生するので、
定位精度が大幅に悪化する可能性があります。
特殊な用途を除いて基本的には WINDOW >= PERIOD となるようにご設定ください。
注)PERIODを下げるほど計算量が増えますので計算が実時間内に終わらなくなり、
かえって応答性能が悪くなる場合があります。下げすぎにはご注意ください。

——————–

最後に、SourceIntervalExtenderとLocalizeMUSICの両方で遅延が起きているか否か
については、バッファによる遅延以外(計算量の差による)の可能性も考えられますが
もう一つの可能性として下記が考えられます。
LocalizeMUSICノードのWINDOW_TYPEパラメータがFUTUREになっていないでしょうか。
https://www.hark.jp/document/hark-document-ja/subsec-LocalizeMUSIC.html

HARKはソースコードを全て公開しておりますので、お時間のある時にソースコードを
読んで頂くと具体的な挙動などを含め理解の助けになるかもしれません。

以上、宜しくお願い致します。