一种网络语音对讲方法、装置及系统的制作方法

文档序号:7988112阅读:301来源:国知局
一种网络语音对讲方法、装置及系统的制作方法
【专利摘要】本发明公开了一种网络语音对讲的方法、装置和系统,该方法包括:对本地录制的音频流和对端发送的音频流进行数据同步;将对端发送的音频流作为参考音频流对本地录制的音频流中的回声进行过滤;对过滤后的音频流进行编码压缩并通过网络进行发送。采用本发明实施例的方法、装置和系统,对本地录制的音频流和对端发送的音频流进行数据同步,并将对端发送的音频流作为过滤回声的参考音频,优化了编解码并消除了回声,提高了网络语音的对讲通话质量。
【专利说明】一种网络语音对讲方法、装置及系统
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种网络语音对讲方法、装置及系统。
【背景技术】
[0002]随着科学技术的不断发展,人们对生活的要求越来越高,相互之间的联系更是频繁,伴随着android系统和3G网络的广泛应用,android系统上的网络语音通话越来越普遍,人们可以通过以太网进行正常的语音对讲,而免费、方便、清晰、流畅的通话系统是当今网络语音通话发展的一个方向。目前android系统上有一些较成熟的应用,能够满足对讲要求,但基本上都是收费的,而且很少能够做到实时、无噪声、流畅的通话,用户体验不是非常满意,能够满足这些要求的一般通过硬件来处理,但这种方式不通用,也增加了成本。
[0003]网络语音对讲系统,能够在两台或者多台设备之间通过以太网进行正常的语音对讲。网络语音对讲系统分为发送端和接收端,在发送端,音频录制模块通过MIC将声音转为Pcm音频流,送入编码模块压缩音频数据,最后通过网络将编码后的数据发送出去;在接收端,通过接收模块获取编码的音频数据,送入解码模块,还原音频流数据,最后送入播放模块将接收到的音频流播放出来。在实际的使用过程中,网络语音对讲会产生回声,而且会有延时,造成通话质量不高。

【发明内容】

[0004]有鉴于此,本发 明要解决的技术问题是提供一种网络语音对讲方法、装置及系统,以解决网络语音对讲中的回声造成通话质量不高的问题。
[0005]本发明解决上述技术问题所采用的技术方案如下:
[0006]根据本发明的一个方面,提供的一种网络语音对讲方法,包括以下步骤:
[0007]对本地录制的音频流和对端发送的音频流进行数据同步;
[0008]将对端发送的音频流作为参考音频流对本地录制的音频流中的回声进行过滤;
[0009]对过滤后的音频流进行编码压缩并通过网络进行发送。
[0010]优选地,对本地录制的音频流和对端发送的音频流进行数据同步的步骤,具体包括:
[0011]设置用于对本地录制的音频流进行缓存的录制缓冲区,以及对参考音频流进行缓存的参考缓冲区;当参考缓冲区接收到数据时,对所本地录制的音频流和参考音频流进行数据同步。
[0012]进一步地,录制缓冲区能够对N帧录制的音频流数据进行缓存,参考缓冲区能够对M帧参考音频流的数据进行缓存;其中M>N,且M和N为自然数。
[0013]优选地,将对端发送的音频流作为参考音频流对本地录制的音频流中的回声进行过滤的步骤,具体包括:
[0014]根据预设的固定间隔的时间段,检查对端发送的音频流的帧数据,当帧数据小于speex算法预定的缓冲值时,通过speex算法将本地录制的音频流中的回声进行过滤;当对端发送的音频流的帧数据大于speex算法预定的缓冲值时,则丢弃部分帧数据。
[0015]优选地,对过滤后的音频流进行编码压缩包括:对过滤后的音频流逐帧进行缓存和编码压缩。
[0016]根据本发明的另一个方面,提供的一种网络语音对讲装置,该装置包括同步模块、回声消除模块、音频编码模块以及发送模块,其中:同步模块,用于对本地录制的音频流和对端发送的音频流进行数据同步;回声消除模块,将对端发送的音频流作为参考音频流对本地录制的音频流中的回声进行过滤;音频编码模块,用于对过滤后的音频流进行编码压缩;发送模块,用于将编码压缩的音频流通过网络进行发送。
[0017]优选地,同步模块包括录制缓冲区、参考缓冲区和数据同步单元,其中:录制缓冲区,用于对本地录制的音频流进行缓存;参考缓冲区,用于对参考音频流进行缓存;数据同步单元,用于当参考缓冲区接收到数据时,对本地录制的音频流和参考音频流进行数据同步。[0018]优选地,回声消除模块具体用于:根据预设的固定间隔的时间段,检查对端发送的音频流的帧数据,当帧数据小于speex算法预定的缓冲值时,通过speex算法将本地录制的音频流中的回声进行过滤;当对端发送的音频流的帧数据大于speex算法预定的缓冲值时,则丢弃部分帧数据。
[0019]优选地,音频编码模块具体用于:对过滤后的音频流逐帧进行缓存和编码压缩。
[0020]根据本发明的又一个方面,提供的一种网络语音对讲系统,该系统包括接收装置以及上述网络语音对讲装置,接收装置包括接收模块、音频解码模块和音频播放模块,其中:接收模块,用于接收编码压缩后的音频流;音频解码模块,用于还原接收到的编码压缩后的音频流;音频播放模块,用于播放还原的音频流。
[0021]本发明实施例的方法、装置和系统,对本地录制的音频流和对端发送的音频流进行数据同步,将对端发送的音频流作为过滤回声的参考音频,优化了编解码并消除了回声,提高了网络语音的对讲通话质量。
【专利附图】

【附图说明】
[0022] 图1是相关技术中回首广生的原理不意图;
[0023]图2是本发明实施例提供的一种网络语音对讲方法流程图。
[0024]图3是本发明实施例在应用层调用speex算法接口函数示意图;
[0025]图4是本发明实施例提供的一种网络语音对讲方法的具体流程图。
[0026]图5是本发明实施例提供的一种网络语音对讲装置的模块结构图。
[0027]图6是本发明实施例提供的一种网络语音对讲系统的结构示意图。
【具体实施方式】
[0028]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0029]在网络语音对讲中,影响通话质量的主要是回音和延时。请参与图1,在A端,人声a通过麦克风b录入,喇口入c播放B端传输过来的声音,c播放的一部分声音e也被麦克风b录入,声音e就是回声,这样声音e和声音a都被传输到了 B端,喇口入j播放的声音就包括了人声a和声音e,而声音e是由B端传输过来的,所以B端播放的声音能够听到自己的声音e,同理,在A端也能够听到自己的声音h。根据这个原理可知,回音消除就是在麦克风录制之后滤除掉图1中的声音e和声音h。根据回音产生的原理,消除回音将播放的对端音频流作为参考音频,将麦克风录制的音频流中回声那部分通过一定算法(例如speex算法)滤除掉。但是如果参考的音频不正确,就难以滤除回声。
[0030]如图2所示是本发明实施例提供的一种网络语音对讲的方法,该方法包括:
[0031]S201、对本地录制的音频流和对端发送的音频流进行数据同步;
[0032]优选地,本步骤可以通过以下方式实现:
[0033]设置用于对本地录制的音频流进行缓存的录制缓冲区,以及对参考音频流进行缓存的参考缓冲区;当参考缓冲区接收到数据时,对所本地录制的音频流和参考音频流进行数据同步。录制缓冲区能够对N帧录制的音频流数据进行缓存,参考缓冲区能够对M帧参考音频流的数据进行缓存;其中M>N,且M和N为自然数。
[0034]S202、将对端发送的音频流作为参考音频流对本地录制的音频流中的回声进行过滤;
[0035]S203、对过滤后的音频流进行编码压缩并通过网络进行发送;
[0036]优选地,本步骤可以对过滤后的音频流逐帧进行缓存和编码压缩。编码压缩后的音频流用于对端接收并 还原进行播放。
[0037]具体来说,设置录制音频流的缓冲区和存放对端音频流的缓冲区,同时都有接收到数据时,进行数据同步。即当录制的音频流的缓冲区接收到数据,且存放播放的对端音频流的缓冲区接收到数据时,可认为此时的数据是同步的,采用此时的对端音频流作为参考音频。在实际应用中,当录制的音频流的缓冲区接收到N帧数据,且播放的对端音频流的缓冲区接收到N+1帧数据时,效果较好。其中,帧数据与编码采样率成正比,例如:若编码采样率为8KB,一帧大小为160字节;若采样率为16KB,一帧大小为320字节;若采样率为32KB,一帧大小为640字节。
[0038]优选地,本发明实施例中的回声消除可采用一定算法的过滤,例如speex算法。由于本地录制的音频流是均匀稳定的,而网络传送过来的远端音频流的速度是不稳定的,可每间隔固定的时间段,检查作为参考音频的对端发送的音频流的帧数据大小,如果大于speex算法预定的缓冲值,则丢弃部分,以更好的选择参考音频;如果小于speex算法预定的缓冲值,则可以采用speex算法进行回声过滤。
[0039]由于音频的编码需要一段时间,按照8K采样,每帧160字节,编码需要大约20ms左右的时间,压缩音频数据与回音消除同步可减少延迟。可通过将缓存的一帧过滤后的音频流数据完成编码压缩后,再缓存新的一帧过滤后的音频流数据的方式来减少延迟。
[0040]以下以基于android平台,采用开源的speex算法做回音消除和音频编解码来进一步阐述本发明。Speex算法是专门针对音频的编解码的算法,该算法也在不断的更新,现在已经有了回音消除模块,经过实践证明,speex可以较好的实现音频编解码和消除回声。
[0041]请参阅图3, java应用层获取speex库函数的方法,由于speex算法是c语言编写,要在java应用层调用就需要将speex算法做成JNI库文件,如图所示,先从speex中提取接口函数封装成JNI函数,回音消除主要是speex_echo_cancelIation函数,该函数通过对比录制和播放的声音,从录制的声音中滤除播放(回声)的声音;编解码主要是speex_bits_write压缩函数和speex_bits_read_from解压函数。
[0042]各层封装函数请参阅表1,将JNI封装文件编译成.so库文件,在应用层加载这个库,封装应用接口函数,在应用层调用表1中java应用层封装函数进行回音消除和音频编解码。
[0043]表1开源的speex算法中的各层封装函数
[0044]
【权利要求】
1.一种网络语音对讲的方法,其特征在于,该方法包括: 对本地录制的音频流和对端发送的音频流进行数据同步; 将所述对端发送的音频流作为参考音频流对所述本地录制的音频流中的回声进行过滤; 对过滤后的音频流进行编码压缩并通过网络进行发送。
2.根据权利要求1所述的方法,其特征在于,所述对本地录制的音频流和对端发送的音频流进行数据同步的步骤,具体包括: 设置用于对所述本地录制的音频流进行缓存的录制缓冲区,以及对所述参考音频流进行缓存的参考缓冲区;当所述参考缓冲区接收到数据时,对所本地录制的音频流和所述参考音频流进行数据同步。
3.根据权利要求2所述的方法,其特征在于: 所述录制缓冲区能够对N帧所述录制的音频流数据进行缓存,所述参考缓冲区能够对M帧所述参考音频流的数据进行缓存;其中M>N,且M和N为自然数。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述对端发送的音频流作为参考音频流对所述本地录制的音频流中的回声进行过滤的步骤,具体包括: 根据预设的固定间 隔的时间段,检查对端发送的音频流的帧数据,当帧数据小于speex算法预定的缓冲值时,通过speex算法将所述本地录制的音频流中的回声进行过滤;当对端发送的音频流的帧数据大于speex算法预定的缓冲值时,则丢弃部分帧数据。
5.根据权利要求1所述的方法,其特征在于,所述对过滤后的音频流进行编码压缩包括:对过滤后的音频流逐帧进行缓存和编码压缩。
6.一种网络语音对讲装置,其特征在于,该装置包括同步模块、回声消除模块、音频编码模块以及发送模块,其中: 同步模块,用于对本地录制的音频流和对端发送的音频流进行数据同步; 回声消除模块,将所述对端发送的音频流作为参考音频流对所述本地录制的音频流中的回声进行过滤; 音频编码模块,用于对过滤后的音频流进行编码压缩; 发送模块,用于将编码压缩的音频流通过网络进行发送。
7.根据权利要求6所述的对讲装置,其特征在于,所述同步模块包括录制缓冲区、参考缓冲区和数据同步单元,其中: 录制缓冲区,用于对所述本地录制的音频流进行缓存; 参考缓冲区,用于对所述参考音频流进行缓存; 数据同步单元,用于当所述参考缓冲区接收到数据时,对所述本地录制的音频流和所述参考音频流进行数据同步。
8.根据权利要求6所述的对讲装置,其特征在于,所述回声消除模块具体用于:根据预设的固定间隔的时间段,检查对端发送的音频流的帧数据,当帧数据小于speex算法预定的缓冲值时,通过speex算法将所述本地录制的音频流中的回声进行过滤;当对端发送的音频流的帧数据大于speex算法预定的缓冲值时,则丢弃部分帧数据。
9.根据权利要求7所述的对讲装置,其特征在于,所述音频编码模块具体用于:对过滤后的音频流逐帧进行缓存和编码压缩。
10.一种网络语音对讲系统,其特征在于,包括接收装置以及如权利要求6-9任意项所述的网络语音对讲装置,所述接收装置包括接收模块、音频解码模块和音频播放模块,其中: 所述接收模块,用于接收编码压缩后的音频流; 所述音频解码模块,用于还原接收到的编码压缩后的音频流; 所述音频播放模 块,用于播放还原的音频流。
【文档编号】H04Q5/24GK103905928SQ201210572566
【公开日】2014年7月2日 申请日期:2012年12月25日 优先权日:2012年12月25日
【发明者】余焰, 罗世振, 陈兵, 刘文超 申请人:安科智慧城市技术(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1