• 通过顶顶通呼叫中心中间件玩转FreeSWITCH媒体流


    怎么获取FreeSWITCH的媒体流是一个老生常谈的问题了,最常见的方法media_bug,我在2019年就做的FreeSWITCH对接ASR开源的例子https://gitcode.net/iyaosan/FreeSWITCH-ASR用的就是media_bug,对接ASR常见的方法还有通过mod_mrcp模块对接mrcp的asrserver。

    很多人需要直接获取原始的声音流,然后自己处理,其实FreeSWITCH也是支持的,只是知道的极少,FreeSWITCH原生支持 unicast 通过udp 把声音流推送到一个UDP端口,和播放网络的声音流。 fs实现的unicast,有一个缺陷如果启动了unicast 就没办法调用playback等放音函数了。

    通过顶顶通呼叫中心中间件提供的 cti_unicast 则没这个缺点。可以不影响fs本身所有的功能情况下把媒体流推送到 远端udp端口,和播放网络声音。

    cti_unicast 通过media_bug挂了2个回调SMBF_READ_STREAM和SMBF_WRITE_REPLACE,其中 SMBF_READ_STREAM,用来把媒体流推送到远端UDP端口,SMBF_READ_STREAM用来把远端发送来的声音混音到fs的放音。从而实现了完全不影响fs自身功能的前提下,实现推流和播放流。

    顶顶通呼叫中心中间件还提供了tcp的推流和播放流函数 cti_audiao_stream。

    这2个函数可以通过拨号方案启动,也可以通过 freeswitch esl 接口调用。

    还有websocekt协议的播放流函数 wss://ip/tts?text=文字 可用于对接实时TTS。

    顶顶通呼叫中心中间件ASR接口更高级的2个函数是
    uuid_cti_start_detect_speech
    用于质检 ,检测到说话实时推流给ASR,支持weboscket,mrcp等多种协议。用户说话停止自动停止推流。
    cti_play_and_detect_speech
    用于电话机器人,放音的时候检测用户说话,检测到说话实时推流给ASR,支持weboscket,mrcp等多种协议。支持多种打断模式,比如检测到人声打断,识别到多少文字打断。

    详细可以看 http://www.ddrj.com/callcenter/asr.html

  • 相关阅读:
    Stable Diffusion 2.0 来了
    numpy生成数组
    CISP考试大纲/范围
    管理类全系书单,速速码住(50本书籍全部附送!)
    STL教程6-deque、stack、queue、list容器
    Qt下SVG格式图片应用
    ApiFox衔接前后端开发人员,提升沟通效率实践
    【Django中运行scrapy框架,并将数据存入数据库】
    Mysql中事件和定时任务
    C语言天花板——指针(初阶)
  • 原文地址:https://blog.csdn.net/iyaosan/article/details/134361698