发明内容
为解决上述现有技术所存在的问题,本发明提出了一种即时通讯实现方法,包括:
现场终端对语音数据进行采集和处理,将处理后的数据存储到所述云平台;监控终端通过所述云平台接收从现场终端上传的语音,解码并播放。
优选地,所述将处理后的数据存储到所述云平台,进一步包括:
现场终端将需要传送的语音数据分割成固定大小的数据段,利用序列号和时间戳对每个数据段进行标识,将数据段封装到数据包中;现场终端统计传输过程中丢包率,并检测当前可用带宽;在检测链路的带宽过程中,记录连续数据包之间的间隔时间,通过均值滤波函数过滤后,使用平均值估计带宽容量;
现场终端基于当前丢包率和所检测的带宽来调整发送速度;采用数据传输服务器定期应答的方式对发送速度进行反馈,云平台的数据传输服务器每隔预定时间向现场终端发送一个反馈信号,现场终端根据收到的反馈信号调节数据发送速度;数据传输服务器将丢失的数据段的标识信息反馈给现场终端,请求重新发送;现场终端在下一个传输周期重新发送这些丢失的数据包,直到所有的数据包都被成功接收;
在第一个传输周期,数据传输服务器通过序列号判断数据包有无丢失,如果一次丢包事件内连续丢失了多个数据包,则记录丢失的第一个和最后一个数据包的序列号,并加上连续丢包的标志位;在传输周期结束时,现场终端向数据传输服务器发送传送完成的信号,数据传输服务器收到信号后,将丢包链表反馈给现场终端,现场终端重新发送丢失的数据包,直到数据传输服务器成功接收到所有的数据包。
优选地,所述云平台通过通信服务器进行信令的解析与转发,处理来自监控终端的对语音操作的会话连接信令;而云平台数据传输服务器提供语音的上行通道,把现场终端的语音转发给监控终端用户,同时提供语音的下行通道,从监控终端到现场终端的语音信号转发;
监控终端对上行语音数据进行接收、解压和播放;对数据包进行排序,将排序好的数据存入一级缓存中;然后从一级缓存中取出语音数据包,对其进行解压,将解压好的数据放入二级缓存中;最后从二级缓存中取出语音数据,设置语音数据播放格式,并嵌入时间戳,将数据推送到一级缓存中,实现语音数据的播放;监控终端对上行语音数据进行采集、编码和发送;音频采集首先初始化音频采集设备、音频采集格式参数,然后通过设备对象创建采集缓冲区对象并初始化通知机制,最后在需要音频采集时触发音频采集主程序,设备将数据写入缓冲区,应用程序主动从缓冲区将数据读出。
本发明相比现有技术,具有以下优点:
本发明提出了一种即时通讯实现方法,在语音传输中提高了网络稳定性,提升了通话质量,取得了较高的信噪比增量和降噪效果。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种即时通讯实现方法。图1是根据本发明实施例的一种即时通讯实现方法流程图。
本发明在基于移动终端进行双向语音传输的即时通讯,即从现场终端经云平台转发到监控终端,从监控终端经云平台转发到现场终端的语音传输。其中现场终端用于语音数据的采集、编码压缩、去噪与实时播放,对信息进行存储并将语音数据上传到云平台;云平台包括通信服务器和数据传输服务器,通信服务器用于转发连接消息,数据传输服务器用于转发语音数据;监控终端则是用来接收从现场终端上传的语音,因此需要接收解码并播放接收到的语音信息,并且可以实现控制、数据存储以及用户设备管理。
现场终端将需要传送的语音数据分割成固定大小的数据段,利用序列号和时间戳对每个数据段进行标识,将数据段封装到数据包中。现场终端统计传输过程中丢包率,并检测当前可用带宽;在检测链路的带宽过程中,记录连续数据包之间的间隔时间,通过均值滤波函数过滤后,使用平均值估计带宽容量。现场终端基于当前丢包率和所检测的带宽来调整发送速度;为了减轻现场终端的工作,降低数据传输服务器的资源开销,本发明采用数据传输服务器定期应答的方式对发送速度进行反馈,数据传输服务器每隔预定时间向现场终端发送一个反馈信号,现场终端根据收到的反馈信号调节数据发送速度。反馈信号中包含如下内容:该反馈间隔内收到的数据包总数量;该反馈间隔内丢失的数据包总数量;检测得到的网络带宽;该反馈间隔内发生的丢包事件数量。在每个传输周期完成时,服务器将丢失的数据段的标识信息反馈给现场终端,请求重新发送。现场终端在下一个传输周期重新发送这些丢失的数据包,整个过程反复进行,直到所有的数据包都被成功接收。
在第一个传输周期,数据传输服务器通过序列号判断数据包有无丢失,如果一次丢包事件内连续丢失了多个数据包,则记录丢失的第一个和最后一个数据包的序列号,并加上连续丢包的标志位,以降低反馈的数据量。在传输周期结束时,现场终端向数据传输服务器发送传送完成的信号,数据传输服务器收到信号后,将丢包链表反馈给现场终端。现场终端重新发送丢失的数据包,整个过程循环进行,直到数据传输服务器成功接收到所有的数据包。
本发明中语音数据按8000Hz采样,16位单声道PCM数据,采集到的数据根据G723算法进行压缩。在发送之前还需要将语音数据进行去噪和RTSP打包,在多播或单播的网络服务上提供端对端的网络传输功能,适合传输实时数据。而接收的音频数据,经过G723算法解压,将音频播放设备的参数设置成8000Hz采样,16位单声道PCM数据即可正常播放。
云平台的通信服务器实现信令的解析与转发,处理来自监控终端的对语音操作的会话连接信令,如打开语音双向或仅开单向语音等。数据传输服务器提供语音的上行通道,把现场终端的语音转发给监控终端用户,同时提供语音的下行通道,从监控终端到现场终端一对一的语音信号的转发。
当现场终端的数据上传时,数据传输服务器将该数据直接转发给请求的用户;对于语音下行,因为在现场终端,目前直接接收RTSP数据,然后进行解码。所以,采用跟上行一样的方式,采用G723数据,进行RTSP打包发送,数据传输服务器直接用于转发,到某一台设备,在终端接收,解码播放。
监控终端的音频处理包括音频上行处理和音频下行处理。上行语音数据的处理包括接收、解压和播放。监控终端运行过程中,多路语音同时播放,每路音频数据也同时接收,但是考虑到多路声音同时播放会造成听觉上的干扰,所以用户可根据需要随时切换收听任意一路音频,其他路的音频则采用静音处理。
由于网络的不稳定,RTSP语音包可能会出现乱序,因此会首先对RTSP数据包进行排序,将排序好的数据存入一级缓存中;然后从一级缓存中取出语音包,利用G723解压算法对其进行解压,将解压好的数据放入二级缓存中;最后从二级缓存中取出语音数据,设置语音数据播放格式,即8000Hz采样、16位单声道PCM数据,并嵌入时间戳。完成以上操作,将数据推送到一级缓存中,便可以实现语音数据的播放。
语音下行包括语音的采集、编码和发送。监控终端音频采集首先初始化音频采集设备、音频采集格式等具体参数。然后通过设备对象创建采集缓冲区对象并初始化通知机制。最后在需要音频采集时触发音频采集主程序,设备将数据写入缓冲区,应用程序主动从缓冲区将数据读出,这样就实现了音频采集的功能。为保持与终端发送的数据的一致性,因此监控终端语音数据也是按照8000Hz采样的16位单声道PCM语音数据。采集到语音数据之后便是对数据进行G723编码。
在上述监控终端和现场终端向云平台上传语音数据过程中,不同的现场设备难免处于多种噪声源的环境,给提取和处理带来的极大的困难,造成巨大的影响。对于信噪比较大的情况,也即如果噪声信号很小,这时候如果选取噪声信号作为参考,对噪声的消除就无法达到很好的效果。本发明采用以下去噪过程。
第一级滤波中,输入信号x(t)为s0(t)+u(t);
其中s0(t)为参考信号,u(t)为低幅噪声信号。s1(t)与参考信号s0(t)相关,并且是第一级滤波函数的参考信号,与噪声信号u(t)无关,经第一级滤波函数,权重向量调整后得到s’1(t)。
第一级滤波输出的误差信号为:
e1(t)=x(t)-s’1(t)=s0(t)+u(t)-s’1(t)
e1(t)是调节第一级滤波函数权重系数的估计误差。e1(t)的均方差估计为:
E[e1 2(t)]=E[u2(t)]+E[s0(t)-s’1(t)]2
当输出信号的均方误差最小时,若噪声信号u(t)的功率固定,则若想保证E[e1 2(t)]达到最小值,则s’1(t)必须无限逼近s0(t),又因为s0(t)与s1(t)为统计相关,因此调节滤波函数的权重系数,使之满足
e”(t)=s0(t)-s’1(t)
e”(t)的值逼近0值。此时第一级的输出为
y1(t)=e”(t)+u(t)≈u(t)
u(t)也正是在系统输入端不易获得的噪声小信号,因此第一级滤波函数就是利用较容易获得的参考信号,调节权重系数,从而得到噪声信号,继而在第二级滤波函数中,最终得到可以信噪比较高的音频信号。
第二级输入信号依然为x(t),参考信号为y1(t),y1(t)主要由u(t)构成,即主要由整个算法的输入噪声信号组成。y1(t)经第二级滤波函数,权重系数调整后得到e”’(t)+u’(t)。
第二级滤波函数输出的误差信号为:
y2(t)=x(t)-[e”’(t)+u’(t)]=[s0(t)-e”’(t)]+[u(t)-u’(t)]
为了能让y2(t)均方差达到最小值,调整权重系数的使得[s0(t)-e”’(t)],[u(t)-u’(t)]两项的均方差获得最小值。
为最终输出最佳的s0(t),第一级滤波函数的最佳权重系数,使得e”逼近0。第二级滤波函数的最佳权重系数,使得e”’(t)逼近e”(t)逼近0,u’(t)逼近u(t)。
综上所述,本发明提出了一种即时通讯实现方法,在语音传输中提高了网络稳定性,提升了通话质量,取得了较高的信噪比增量和降噪效果。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。