我正在使用一个Kaldi-Gstreamer-Server库,它使用 python gstreamer 绑定,用于实时语音识别应用程序。该库使用onlinegmmdecodefaster gstreamer 元素(包含在 Kaldi 库中)以及其他元素(decodedbin、audioconvert...)来接受音频并将其转录为 text 。该库要求在向服务器发送请求时,使用 GStreamer 1.0 大写格式指定内容类型查询参数并编码到请求 URL。
当通过将内容类型设置为一切正常并将原始音频发送到服务器时audio/x-raw,format=S16LE,channels=2,layout=interleaved
,我从服务器获取转录文本。但是,为了低延迟,我正在尝试使用 opus 编码器对音频进行编码并发送到服务器。我将 content-type 请求参数设置为opusdec元素 pad 的 caps 格式,如下所示:
audio/x-opus, channel-mapping-family=(int)[ 1, 255 ], channels=(int)[1, 255 ], stream-count=(int)[ 1, 255 ], coupled-count=(int)[ 0, 255 ]
但是,当 gstreamer 尝试使用上述功能时,出现以下错误:
2017-03-15 13:53:26 - 信息:解码器 2:0578f66f-8474-48db-996b-ce401ed5c034:将上限设置为音频/x-opus,通道映射系列 =(int)[1, 255],通道=(int)[ 1, 255 ], 流计数=(int)[ 1, 255 ], 耦合计数=(int)[ 0, 255 ]
(python:1145):GStreamer-CRITICAL **:gst_event_new_caps:断言'gst_caps_is_fixed(caps)'失败
(python:1145):GStreamer-CRITICAL **:gst_pad_push_event:断言'GST_IS_EVENT(事件)'失败2017-03-15 13:53:27 - 错误:解码器2:(GLib.Error('内部数据流错误。', 'gst-stream-error-quark', 1), 'gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstAppSrc:appsrc:\n流任务暂停,原因未协商 (-4)') 2017 -03-15 13:53:27 - 信息:解码器2:0578f66f-8474-48db-996b-ce401ed5c034:重置解码器状态
(python:1145):GStreamer-CRITICAL **:gst_event_new_caps:断言'gst_caps_is_fixed(caps)'失败
(python:1145):GStreamer-CRITICAL **:gst_pad_push_event:断言'GST_IS_EVENT(事件)'失败
(python:1145):GStreamer-CRITICAL **:gst_event_new_caps:断言'gst_caps_is_fixed(caps)'失败
(python:1145):GStreamer-CRITICAL **:gst_pad_push_event:断言'GST_IS_EVENT(事件)'失败2017-03-15 13:53:27 - 错误:解码器2:(GLib.Error('内部数据流错误。', 'gst-stream-error-quark', 1), 'gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstAppSrc:appsrc:\n流式传输任务暂停,原因未协商 (-4)')
此错误的原因可能是什么?我该如何解决这个问题,以便我可以将 opus 编码的音频数据发送到服务器?