通过esl来检测回铃音

用到的模块主要模块是mod_spandsp, 该模块是freeswitch默认安装的。打开配置文件conf/autoload_configs/spandsp.conf.xml,添加如下内容

<!-- china -->

    <descriptor name="cn">

        <tone name="RING_TONE" description="China ring">

            <element freq1="450" freq2="0" min="900" max="1100"/>

            <element freq1="0" freq2="0" min="900" max="4100"/>

        </tone>

        <tone name="BUSY_TONE">

            <element freq1="450" freq2="0" min="300" max="400"/>

            <element freq1="0" freq2="0" min="300" max="400"/>

            <element freq1="450" freq2="0" min="300" max="400"/>

            <element freq1="0" freq2="0" min="300" max="400"/>

            <element freq1="450" freq2="0" min="300" max="400"/>

            <element freq1="0" freq2="0" min="300" max="400"/>

      </tone>

    </descriptor>

其中 RING_TONE 就是回铃音,BUSY_TONE是忙音;

我们知道中国电话信号音是:

拨号音 450±25 -10±3dBm0 <10% 连续信号音

回铃音 450±25 -10±3dBm0 <10% 1S(H)/4S(L)         频率450   1秒通 4秒停

忙音 450±25 -10±3dBm0 <10% 0.35S(H)/0.35S(L)   频率450   0.35秒通  0.35秒停

拥塞音 450±25 -10±3dBm0 <10% 0.7S(H)/0.7S(L)

我们回头看 RING_TONE 的配置,其实就是实现了 “频率450   1秒通 4秒停”  只不过 min和 max 为了网络延迟和信号差做了前后100毫秒的调整。

在esl 的 CHANNEL_PROGRESS_MEDIA 的事件中,调用 spandsp_start_tone_detect uuid  cn ,uuid为通道的uuid,cn为刚才配置文件的descriptor name,如果检测成功 会产生 DETECTED_TONE 事件,header中的 Detected-Tone 会包含配置的检测出来的 tone名称,比如RING_TONE 或者BUSY_TONE。

有一点需要注意,如果对方手机设置了彩铃,检测回铃音则会失效。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 源站:http://fengyuanchen.github.io/viewer/ 应用: html: 源码上是正常...
    羊绘霖阅读 10,889评论 0 2
  • 成功者的八点炒股心得: 1、不熟不做,只做自己熟悉的股票。2、集中资金,只做一只或者二至三只股票(根据自身资金大小...
    柳闲居士阅读 2,675评论 0 0
  • 老师讲明白,学生听明白,学生会做题学生能得分。 家长会聊学科方面的内容,然后再聊一些学习状态。学生的做题习惯。学生...
    放牛的小孩阅读 2,801评论 0 0
  • 好习惯五件事今日完成: 1.早起5:10起床; 2.对镜子,家人,他人微笑; 3.滚背77下; 4.跪坐30分钟;...
    陈惠Cherry阅读 1,801评论 1 2

友情链接更多精彩内容