用于实时音频流播放的噪音处理方法、系统、介质和装置

文档序号:9803 发布日期:2021-09-17 浏览:61次 英文

用于实时音频流播放的噪音处理方法、系统、介质和装置

技术领域

本发明涉及音频处理领域,尤其涉及一种用于实时音频流播放的噪音处理方法、系统、存储介质和装置。

背景技术

在安防行业,经常会用到实时播放音视频或者回放音视频的场景。而在这种场景下,对音频或者视频流的实时性要求是非常高的。这也就决定了这种场景下,为保证播放的流畅性体验不能缓存太多的数据。但在该模式下,当我们在浏览器端播放实时的音频流数据时,发现音频流的播放效果不佳,经过分析发现主要有以下两方面原因:

首先,由于终端采集的音频数据与浏览器播放要求的音频数据之间对音频数据的采样频率是不同的。终端采集音频数据一般采样频率为8000次/秒,然而浏览器端要求的音频数据采样频率是48000次/秒,所以在浏览器端播放实时音频流时存在将源音频数据转换为目标音频数据的过程。但是,目前浏览器内置的resample频率转换算法在对音频数据进行频率转换时存在过度修饰音频数据的问题,主要表现为该算法在频率转换时会将音频数据的最后几个字节数据进行降调处理。这是造成播放实时音频流数据时产生噪音的一个主要原因。

其次,音频流服务器在将终端采集的音频数据,通过传输系统组包发送给浏览器端的过程中,网络数据包之间存在时间间隔。比如,音频流服务器在发送音频数据给浏览器端时,会将音频数据分割后封装成若干个包含音频数据的20ms时长的音频数据包,每20ms给浏览器端发送一个数据包。浏览器端收到数据包后,如果依次对收到的每一个音频数据包中的音频数据都通过频率转换算法进行频率转换,此时会产生大量的噪音,将大量转换后的音频数据连续地播放就会导致噪音相当明显。同时,音频数据包在传输过程中会因为网络抖动等原因造成在浏览器端出现音频播放不流畅的问题。

因此,如何解决实时音频流播放过程中产生的噪音问题,同时保证音频流播放的流畅性是目前亟待解决的问题。

发明内容

本发明旨在解决上述问题,即,解决现有技术中实时音频流播放过程中产生噪音的问题。

在第一方面,本发明提出一种用于实时音频流播放的噪音处理方法,该方法包括如下步骤:

首先浏览器端将从传输系统收到的原始音频数据包依次保存到存储网络数据的缓存队列进行缓存。该原始音频数据包中包含有原始音频数据。

然后依次将缓存队列中多个相邻的原始音频数据包进行组合,组合后得到包含多个原始音频数据包的组合数据包。

对组合数据包中的原始音频数据通过频率转换算法进行频率转换,得到转换后的组合数据包。转换后的组合数据包中包含有由多个原始音频数据包组合转换后的音频数据。

对包含有由多个原始音频数据包组合转换后得到的音频数据组合数据包进行拆分,得到包含转换后音频数据的音频数据包。

然后舍弃掉拆分后的最后一个音频数据包,那么其余留下的音频数据包中的音频数据就是没有经过频率转换算法降调处理的音频数据。

将这些转换后的且没有经过频率转换算法降调处理的音频数据保存到浏览器待播放音频数据的缓存队列中。

浏览器依次从待播放音频数据缓存队列中获取转换后的音频数据进行播放。由于这些播放的音频数据均为没有经过浏览器频率转换算法降调处理的频率转换后的音频数据,所以在播放时不会产生噪音。

在上述用于实时音频流播放的噪音处理方法中,当对包含多个转换后音频数据的组合数据包进行拆分,并舍弃掉拆分后的最后一个音频数据包时,会将网络音频数据缓存队列中缓存的且已经过频率转换算法转换处理的最后一个原始音频数据包保留在缓存队列中,同时丢弃缓存队列中其他已经过频率转换算法转换处理并播放过的原始音频数据包。然后将保留下来的且刚经过频率转换算法转换处理的最后一个原始音频数据包与相邻的后续原始音频数据包进行组合,组合为新的包含多个原始音频数据的组合数据包。再对新组合的数据包依照上述处理方法进行后续的音频转换处理及转换后音频流数据的播放,直到实时音频流播放结束。

经过实践,依照上述噪音处理方法对音频流进行处理后,音频转换导致的噪音问题得到了完美解决。

需要说明的是,由于网络传输音频数据的特殊性,音频数据包在传输过程中不可避免地存在网络时延与抖动等问题,这些传输问题都有可能导致播放过程不流畅。本发明通过音频流服务器每20ms发送一个20ms时长的音频数据包,并在浏览器端缓存2-5个音频数据包后再开始进行上述的频率转换操作,再将转换完成后的音频数据发送到浏览器待播放音频数据的缓存队列中依次进行播放,进而将播放后的音频数据从浏览器待播放音频数据缓存队列中移除,从而解决了由于网络时延与抖动导致的播放不流畅的问题。

通过以上两点改进,解决了实时音频流播放过程中的噪音问题,同时也保证了转换后音频流播放的流畅性。

第二方面,本发明提出一种基于实时音频流播放的噪音处理方法的系统,该系统包括音频流服务器和浏览器端,所述浏览器端包括:

传输模块,其与所述音频流服务器建立长连接,并因此从所述音频流服务器接收音频数据包;

网络数据存储模块,其将接收到的音频数据包缓存到网络音频数据缓存队列中;

频率转换模块,其依次将相邻的多个音频数据包进行组合,将组合后的音频数据包进行频率转换,将转换后的音频数据包进行拆分,丢弃最后一个转换后的音频数据包,将剩余的音频数据包存储到待播放队列中,并删除缓存队列中相应的音频数据包;

音频存储模块,其以待播放队列的方式存储转换后的音频数据包;

音频播放模块,其消耗待播放队列的音频数据包,进行音频播放。

第三方面,本发明还提供一种计算机可读存储介质,该存储介质存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行前述第一方面的用于实时音频流播放的噪音处理方法。

第四方面,本发明还提供一种控制装置,该控制装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述第一方面的用于实时音频流播放的噪音处理方法。

有益技术效果:

本发明解决了浏览器频率转换算法对实时音频流数据频率转换时过度修饰而导致的噪音问题,使得在实时连续播放音频流的场景中不会因为频率转换而产生噪音。

本发明对频率转换算法进行优化,并没有对原始音频数据进行修改,保证了音频数据的还原性。

本发明通过在浏览器端缓存多个音频数据包后进行上述的频率转换操作,再将转换完成后的音频数据发送到浏览器待播放音频数据的缓存队列中依次进行播放,这样的处理方法也保证了转换后音频流播放的流畅性。

附图说明

下面结合附图来描述本发明的优选实施方式,附图中:

图1是本申请实施例的用于实时音频流播放的噪音处理方法的主要步骤流程图;

图2是本申请实施例的用于实时音频流播放的噪音处理系统的结构框图;

图3是本申请用于实时音频流播放的噪音处理方法的原理示意图。

具体实施方式

下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。

在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器、通信端口、存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“A和/或B”表示所有可能的A与B的组合,比如只是A、只是B或者A和B。术语“至少一个A或B”或者“A和B中的至少一个”含义与“A和/或B”类似,可以包括只是A、只是B或者A和B。单数形式的术语“一个”、“这个”也可以包含复数形式。

在第一方面,本发明提出一种用于实时音频流播放的噪音处理方法。首先参阅图1,图1为本申请实施例的用于实时音频流播放的噪音处理方法的主要步骤流程图。如图1所示,本发明的方法包括如下步骤:

步骤S1:将接收到的原始音频数据包依次保存到存储网络数据的缓存队列中进行缓存;

在实时音频流播放开始时,首先创建服务器与浏览器端之间的连接,即创建浏览器端与音频流服务器的长链接。在与音频流服务器的长连接建立后,音频流服务器会以恒定的时间间隔推送恒定时间长度的数据包给浏览器端。例如,一般音频流服务器每20毫秒推送一个20毫秒长的音频数据包给浏览器端。

浏览器端通过传输系统收到音频流服务器发送来的原始音频数据包后,依次将收到的原始音频数据包保存到浏览器端存储网络数据的缓存队列中进行缓存;当缓存队列中缓存的原始音频数据包的数量达到2个以上后,浏览器端开始对收到的原始音频数据进行频率转换。

步骤S2:依次将缓存队列中多个相邻的原始音频数据包进行组合,得到包含多个原始音频数据包的组合数据包;

下面结合图3的原理示意图对缓存队列里缓存的音频数据包达到两个以上后,浏览器端开始对收到的原始音频数据包中的原始音频数据进行频率转换的过程进行详细说明。

如图3所示,当前原始音频数据的缓存队列中有两个原始音频数据包,即A数据包和B数据包。两个数据包在数据缓存队列中前后相邻,且位于队列的第一和第二个。本发明的方法一次性从数据缓存队列中获取队列的前两个原始音频数据包,然后将两个原始音频数据包进行拼接组合,组成一个包含两个原始音频数据包的组合音频数据包,即图3中所示的A+B数据包。

需要说明的是,当实时音频流播放结束时,如果剩余的原始音频数据包数量不足以满足组合数据包的要求,则丢弃剩余无法组合的原始音频数据包。例如,本实施例所示,如果最后只剩余一个原始音频数据包,而组合数据包需要至少两个原始音频数据包,则此时将最后剩余的一个原始音频数据包删除。由于丢弃的无法组合的原始音频数据包很小,数量也不多,所以即使将最后剩余的原始音频数据包丢弃也不会对音频流的播放造成影响。

步骤S3:通过频率转换算法对组合数据包中的原始音频数据进行频率转换,得到转换后的组合数据包;

将组合后的组合数据包发送给浏览器进行频率转换,浏览器通过频率转换算法(例如resample算法)对组合数据包中的音频数据进行频率转换,得到频率转换后的音频数据。即组合数据包经浏览器频率转换后得到频率转换后的A+B数据包。频率转换后的A+B数据包中包含频率转换后的A+B组合音频数据。

步骤S4:对转换后的组合数据包按照原始音频数据包的长度进行拆分,得到多个转换后的音频数据包;

具体来说,将频率转换后得到的A+B组合音频数据包拆分为频率转换后的A数据包和频率转换后的B数据包。A、B两个频率转换后的数据包中分别包含A数据包频率转换后的音频数据和B数据包频率转换后的音频数据。

步骤S5:舍弃拆分后的最后一个音频数据包,同时将与保留的音频数据包相对应的转换前的原始音频数据包从缓存队列中删除;

具体来说,将频率转换后拆分得到的B数据包丢弃,只保留频率转换后拆分得到的A数据包。由于拆分后的B数据包中包含有经频率转换造成的降调处理部分,为了避免播放时产生噪音,所以将其丢弃,只保留频率转换后拆分得到的A数据包。保留的A数据包中的音频数据虽然经过频率转换算法处理,但是由于该频率转换后得到的音频数据为没有经过浏览器频率转换算法降调处理的音频数据,所以在播放时不会产生噪音。

同时将与转换后保留的音频数据相对应的转换前的原始音频数据包,即A数据包,从缓存队列中删除。

然后缓存队列中保留下来的且刚经过频率转换算法转换处理的最后一个原始音频数据包,即B数据包,与相邻的后面一个原始音频数据包进行组合,组合为新的包含两个原始音频数据的组合数据包。再对新组合的数据包依照上述处理方法进行后续的音频转换处理。

步骤S6:将转换后且保留下来的音频数据包保存到待播放音频数据缓存队列中进行播放。

具体来说,将转换后且未经音频转换算法降调处理的音频数据,即将A数据包中经频率转换算法转换后的音频数据A保存到浏览器待播放音频数据缓存队列中,由浏览器播放。浏览器播放后,将已播放的音频数据从待播放音频数据缓存队列中删除。即播放后将音频数据A从待播放音频数据缓存队列中删除。依照上述方法对频率转换后音频流数据进行播放,直到实时音频流播放结束。

需要说明的是,本方案通过对多个原始音频数据包中的音频数据采用拼接组合的方法组成组合数据,再对拼接后的组合数据进行频率转换处理,来避免频率转换算法在最后几个字节的降调处理,从而避免音频流播放的噪音问题。该解决方案并不限于上述具体实施例中描述的仅对两个原始数据包进行组合处理。根据具体情况,本解决办法也可对两个以上的原始数据包进行组合处理,具体的处理方法这里不再叙述。

另外,在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

在第二方面,本发明提出一种基于实时音频流播放的噪音处理系统,具体实施例如图2所示,该系统主要包括:音频流浏览器端和服务端-即音频流服务器。

需要说明的是,该基于实时音频流播放的噪音处理系统采用Brower/Server即浏览器/服务器架构。

如图2所示,所述服务器主要包括:音频流处理模块11和传输模块12。音频流处理模块11向浏览器端发送原始音频流数据,传输模块12与浏览器端建立长连接,服务端通过长连接向浏览器端发送音频流的原始音频数据包。

所述浏览器端主要包括:

传输模块21,其与所述音频流服务器建立长连接,并因此从所述音频流服务器接收音频数据包。

网络数据存储模块22,其将接收到的音频数据包缓存到网络音频数据缓存队列中。

频率转换模块23,其依次将相邻的多个音频数据包进行组合,将组合后的音频数据包进行频率转换,再将转换后的音频数据包进行拆分,得到转换后的音频数据包。丢弃最后一个转换后的音频数据包,将剩余的转换后的音频数据包存储到待播放队列中,并删除缓存队列中相应的音频数据包。

音频存储模块24,其以待播放队列的方式存储转换后的音频数据。

音频播放模块25,其消耗待播放队列的音频数据进行音频播放。

具体来说,在实时音频流播放开始时,首先浏览器端通过传输模块21与服务器的传输模块12一起创建服务器与浏览器端之间的连接,即创建浏览器端与音频流服务器的长链接。在与音频流服务器的长连接建立后,音频流服务器会以恒定的时间间隔推送恒定时间长度的数据包给浏览器端。例如,一般音频流服务器每20毫秒推送一个20毫秒长的音频数据包给浏览器端。

浏览器端通过传输模块21接收音频流服务器中音频流处理模块11发送来的原始音频数据包后,依次将收到的原始音频数据包保存到浏览器端网络数据存储模块22的缓存队列中进行缓存;当缓存队列中缓存的原始音频数据包的数量达到2个以上后,浏览器开始对收到的原始音频数据进行频率转换。

当原始音频数据的缓存队列中有两个及两个以上多个原始音频数据包时,在数据缓存队列中最先相邻的多个数据包被组合为组合数据包。频率转换模块23一次性从数据缓存队列中获取队列中最先的多个原始音频数据包,然后将获取的多个原始音频数据包进行拼接组合,组成一个包含多个原始音频数据包的组合音频数据包。

需要说明的是,当实时音频流播放结束时,如果剩余的原始音频数据包数量不足以满足组合数据包的要求,则丢弃剩余无法组合的原始音频数据包。

将组合后的组合数据包通过频率转换模块23进行频率转换,得到频率转换后的音频数据包。

将频率转换后得到的组合音频数据包进行拆分,拆分为多个频率转换后的音频数据包。每个频率转换后的音频数据包中均包含频率转换后的音频数据。

将频率转换后拆分得到的最后一个数据包丢弃,只保留其余频率转换后的数据包。由于保留数据包中的音频数据虽然经过频率转换算法处理,但是保留数据包中包含的转换后得到的音频数据为没有经过浏览器频率转换算法降调处理的频率转换后的音频数据,所以在播放时不会产生噪音。

同时将与转换后保留的音频数据相对应的转换前的原始音频数据包,从缓存队列中删除。

然后缓存队列中保留下来的且刚经过频率转换算法转换处理的最后一个原始音频数据包,与相邻的其后若干个原始音频数据包进行组合,组合为新的包含多个原始音频数据的组合数据包。再对新组合的数据包通过频率转换方法进行后续的音频转换处理。

将转换后且未经音频转换算法降调处理的音频数据,保存到音频存储模块24的待播放音频数据缓存队列中,由浏览器通过音频播放模块25播放,并将播放后的音频数据从待播放音频数据缓存队列中删除。依照上述方法对频率转换后音频流数据进行播放,直到实时音频流播放结束。

在第三方面,本发明还提供一种计算机可读存储介质,该存储介质存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行前述第一方面的基于实时音频流播放的噪音处理方法。

在第四方面,本发明还提供一种处理装置,该处理装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述第一方面的基于实时音频流播放的噪音处理方法。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:语音信号的增强处理方法、装置、设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!