精华内容
下载资源
问答
  • 如何测试静音检测

    千次阅读 2014-04-14 21:35:17
    静音抑制的目的是从声音信号流里识别和消除长时间的静音期,以达到在不降低业务质量的情况下节省话路资源的作用,它是IP电话应用的重要组成部分。静音抑制可以节省宝贵的带宽资源,可以有利于减少用户感觉到的端到端...

    欢迎大家转载,为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也可以下载!如果你没有积分,可以联系我!

    SIP voip 测试交流群: 323827101



    1名词解释

    VAD静音抑制,又称语音活动侦测。静音抑制的目的是从声音信号流里识别和消除长时间的静音期,以达到在不降低业务质量的情况下节省话路资源的作用,它是IP电话应用的重要组成部分。静音抑制可以节省宝贵的带宽资源,可以有利于减少用户感觉到的端到端的时延。

     

    根据上面的定义可以理解为,当进行语音通讯时,如果终端开启了静音检测功能,当用户在一段时间内没有讲话时,终端会向外发送语音包或发送少量的包,节约带宽

     

    2场景定义

    在测试之前我们先定义下测试场景

     

    服务器是公网服务器,IP地址218.249.39.212,其中终端1007使用的是联通上网,15623722867使用的是公司内部WIFI。

    终端1007用语音呼叫终端15623722867之前,我们用tcpcump在服务器端先进行抓包然后再进行抓包语音呼叫完毕后,停止包,然后从服务器中下载抓取的包,在windows中用wireshark或Hammer工具进行分析。

     

     

    们分别用不开启静音检测功能与开启静音检测功能的两个包为例来分析!个包PTIME都100,速率为4.75kbit/s

    jingyin_100_4.75.pcap开启了静音检测功能进抓的包;

    null_jingyin.pcap有开启静音检测功能时抓的包;

    3过滤SIP呼叫与RTP媒体

    wireshark打开开启静音检测后抓的包jingyin100_4.75.pcap例来分析。

    怎样在服务器中众多的SIP包中过滤出我们指定的SIP呼叫流语音包呢?

    3.1过滤SIP呼叫流程

    根据SIP协议在呼叫过程CALL-ID的唯一性,我们先把客户主叫1007 INVITE请求中的CALL-ID记录下来,通过在服务器方法如下

    过滤的内容为sip.Call-ID == "421943381468"显示如下:

    Filter再过滤SIP包,查找服务器给15623722867发送INVITE请求所以Source地址一定是服务器218.249.39.212,且请求行为INVITE的找到后用上面同样的方法把CALL-ID拷贝出来至记事本中,过滤服务器到15623722867内容为sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da" 如下图:

    我们获得的两个CALL-ID其实就是此次呼叫的SIP流程

    们在wireshark容器输入这两个CALL-ID,过滤内容下:

    sip.Call-ID == "421943381468" || sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da"

    wireshark显示如下:


    我们通过以下方法可以看一下它的呼叫流程图


    下图上面直观的SIP呼叫流程图:


    目前为止,我们已经过滤出SIP呼叫的流程来了下面我们需要过滤出呼叫语音流。

    3.2过滤RTP语音

    首先我们先来了解下本次过滤信息SDP协议中的一些知识

    (SDP具体内容请参考:

    http://wenku.baidu.com/view/92e3e71714791711cc7917f7.html


    通过上图信息及SIP消息流程,们首先过滤下1007至服务器端的SIP呼叫,在wireshark容器中过滤CALL-ID,内容为:sip.Call-ID == "421943381468"”,如图所示:

    因1007是主叫,服务器中返回的200 OK的SDP中携带了服务器接收的媒体端口,上图中端口12650即为服务器1007将语音媒体流发送给服务器的端口号,我们将此端口号记录在记事本中;

    同样的,我们 过滤服务器至15623722867的SIP程,内容为sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da"这一次们过滤的不是15623722867返回200 OK而是服务器起的INVITE请求SDP携带接收的媒体端口号,服务端口39510接收15623722867来的语音媒体,如下图所示:


    此,可以过滤出此次呼叫的SIP呼叫流程及RTP流

    wireshark过滤信息内容为:

    sip.Call-ID == "421943381468" || sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da" ||udp.dstport == 39510 ||udp.dstport ==12650

     

     

    其实上面内容只是显示整个呼叫过程中的SIP呼叫流程及RTP流

    3.3静音检测分析步骤

    由于两端都开启了静音检测功能,我们只需要分析一端的RTP流就可

    们过滤15623722867服务器端的媒体流为例。

    wireshark中过滤udp.dstport == 39510

    然后我们进行分析操作如下:


     


    其中Delta(ms)代表此包与前一包的时间间隔通过上图可以看出,静音检测功能生效了。最大间隔718ms。我们设置的PTIME间隔100ms,比实际延迟了618ms.

    同样的方法测试没有开启静音检测功能的终端,Delta最大值为123.18ms。比实际延迟了23.18ms.下图。


    4总结

    通过以上进行分析,们设置的PTIME为100ms,当启用了静音检测功能后,发送间隔最大会有618ms,样在同样的单位时间内发送的包就会少一些,不启静音检测功能时,最大延时只有23.18ms通过对比发现静音检测功能生效了!

    展开全文
  • 但是随着时间的增长,单体应用的缺陷暴露出来了。 <ul><li>首先是代码量大大增加 从几千行到几十万行,接手的程序员已经无法搞清楚里面模块交互逻辑和依赖关系了。大家都在小心翼翼的加代码,避免...
  • 实例104 使用Timer组件显示当前系统时间 150 实例105 使用Timer组件制作左右飘动窗体 151 实例106 使用Timer组件实现奥运倒计时 152 3.8 ServiceController组件 154 实例107 使用ServiceController组件...
  • SpeechSynthesizerLongTextDemo :演示文本语音合成调用时,如何拆分文本功能 token获取(nls-example-token) TokenDemo : 演示token获取方式 SpeechTokenGeneratorDemo : 演示token定时获取方式 2019...
  • 时间编程与单元测试时间的简单风格时间格式化抓取年月日计算时间差时间函数计算时间差date小结python2与3的差异内置函数筛选内置函数map内置的函数sorted新浪数据抓取实时文档测试单元测试函数单元测试一个类day26&...
  • 按一次该键则显示下一个时间值,三个值循环显示,当按下“确认”键时,就选定当前显示值供系统使用,按“复位”键则清除该次时间的设定。 “会议电话”: 该键为召开电话会议的按键。电话会议设置用户1为主叫方,...
  • 70.计算机长时间检测内存 71.开机后内存重复检测 72.单条256MB内存条自检时只认出128MB 73.辨别SDRAM和DDR内存 74.内存接触不良导致无法开机 75.“金手指”氧化导致无法开机 76.内存不兼容导致系统识别内存错误 77....
  • Android 开发技巧

    热门讨论 2012-03-26 10:24:42
    4.14.2、长时间显示 128 4.15、对话框 128 4.15.1、简单对话框: 128 4.15.2、包含两个按钮对话框 128 4.15.3、三个按钮提示框 129 4.15.4、包含输入dlg 131 4.15.5、圆形进度框 133 4.15.6、AlertDialog....
  • 13.2.1 获得发送和接收短消息许可权限 301 13.2.2 发送短消息 301 13.2.3 接收短消息 303 13.3 拨打电话 305 小结 307 参考资料和更多信息 307 第14章 通过OpenGL ES使用Android 3D图形 308 14.1 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 实例247 查询指定时间数据 实例248 按月查询数据 9.5 大小比较、逻辑查询、重复记录查询 实例249 查询数据大于指定条件数据 实例250 NOT与谓词进行组合条件查询 实例251 查询时不显示重复记录 9.6 ...
  • 基于程序在运行时不需要一开始都装入内存(局部性原理),更不应该把最近较一段时间内不用程序装入内存。 (2)页表作用是将逻辑页号转换为物理块号。 (3)页面淘汰算法 先进先出算法(FIFO)...
  •  cc实例247 查询指定时间数据   cc实例248 按月查询数据   9.5 大小比较.c逻辑查询.c重复记录查询   cc实例249 查询数据大于指定条件数据   cc实例250 NOT与谓词进行组合条件查询   cc实例...
  •  cc实例247 查询指定时间数据   cc实例248 按月查询数据   9.5 大小比较.c逻辑查询.c重复记录查询   cc实例249 查询数据大于指定条件数据   cc实例250 NOT与谓词进行组合条件查询   cc实例...
  • cc实例243 如何随机显示记录 9.3 查询前若干名数据 cc实例244 查询前10名数据 cc实例245 取出数据统计结果前3名数据 9.4 周期.c日期查询 cc实例246 查询指定日期数据 cc实例247 查询指定时间数据...
  • cc实例243 如何随机显示记录 9.3 查询前若干名数据 cc实例244 查询前10名数据 cc实例245 取出数据统计结果前3名数据 9.4 周期.c日期查询 cc实例246 查询指定日期数据 cc实例247 查询指定时间数据...
  • (4) 整理 (2) and (3) 可发现, 问题都出在 ACK 交握的时间点是否能在“传送端”等待时间之内, 这是因为 Windows 内建 TCPIP 驱动器, 没有“封包优先权”设计, 造成“上传满档压死下载”奇特现象. cFos / ...
  • 实例125 显示日期格式时间 200 实例126 限制文本框中输入字符长度 201 实例127 制作一个简单加法运算器 202 实例128 显示金额格式文本 203 5.2 按钮类型控件 205 实例129 带图像登录按钮(ImageButton按钮) ...
  • 实例125 显示日期格式时间 200 实例126 限制文本框中输入字符长度 201 实例127 制作一个简单加法运算器 202 实例128 显示金额格式文本 203 5.2 按钮类型控件 205 实例129 带图像登录按钮(ImageButton按钮) ...
  • 实例125 显示日期格式时间 200 实例126 限制文本框中输入字符长度 201 实例127 制作一个简单加法运算器 202 实例128 显示金额格式文本 203 5.2 按钮类型控件 205 实例129 带图像登录按钮(ImageButton按钮) ...
  • 实例065 只输出日期时间型数据日期部分 129 实例066 在不同数据环境中进行日期查询 129 3.8 大小比较、逻辑查询 131 实例067 查询数据大于指定条件数据 131 实例068 NOT与谓词进行组合条件查询 133 实例...
  • 实例065 只输出日期时间型数据日期部分 129 实例066 在不同数据环境中进行日期查询 129 3.8 大小比较、逻辑查询 131 实例067 查询数据大于指定条件数据 131 实例068 NOT与谓词进行组合条件查询 133 实例...
  • :关于上述设置,多长时间鸣叫一次。 Output :选中 Compression 或 AGC 才能使用。默认是增益是 0db ,相当于什么都没做。 Total :全部增益控制,默认是 0db 。 (最大 +-12db ) ...
  • C#.net_经典编程例子400个

    热门讨论 2013-05-17 09:25:30
    329 实例238 列出系统中打印机 330 7.12 其他 332 实例239 两种信息发送方式 332 实例240 功能快捷键 336 第8章 注册表 339 8.1 操作注册表 340 实例241 怎样存取注册表信息 ...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

如何发送长时间的语音