当与T恤一起使用时,带有VADER元件的gstreamer管道在PAUSE上停止

时间:2013-10-21 20:41:05

标签: gstreamer cmusphinx

我有这个使用pocketsphinx的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 " + // level interval is in nanoseconds 
              "! wavenc " +
              "! filesink location=audioz.wav"
            );

它工作正常,只是当没有语音传入时流式传输停止 资源。

我想录制以独立于VAD继续录制, 所以我用发球台尝试了这个管道:

            Gst.parse_launch(
              "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " +
              "! tee name=t " +
              "! queue " +
              "! vader name=vad auto-threshold=true " +
              "! fakesink t. sync=false" +
              "! queue " +
              "! level name=wavelevel interval=100000000 " + // level interval is in nanoseconds 
              "! wavenc " +
              "! filesink location=audioz.wav"
            );

这个总是停滞不前,状态从NULL开始 - >准备 - >暂停, 并在PAUSE上永远停止。

“独立VAD”的目标只是记录开始和结束时间 语音段(由VAD检测)。

更新:

评论该行:“!fakesink t.sync = false” 解决了这个问题,因此以下管道可以满足我的需求:

            this.pipeline = Gst.parse_launch(
              "pulsesrc device=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " +
              " ! tee name=t" +
              " t. ! queue " +
              " ! vader name=vad auto-threshold=true " +              
              " t. ! queue " +
              " ! level name=wavelevel interval=1000000000 " + // level interval is in nanoseconds 
              " ! wavenc " +
              " ! filesink location=audioz.wav"
            );

剩下的问题是如果没有接收器的队列是可以的......

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是在两个接收器上设置async = 0。 (fakesink和filesink)