ROS pocketsphinx + gstreamer记录wav文件的话语

时间:2015-03-02 22:01:34

标签: python ros pocketsphinx

我正在开发一个对话系统,我需要输入ASR结果以及相应的音频文件作为输入。 我在Ubuntu 14.04上使用ROS indigo并编辑recognizer.py (http://docs.ros.org/indigo/api/pocketsphinx/html/recognizer_8py_source.html) 为了接收来自ASR的文本和每个识别的话语的音频文件。 我将gst管道更改为:

    self.launch_config += " ! audioconvert ! audioresample  ! tee name=t ! queue ! audioresample " \
                        + '! vader name=vad auto-threshold=true ' \
                        + '! pocketsphinx name=asr ! fakesink dump=1 t. ! valve drop=0 ! queue ! wavenc ! filesink location=test.wav async=0' 

但我设法做的是记录所有音频信号,直到识别器停止(例如^ C)。 此外我尝试使用

之后

self.pipeline.set_property('rawlogdir','folder_name /')第101行

但似乎GstPipeline没有属性`rawlogdir'

我需要的是使用ROS pocketsphinx节点获取音频处理(情感识别)所需的识别话语的音频信号。

任何想法都会非常有用!

1 个答案:

答案 0 :(得分:0)

您可以使用“vader”插件获取以.raw格式检测到的音频。

只需将这些行添加到您的代码中

即可
self.vader = self.pipeline.get_by_name('vad')
self.vader.set_property('dump-dir', audio_dir )

和'audio_dir'是您要保存文件的位置。要播放音频,请记住pocketphinx使用8kHz的16位PCM音频。

有关GStreamer插件的更多信息,请使用

$ gst-inspect-0.10 pocketsphinx
$ gst-inspect-0.10 vader