一种检测语音流的方法和装置的制作方法

文档序号:7654687阅读:149来源:国知局
专利名称:一种检测语音流的方法和装置的制作方法
技术领域
本发明涉及网络通信技术,特别涉及一种检测语音流的方法和装置。

背景技术
随着网络的普及,互联网协议传输语音(VoIPVoice over Internet Protocol)技术也在飞速发展,VoIP技术是基于IP的语音传输技术,利用相应的语音编码算法将语音数字化,并将编码后的数据进行打包,通过IP网传到目的地,然后目的端经过解码还原,获得语音。
目前常用的音频编码方式主要是G.729,G.723.1,GSM三种。G.729与G.723.1是国际通信联盟传输组织(ITU-TInternational TelecommunicationUnion-Transmission)制定的适用于IP电话语音编码,因为其高质量,低码率而得到广泛应用。其中,G.729其编码速率为8kbps,G.723.1是双速率语音编码,它可以编码成5.3kbps和6.3kbps两种速率;而全球移动通信系统(GSMGlobal System for Mobile Communications)编码采用主观加权最小均方误差准则,从而逼近原始语音波形,具有较好的自然度,并且对噪声级多人讲话环境不敏感,它采用长时预测、对数面积比量化等措施,使其工作在13kbps速率上得到相当好的合成语音质量。
这三种编码方式都是帧编码方式,即编码后的语音流以一小段帧的形式存在,每一小段都表示一定时间的语音,并以帧为单位进行传播和解码,比如每秒100帧即每帧代表10ms的通话。
下表对三种音频编码方式的比较 然而伴随着VoIP技术的发展,大量的虚拟运营商利用VoIP技术在互联网上私自进行电话运营,从中牟取暴利,对电信运营商的固话业务产生了巨大的冲击,特别是对国内、国际长途业务造成巨大的冲击。同时,因为私自的地下运营缺少有效的监管,也使得大量的犯罪分子可以通过这样的私营电话进行交流从而可以完全不受监管,给社会治安造成严重的危害。因此对这种私营VoIP电话的行为进行监管已经成为了亟待解决的问题。
目前,运营商已经通过多种策略对私营VoIP的虚拟运营商进行打击,包括封这些虚拟运营商服务器的IP、对VoIP流进行干扰等。其中,封IP是最为行之有效的手段,然而如何从网络流量中分析和判断出哪些是VoIP数据流就显得极其重要了。
如图1所示,现有检测语音流的示意图中,首先需要全流量的获取网A和网B之间的数据流,对获取的语音流进行分析,根据数据流中的数据包的特征值来判断是什么类型的数据包,才能进一步确定是VoIP语音流还是其它数据流。比如若抓到的数据包的UDP负载以8012开始,序列号和时间戳位置的特点也符合G.729编码方式,就认为此数据包是VoIP语音包。
但是现在绝大部分的虚拟运营商都采用私有VoIP协议,修改了数据包的特征,并且有很多公司从事私有VoIP协议的开发,这其中没有一个统一的特征和标准,因此靠数据包特征进行判断的方式已经不能准确检测出语音流了。
综上所述,通过数据包片特征检测语音流的方法,使得检测语音流的步骤十分繁琐,不能及时、准确地检测出经过修改后的数据包。


发明内容
本发明实施例提供的一种检测语音流的方法和装置,用以解决现有技术存在的不能及时、准确地检测语音流的问题。
一种检测语音流的方法包括 在预先设定的时间段内查看通信一端双方向的两条数据流; 将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较,若所述两条数据流的数据包的数量在所述预先设定的传送数据包的数量范围内,则确定所述数据流承载的是语音流。
一种检测语音流的装置包括 第一判断模块,用于在预先设定的时间段内查看通信一端双方向的两条数据流的数据包数量,判断所述通信一端双方向的两条数据流的数据包数量是否都在设定的传送数据包的数量范围内; 确定模块,用于在所述第一判断模块判断所述两条数据流的数据包数量都在设定的数据包数量的范围内时,确定所述数据流承载的是语音流。
本发明实施例在预先设定的时间段内查看通信一端双方向的两条数据流;将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较,若所述两条数据流的数据包的数量在所述预先设定的传送数据包的数量范围内,则确定所述数据流承载的是语音流,从而简化了检测语音流的步骤,提高了检测语音流的速度和准确性。



图1为现有技术检测语音流的示意图; 图2为本发明实施例提供的检测语音流的装置结构示意图; 图3为本发明实施例检测语音流的环境示意图; 图4为本发明实施例数据流中含有一条或多条语音流的对比示意图; 图5为本发明实施例检测语音流的方法流程示意图; 图6为本发明实施例确定获取的数据流中含有一条语音流的方法流程示意图; 图7为本发明实施例确定获取的数据流中含有多条语音流的方法流程示意图。

具体实施例方式 针对现有技术存在的不能及时、准确地检测语音流的问题,本发明实施例在预先设定的时间段内查看通信一端双方向的两条数据流;将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较,若所述两条数据流的数据包的数量在所述预先设定的传送数据包的数量范围内,则确定所述数据流承载的是语音流,从而解决了上述问题。
如图2所示,本发明实施例提供的检测语音流的装置包括第一判断模块10和确定模块20。
第一判断模块10,与确定模块20连接,用于在预先设定的时间段内查看,通信一端双方向的两条数据流的数据包数量,判断所述通信一端双方向的两条数据流的数据包数量是否都在设定的数据包数量的范围内。
确定模块20,与第一判断模块10连接,用于在第一判断模块10判断两条数据流的数据包数量都在设定的数据包数量的范围内时,确定数据流承载的是语音流。
其中,如果预先设定一个编码方式,则第一判断模块10包括第一配置模块100和第一处理模块110。
第一配置模块100,与第一处理模块110连接,用于在设定了一个编码方式时,根据设定的编码方式确定编码方式传送数据包的数量范围。
第一处理模块110,与第一配置模块100连接,用于在预先设定的时间段内,查看通信一端双方向的两条数据流的数据包数量是否都在第一配置模块100确定的编码方式传送数据包的数量范围内,如果是,则确定模块20确定两条数据流承载的是语音流;否则,确定模块20确定两条数据流承载的为非语音流。
其中,如果预先设置了至少两个编码方式,则第一判断模块10包括第二配置模块120和第二处理模块130。
第二配置模块120,与第二处理模块130连接,用于在设定了至少两个编码方式时,根据所述至少两个编码方式确定每一个编码方式传送数据包的数量范围; 第二处理模块130,与第二配置模块120连接,用于在预先设定的时间段内,查看通信一端双方向的每一条数据流的数据包数量是否至少都在第二配置模块120确定的任意一个编码方式传送数据包的数量范围内,如果是,则确定模块20确定两条数据流承载的是语音流;否则,确定模块20确定两条数据流承载的为非语音。
另外,第一判断模块10也可以包括第一配置模块100、第一处理模块110、第二配置模块120和第二处理模块130,则不管设置一个编码方式还是设定至少两个编码方式,都可以检测语音流。
其中,两条流可以在相同编码方式确定的范围内,也可以在不同编码方式确定的范围内。
第一配置模块100是根据下列公式确定编码方式传送数据包的数量范围的
设定时间段内传输的帧和一个数据包承载的帧为相同编码方式编码后的帧。
比如目前常用的编码方式为G.729、G.723.1和GSM。
以上述三个编码方式为例,则G.729编码方式传送数据包的数量范围应该为
G.723.1编码方式传送数据包的数量范围应该为
GSM编码方式传送数据包的数量范围应该为
如果设定的编码方式只有G.729、G.723.1和GSM,则还可以将上面三个传送数据包的数量范围合成一个
如果通信一端双方向的两条数据流中包含多种格式的数据流,则第一配置模块100根据下列公式确定编码方式传送数据包的数量范围
其中,每一个编码方式的系数之和为数据流中包含流的条数,ai为第i个编码方式传送数据包数量的最小值,bi为第i个编码方式传送数据包数量的最大值。
比如设定了两种编码方式,并且数据流中包含3条流,则数据包数量的范围 a1×n1+a2×n2-设定时间段内丢弃数据包的数量≤传送数据包的数量 ≤b1×n1+b2×n2+设定时间段内因延时增加数据包的数量 n1、n2为系数,并且n1+n2=3 如果设定的编码方式只有G.729、G.723.1和GSM,则还可以将上述公式进行简化
其中,m为数据流中包含流的条数。
第二配置模块120确定每一个编码方式传送数据包的数量范围,与第一配置模块100确定编码方式传送数据包的数量范围相同,这里就不再重复。
本发明实施例提供的检测语音流的装置还进一步包括第二判断模块30。
第二判断模块30,与第一判断模块10连接,用于在预先设定的时间段内查看通信一端双方向的两条数据流是否分别是上行数据流及下行数据流。
则第一判断模块10在第二判断模块30确定两条数据流分别是上行数据流及下行数据流时,在预先设定的时间段内查看通信一端双方向的两条数据流。
其中,第二判断模块30还包括第一模块300、第二模块310和第三模块320。
第一模块300,与第三模块320连接,用于查看通信一端双方向的两条数据流中的一条数据流的源地址和源端口号是否是另一条数据流的目的地址和目的端口号。
第二模块310,与第三模块320连接,用于查看通信一端双方向的两条数据流的协议类型是否相同。
第三模块320,与第一模块300和第二模块310连接,用于在第一模块300确定通信一端双方向的两条数据流中一条数据流的源地址和源端口号是另一条数据流的目的地址和目的端口号,并且第二模块310确定两条数据流的协议类型相同时,确定通信一端双方向的数据流分别是上行数据流及下行数据流。
上行数据流及下行数据流是指通信双方的一个完整的连接,该连接通常由一个五元组表示,五元组为源地址,目的地址,源端口,目的端口和协议类型。
如图3所示,本发明实施例检测语音流的环境示意图中,检测语音流的装置只需要根据预先设定的时间段内,获取网络中传送的数据流,并根据数据流中的数据包的数量判断数据流中是否承载语音流。
其中,可以在需要的时候或者设定的周期,触发检测语音流的装置获取网络中传送的数据流。
如图4所示,本发明实施例数据流中含有一条或多条语音流的对比示意图中,数据流根据需要可以含有一条或多条语音流,如果数据流含有多条语音流,则根据数据包中的关键字段识别数据流中有多少条流。
如图5所示,本发明实施例检测语音流的方法包括下列步骤 步骤500、在预先设定的时间段内查看通信一端双方向的两条数据流。
步骤501、判断两条数据流的数据包数量是否都在设定的数据包数量的范围内,如果是,则执行步骤502;否则,返回步骤500。
步骤502、确定获取的数据流承载的是语音流。
其中,步骤500中,可以在需要的时候或者设定的周期,获取双方向的两条数据流。
步骤500后,步骤501前还可以先查看通信一端双方向的两条数据流是否分别是上行数据流及下行数据流,如果是,则执行步骤501;否则,返回步骤500。
上行数据流及下行数据流是指通信双方的一个完整的连接,该连接通常由一个五元组表示,五元组为源地址,目的地址,源端口,目的端口和协议类型。
如果其中一条数据流中的源地址和源端口号是另一条数据流中的目的地址和目的端口号,并且两条数据流的协议类型相同,则确定两条数据流分别是上行数据流及下行数据流。
步骤501中设定的数据包的数量范围可以根据下列公式确定
预先设定的时间段内传输的帧和一个数据包承载的帧为相同编码方式编码后的帧。
比如目前常用的编码方式为G.729、G.723.1和GSM。
以上述三个编码方式为例,则G.729编码方式传送数据包的数量范围应该为 G.723.1编码方式传送数据包的数量范围应该为
GSM编码方式传送数据包的数量范围应该为
如果设定的编码方式只有G.729、G.723.1和GSM,则还可以将上面三个传送数据包的数量范围合成一个
则步骤501中,只要获取的两条数据流的数据包数量都在三个范围中的任意一个范围内,就可以确定数据流的数据包数量在确定的传送数据包的数量范围内。
其中,两条流可以在相同范围内,也可以在不同范围内。
如果获取的数据流中包含多种格式的数据流,则步骤502中,根据下列公式确定设定的数据包数量的范围
其中,每一个编码方式的系数之和为数据流中包含流的条数,ai为第i个编码方式传送数据包数量的最小值,bi为第i个编码方式传送数据包数量的最大值。
比如设定了两种编码方式,并且数据流中包含3条流,则数据包数量的范围大值。
比如设定了两种编码方式,并且数据流中包含3条流,则数据包数量的范围 a1×n1+a2×n2-设定时间段内丢弃数据包的数量≤传送数据包的数量 ≤b1×n1+b2×n2+设定时间段内因延时增加数据包的数量 n为系数,并且n1+n2=3 如果设定的编码方式只有G.729、G.723.1和GSM,则还可以将上述公式进行简化
其中,m为数据流中包含流的条数。
如图6所示,本发明实施例确定获取的数据流中含有一条语音流的方法包括下列步骤 步骤600、获取通信一端双方向的两条数据流。
步骤601、判断获取的两条数据流是否分别是上行数据流及下行数据流,如果是,则执行步骤602;否则,返回步骤600。
步骤602、判断其中一条数据流中是否包含有一种格式,如果是,则执行步骤603;否则,执行步骤606。
步骤603、在预先设定的时间段内获取通信一端双方向的两条数据流。
步骤604、判断获取的两条数据流的数据包数量是否都在设定的数据包数量的范围内,如果是,则执行步骤605;否则,返回步骤600。
步骤605、确定获取的数据流承载的是语音流。
步骤606、跳出本流程。
如图7所示,本发明实施例确定获取的数据流中含有多条语音流的方法包括下列步骤 步骤700、获取通信一端双方向的两条数据流。
步骤701、判断获取的双方向的两条数据流是否分别是上行数据流及下行数据流,如果是,则执行步骤702;否则,返回步骤700。
步骤702、判断其中一条数据流中是否只含有一种格式,如果是,则执行步骤707;否则,执行步骤703。
步骤703、在预先设定的时间段内获取通信一端双方向的两条数据流。
步骤704、根据获取的数据流中包含的流的数量,扩大设定的传送数据包的数量范围。
步骤705、判断获取的两条数据流的数据包数量是否都在扩大后的数据包数量的范围内,如果是,则执行步骤706;否则,返回步骤700。
步骤706、确定获取的数据流承载的是语音流。
步骤707、跳出本流程。
从上述实施例中可以看出本发明实施例在预先设定的时间段内查看通信一端双方向的两条数据流;将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较,若所述两条数据流的数据包的数量在所述预先设定的传送数据包的数量范围内,则确定所述数据流承载的是语音流,从而简化了检测语音流的步骤,提高了检测语音流的速度和准确性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种检测语音流的方法,其特征在于,该方法包括
在预先设定的时间段内查看通信一端双方向的两条数据流;
将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较,若所述两条数据流的数据包的数量在所述预先设定的传送数据包的数量范围内,则确定所述数据流承载的是语音流。
2、如权利要求1所述的方法,其特征在于,所述预先设定的数据包数量的范围的方法具体包括
设定一个编码方式;
根据所述编码方式确定所述编码方式传送数据包的数量范围。
3、如权利要求1所述的方法,其特征在于,所述预先设定的数据包数量的范围的方法具体包括
设定至少两个编码方式,根据所述至少两个编码方式确定每一个编码方式对应的传送数据包的数量范围;
如果每一条数据流的数据包数量在任意一个所述编码方式传送数据包的数量范围内,则确定所述数据流承载的是语音流。
4、如权利要求2或3所述的方法,其特征在于,根据下列公式确定所述传送数据包的数量范围
其中,所述设定时间段内传输帧和所述一个数据包承载帧为相同编码方式编码后的帧。
5、如权利要求1所述的方法,其特征在于,在预先设定的时间段内查看通信一端双方向的两条数据流的步骤之后,将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较的步骤之前还包括
判断通信一端双方向的两条数据流是否分别是上行数据流及下行数据流,如果是,则将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较;否则,继续在预先设定的时间段内查看通信一端双方向的两条数据流。
6、如权利要求5所述的方法,其特征在于,所述判断通信一端双方向的两条数据流是否分别是上行数据流及下行数据流的步骤具体包括
查看所述两条数据流中一条数据流的源地址和源端口号,以及所述两条数据流中另一条数据流的目的地址和目的端口号;
判断所述两条数据流中一条数据流的源地址和源端口号是否是所述两条数据流中另一条数据流的目的地址和目的端口号,以及所述两条数据流的协议类型是否相同,如果所述两条数据流中一条数据流的源地址和源端口号是所述两条数据流中另一条数据流的目的地址和目的端口号,并且所述两条数据流的协议类型相同,则确定通信一端双方向的数据流分别是上行数据流及下行数据流;否则,确定通信通信一端双方向的数据流不是上行数据流及下行数据流。
7、如权利要求2或3所述的方法,其特征在于,如果通信一端双方向的数据流包含多种格式,则根据下列公式确定每一个编码方式对应的传送数据包的数量范围
其中,每一个编码方式的系数之和为所述数据流中包含流的条数,ai为第i个编码方式传送数据包数量的最小值,bi为第i个编码方式传送数据包数量的最大值。
8、一种检测语音流的装置,其特征在于,该装置包括
第一判断模块,用于在预先设定的时间段内查看通信一端双方向的两条数据流的数据包数量,判断所述通信一端双方向的两条数据流的数据包数量是否都在设定的传送数据包的数量范围内;
确定模块,用于在所述第一判断模块判断所述两条数据流的数据包数量都在设定的数据包数量的范围内时,确定所述数据流承载的是语音流。
9、如权利要求8所述的装置,其特征在于,所述第一判断模块包括
第一配置模块,用于在预先设定一个编码方式时,根据一种编码方式确定所述编码方式传送数据包的数量范围;
第一处理模块,用于在预先设定的时间段内查看通信一端双方向的两条数据流的数据包数量是否都在所述第一配置模块确定的传送数据包的数量范围内,如果是,则由所述确定模块确定所述两条数据流承载的是语音流;否则,所述确定模块确定所述两条数据流承载的为非语音流。
10、如权利要求8所述的装置,其特征在于,所述第一判断模块包括
第二配置模块,用于在预先设定至少两个编码方式时,根据所述至少两个编码方式确定每一个编码方式传送数据包的数量范围;
第二处理模块,用于在预先设定的时间段内查看通信一端双方向的每一条数据流的数据包数量是否在所述第二配置模块确定的所述任意一个编码方式传送数据包的数量范围内,如果是,则确定所述两条数据流的数据包数量都在设定的数据包数量的范围内;否则,确定所述两条数据流的数据包数量不在设定的数据包数量的范围内。
11、如权利要求9或10所述的装置,其特征在于,根据下列公式确定编码方式传送数据包的数量范围
其中,所述设定时间段内传输帧和所述一个数据包承载帧为相同编码方式编码后的帧。
12、如权利要求8所述的装置,其特征在于,所述检测语音流的装置还包括
第二判断模块,用于在预先设定的时间段内查看通信一端双方向的两条数据流是否分别是上行数据流及下行数据流;
则所述第一判断模块在所述第二判断模块确定所述两条数据流分别是上行数据流及下行数据流时,在预先设定的时间段内查看通信一端双方向的两条数据流。
13、如权利要求12所述的装置,其特征在于,所述第二判断模块包括
第一模块,用于查看所述通信一端双方向的两条数据流中的一条数据流的源地址和源端口号是否是另一条数据流的目的地址和目的端口号;
第二模块,用于查看所述通信一端双方向的两条数据流的协议类型是否相同;
第三模块,用于在所述第一模块确定所述通信一端双方向的两条数据流中一条数据流的源地址和源端口号是另一条数据流的目的地址和目的端口号,并且所述第二模块确定两条数据流的协议类型相同时,确定通信一端双方向的数据流分别是上行数据流及下行数据流。
14、如权利要求9或10所述的装置,其特征在于,如果通信一端双方向的数据流中包含多种格式的数据流,则根据下列公式确定编码方式传送数据包的数量范围
其中,每一个编码方式的系数之和为所述数据流中包含流的条数,ai为第i个编码方式传送数据包数量的最小值,bi为第i个编码方式传送数据包数量的最大值。
全文摘要
本发明公开了一种检测语音流的方法,该方法包括在预先设定的时间段内查看通信一端双方向的两条数据流;将所述两条数据流的数据包的数量与预先设定的传送数据包的数量范围进行比较,若所述两条数据流的数据包的数量在所述预先设定的传送数据包的数量范围内,则确定所述数据流承载的是语音流。通过本发明解决了现有技术中存在的不能及时、准确地检测语音流的问题。本发明同时公开了一种检测语音流的装置。
文档编号H04L12/56GK101079754SQ20071011136
公开日2007年11月28日 申请日期2007年6月15日 优先权日2007年6月15日
发明者辛阳, 刘利锋, 刘凯红, 王飞, 杨义先 申请人:华为技术有限公司, 北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1