0

私は、ポケットフィンクスの 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"
            );

残りの問題は、シンクなしでキューを使用してもよいかどうかです...

4

1 に答える 1

1

最も簡単な解決策は、両方のシンクで async=0 を設定することです。(フェイクシンクとファイルシンク)

于 2013-10-22T07:11:34.077 に答える