私は、ポケットフィンクスの VAD 要素を使用するこのパイプラインを持っています:
Gst.parse_launch( "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + "! vader name=vad auto-threshold=true " + "! level name=wavelevel interval=100000000 " + // レベル間隔はナノ秒 "! wavenc " + "! filesink location=audioz.wav" );
ソースに音声が入っていないときにストリーミングが停止することを除けば、問題なく動作します。
VAD とは独立してレコーディングを継続したいので、このパイプラインを tee で試しました。
Gst.parse_launch( "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + "! tee name=t " + "! キュー " + "! vader name=vad auto-threshold=true " + "! fakesink t.sync=false" + "! キュー " + "! level name=wavelevel interval=100000000 " + // レベル間隔はナノ秒 "! wavenc " + "! filesink location=audioz.wav" );
そして、これは常に失速し、状態は NULL -> READY -> PAUSE に移行し、PAUSE で永久に失速します。
「独立した VAD」の目的は、(VAD によって検出された) 音声セグメントの開始時刻と終了時刻を記録することだけです。
アップデート :
行にコメントを付ける: "! fakesink t. sync=false" は問題を解決するので、次のパイプラインが必要なことを行います:
this.pipeline = Gst.parse_launch( "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + " ! ティー名=t" + " t.! キュー " + " ! vader name=vad auto-threshold=true " + " t.! キュー " + " ! level name=wavelevel interval=1000000000 " + // レベル間隔はナノ秒単位 " ! wavenc " + " ! filesink location=audioz.wav" );
残りの問題は、シンクなしでキューを使用してもよいかどうかです...