freeswitch关于语音识别有detect_speech和play_and_detect_speech 2个模块怎么区分这两个模块的用途呢我是这样理解的做机器人人机交互的时候首先play_and_detect_speech因为可控制的参数还蛮多的尤其在需要打断的时候做双通道语音识别就使用detect_speech。官方wikiplay_and_detect_speechhttps://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod-dptools/6586714/#luadetect_speechmod_dptools: detect_speech | FreeSWITCH Documentation从文档可以看出detect_speech的介绍相比play_and_detect_speech就偷懒了一些并没有那么详细。本文介绍detect_speech mrcp做实时语音识别场景如下A是呼叫平台B是freeswitch网关C是线路用户如何针对呼叫平台A做双向语音识别呢如果呼叫平台A也是基于freeswitch开发的当然可以直接在a上面使用detect_speech实现如果平台A不是基于freeswitch开发的那就在A的必经之路上面加入一个freeswitch网关B在网关B上面使用detect_speech实现坐席和用户的双向语音识别。语音识别需要用到asr连接asr采用mrcp来实现。采用esl获取detect_speech的事件相比play_and_detect_speech来说要复杂一些这部分我倒不太熟不过采用lua的话可以使用 session:setInputCallback(onInput,)回调函数来获取结果倒是方便很多。获取结果后拼接结果将结果通过http接口传给后端应用剩下的就由后端流程去处理做实时质检、实时辅助等等功能了效果如下以上语音识别呢是基于句子的语音识别因为使用的是mrcp默认是没有中间结果还有一种方案是获取freeswitch的语音流通过udp或其他方式实时推送给asr这种方式可以实现基于每个字的实时识别但是实现方式来说需要基于freeswitch做二次开发了复杂一些而采用detect_speech呢就是纯粹使用freeswitch提供的app来实现不涉及freeswitch源码的改造。如需更多帮助可私聊