【发布时间】:2013-10-22 20:41:04
【问题描述】:
我有这个使用 pocketsphinx 的 VAD 元素的管道:
Gst.parse_launch( "pulsesrc 设备=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + "! vader 名称=vad 自动阈值=true" + "!level name=wavelevel interval=100000000 " + // 级别间隔以纳秒为单位 "!wavenc" + “!文件接收器位置=audioz.wav” );它工作正常,只是在没有声音进入时流式传输停止 资源。
我想独立于 VAD 继续录制, 所以我用三通尝试了这条管道:
Gst.parse_launch( "pulsesrc 设备=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + “!三通名称=t”+ "!队列" + "! vader 名称=vad 自动阈值=true" + "! fakesink t.sync=false" + "!队列" + "!level name=wavelevel interval=100000000 " + // 级别间隔以纳秒为单位 "!wavenc" + “!文件接收器位置=audioz.wav” );而且这个总是停顿,状态从 NULL -> READY -> PAUSE, 并在 PAUSE 中永远停滞不前。
“独立VAD”的目标只是记录开始和结束时间 语音段数(由 VAD 检测)。
更新:
评论该行:“! fakesink t.sync=false” 解决了这个问题,所以下面的管道可以满足我的需要:
this.pipeline = Gst.parse_launch( "pulsesrc 设备=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + " ! 三通名称=t" + " t. ! 队列 " + " ! vader 名称=vad 自动阈值=true " + " t. ! 队列 " + " !level name=wavelevel interval=1000000000 " + // 级别间隔以纳秒为单位 " !wavenc " + “!文件接收器位置=audioz.wav” );剩下的问题是没有接收器的队列是否可以...
【问题讨论】:
-
修改 vader 本身(为其添加属性)以绕过音频可能更容易,即使它是无声的。