掌桥专利:专业的专利平台
掌桥专利
首页

一种音频播放的回音消除方法、装置及电子设备

文献发布时间:2023-06-19 12:11:54


一种音频播放的回音消除方法、装置及电子设备

技术领域

本发明涉及在线教育技术领域,具体而言,涉及一种音频播放的回音消除方法、装置、电子设备及计算机可读存储介质。

背景技术

在在线教育领域,在线课堂是主要业务产品,在线音频互动课堂的web应用是一个集音视频通讯、音视频播放、实时聊天、实时白板等功能的浏览器网页。音频通话和音频播放是教学互动过程中重要的功能,保证音频通话和播放质量是对顺利实施教学过程的重要保证。

当课堂中建立了音频通话,课堂中使用HTML5(HTML(Hypertext MarkupLanguage,超文本标记语言))的audio标签播放声音。为了节约成本,目前多媒体产品较短的音频文件一般是通过信令服务器下发播放通知,房间内人员通过audio标签播放。audio标签播放音频数据,通过调用浏览器将音频数据传至本地扬声器完成播放。

回音的产生是由于音频通话时,麦克风会采集到audio标签通过扬声器播放的声音(称为声学回声)。课堂中其他人会听到播放重复音频,一次是audio标签播放的声音,另一次为麦克风采集到扬声器播放的相同声音,而回音的产生是任何情况下都是不被允许的。

发明内容

为解决现有存在的技术问题,本发明实施例提供一种音频播放的回音消除方法、装置、电子设备及计算机可读存储介质。

第一方面,本发明实施例提供了一种音频播放的回音消除方法,包括:

获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流;

分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据set RemoteDescription指令建立媒体链路;

获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端;

接收所述本地媒体流会话连接对象的输入数据流端传输的音频数据流,为所述远端媒体流会话连接对象的输出数据流端创建媒体流对象,绑定接收返回的音频数据流;

在web中创建新的HTML5 audio标签;

将所述媒体流对象设置为所述HTML5 audio标签的源文件对象,为所述HTML5audio标签绑定待播放的音频数据流;

获取所述待播放的音频数据流的第一频谱数据,将所述第一频谱数据添加到WebRTC的回音消除队列;

获取麦克风采集的音频数据流的第二频谱数据,将所述第二频谱数据与所述第一频谱数据进行频谱校验;

如果发现存在相同的频谱数据,则丢弃所述回音消除队列的音频数据流。

第二方面,本发明实施例提供了一种音频播放的回音消除装置,包括:

数据绑定模块,用于获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流;

对象创建模块,用于分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据set Remote Description指令建立媒体链路;

轨道绑定模块,用于获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端;

媒体创建模块,用于接收所述本地媒体流会话连接对象的输入数据流端传输的音频数据流,为所述远端媒体流会话连接对象的输出数据流端创建媒体流对象,绑定接收返回的音频数据流;

标签创建模块,用于在web中创建新的HTML5 audio标签;

标签绑定模块,用于将所述媒体流对象设置为所述HTML5 audio标签的源文件对象,为所述HTML5 audio标签绑定待播放的音频数据流;

队列添加模块,用于获取所述待播放的音频数据流的第一频谱数据,将所述第一频谱数据添加到WebRTC的回音消除队列;

频谱校验模块,用于获取麦克风采集的音频数据流的第二频谱数据,将所述第二频谱数据与所述第一频谱数据进行频谱校验;

数据丢弃模块,用于如果发现存在相同的频谱数据,则丢弃所述回音消除队列的音频数据流。

第三方面,本发明实施例提供了一种电子设备,包括总线、收发器、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述收发器、所述存储器和所述处理器通过所述总线相连,其特征在于,所述计算机程序被所述处理器执行时实现如上所述的课件加载方法中的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的音频播放的回音消除方法中的步骤。

本发明实施例提供的方法、装置、电子设备及计算机可读存储介质,将audio标签向外播放的音频数据预先置于WebRTC回音消除队列中,将该音频数据的频谱数据与麦克风采集的音频数据的频谱数据进行比较;如果出现相同的频谱,则将置于WebRTC回音消除队列中的音频数据自队列中消除,新audio标签通过扬声器将音频数据正常播放出来,在线课堂中播放麦克风音频数据时也不再包含新audio标签播放的音频数据,在保证正常通话和音频播放的情况下,解决了浏览器中web网页通过audio标签播放音频数据时课堂音频通话出现回音的问题,保证了在线教育课堂的授课效果。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1示出了本发明实施例所提供的一种音频播放的回音消除方法的流程图;

图2示出了本发明实施例所提供的音频播放的回音消除方法中,步骤S11的具体方法的流程图;

图3示出了本发明实施例所提供的音频播放的回音消除方法中,步骤S13的具体方法的流程图;

图4示出了本发明实施例所提供的音频播放的回音消除方法中,步骤S15的具体方法的流程图;

图5示出了本发明实施例所提供的音频播放的回音消除方法中,步骤S17的具体方法的流程图;

图6示出了本发明实施例所提供的一种音频播放的回音消除装置的结构示意图;

图7示出了本发明实施例所提供的一种音频播放的回音消除电子设备的结构示意图。

具体实施方式

所属技术领域的技术人员应当知道,本发明实施例可以实现为方法、装置、电子设备及计算机可读存储介质。因此,本发明实施例可以具体实现为以下形式:完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、硬件和软件结合的形式。此外,在一些实施例中,本发明实施例还可以实现为在一个或多个计算机可读存储介质中的计算机程序产品的形式,该计算机可读存储介质中包含计算机程序代码。

上述计算机可读存储介质可以采用一个或多个计算机可读存储介质的任意组合。计算机可读存储介质包括:电、磁、光、电磁、红外或半导体的系统、装置或器件,或者以上任意的组合。计算机可读存储介质更具体的例子包括:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、闪存(Flash Memory)、光纤、光盘只读存储器(CD-ROM)、光存储器件、磁存储器件或以上任意组合。在本发明实施例中,计算机可读存储介质可以是任意包含或存储程序的有形介质,该程序可以被指令执行系统、装置、器件使用或与其结合使用。

上述计算机可读存储介质包含的计算机程序代码可以用任意适当的介质传输,包括:无线、电线、光缆、射频(Radio Frequency,RF)或者以上任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,例如:Java、Smalltalk、C++,还包括常规的过程式程序设计语言,例如:C语言或类似的程序设计语言。计算机程序代码可以完全的在用户计算机上执行、部分的在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行以及完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括:局域网(LAN)或广域网(WAN),可以连接到用户计算机,也可以连接到外部计算机。

下面将参照本发明实施例的方法、装置、电子设备及计算机可读存储介质的流程图和/或方框图描述本发明实施例。

应当理解,流程图和/或方框图的每个方框以及流程图和/或方框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机可读程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或方框图中的方框规定的功能/操作的装置。

也可以将这些计算机可读程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储介质中。这样,存储在计算机可读存储介质中的指令就产生出一个包括实现流程图和/或方框图中的方框规定的功能/操作的指令装置产品。

也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程数据处理装置上执行的指令能够提供实现流程图和/或方框图中的方框规定的功能/操作的过程。

下面结合本发明实施例中的附图对本发明实施例进行描述。

WebRTC(Web Real-Time Communication,页面实时通信)是一个支持网页浏览器进行实时语音对话或视频对话的API(application program interface,应用程序编程接口)。WebRTC具备回音消除算法模块,凡是通过WebRTC传输的音频数据,通过扬声器播放时WebRTC会记录当前音频数据播放的频谱(频率分布曲线)。当WebRTC开启麦克风采集数据时,WebRTC内部会拿出记录的扬声器音频频谱数据和麦克风采集的数据进行比较,对具有相同频谱数据的音频数据做放弃处理。

图1示出了本发明实施例所提供的一种音频播放的回音消除方法流程图。如图1所示,该方法包括:

步骤S11:获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象(Media Stream Object)绑定该源数据生成音频数据流;

如图2所示,在本发明实施例中,步骤S11具体可以包括:

步骤S1101:通过audio标签的源文件对象(Source object,即src object),获取audio标签的音频播放文件的源地址;

步骤S1103:通过Web Audio创建一个Audio Context Object进行音频操作,使用decode Audio Data接口加载该音频播放文件的地址,获得该音频播放文件的源数据;

在本发明实施例中,web audio是一套web处理音频的标准api库。

步骤S1105:使用Create Media Stream Source创建一个媒体流对象,使用媒体流对象绑定该音频播放文件的源数据生成音频数据流;

在本发明实施例中,媒体流对象在WebRTC标准中定义如下:

每一个媒体流对象包含零个或多个轨道,具体为音频轨道和视频轨道。媒体流对象中的所有轨道均会在呈现时被同步,不同媒体流对象之间不需要进行同步。

步骤S13:创建媒体流会话连接对象(RTC Peer connection object),根据setRemote Description指令建立媒体链路;

在本发明实施例中,媒体流会话连接对象具体可以包括:实际传输的音视频媒体流内容。

媒体流会话连接对象在WebRTC标准中定义如下:一个媒体流会话连接对象具有一个相关联的交互式连接建立协议(Interactive Connectivity Establishment,ICE)代理、媒体流会话连接信令状态、ICE收集状态和ICE连接状态,这些均在当媒体流会话连接对象创建时被初始化。一个媒体流会话连接对象具有两个相关联的流集合,一个是本地流集合,代表了当前媒体流会话连接对象向外发送的媒体流,另一个是远端流集合,代表了当前媒体流会话连接对象正在接收来自远端的媒体流。上述媒体流集合在当媒体流会话连接对象创建时被初始化。

如图3所示,在本发明实施例中,步骤S13可以包括:

步骤S1301:根据步骤S1105生成音频数据流的回调通知,调用监听回调函数;

步骤S1303:创建一个本地的媒体流会话连接对象,用于接收audio标签生成的音频数据流,调用create Offer指令创建一个offer,保存offer的SDP(Session DescriptionProtocol,会话描述协议)内容,将audio标签的音频数据流向外发送;

步骤S1305:创建一个远端媒体流会话连接对象,用于接收offer发送的audio标签音频数据流,调用create Answer指令创建一个answer,保存answer的SDP内容;

步骤S1307: 使用offer的set Remote Description指令保存answer端的SDP协议,使用answer的set Remote Description指令保存offer端的SDP协议,协商协议完成,建立媒体链路;

步骤S1309:媒体链路建立成功后,根据远端的媒体流会话连接对象的输出,调用监听回调函数ontrack。

步骤S15:调用get Tracks指令获取包含音频数据流的音频轨道对象,将音频轨道对象绑定本地的媒体流会话连接对象的输入数据流端;

如图4所示,在本发明实施例中,步骤S15具体可以包括:

步骤S1501:通过步骤S1103中的Media Stream Object,调用get Tracks指令获取到包含了音频数据流的音频轨道对象(audio Track Object);

步骤S1503:将音频轨道对象通过RTC Peer Connection.add Track指令绑定本地的媒体流会话连接对象的输入数据流端,完成音频数据流的绑定;

步骤S17:接收本地的媒体流会话连接对象的输入端传输的音频数据流,为远端的媒体流会话连接对象的输出端创建一个Media Stream Object,绑定接收返回的音频数据流;

如图5所示,在本发明实施例中,步骤S17具体可以包括:

步骤S1701:在步骤S1309调用监听回调函数ontrack监听得到远端的媒体流会话连接对象接收到音频数据之后,接收步骤S15本地的媒体流会话连接对象的输入端传输的音频数据流;

步骤S1703:接收到音频数据流之后,为远端的媒体流会话连接对象的输出端创建一个Media Stream Object,绑定接收返回的音频数据流;

步骤S19:在web中创建一个新的HTML5 audio标签;

步骤S21:将步骤S1703中的Media Stream Object设置为该新audio标签的srcobject,为该新audio标签绑定音频数据;

步骤S23:WebRTC获取该音频数据的第一频谱数据,将其添加进WebRTC回音消除队列;

步骤S25:调用新audio标签的play指令,音频数据输出至扬声器开始播放;

在本发明实施例中,audio标签本质上属于一个独立的播放器,audio标签输出的音频数据发出的声音通过RTC Peer connection object输出端开始通过扬声器播放。

虽然此时从麦克风还能采集到新audio标签播放的音频数据,但由于该音频数据频谱已在WebRTC回音消除队列中。

步骤S27:获取麦克风采集的音频数据的第二频谱数据,回音消除模块将该频谱数据与先前采集的频谱数据进行音频频谱校验,发现相同的音频频谱数据,会丢弃第一频谱数据所属的WebRTC回音消除队列的音频数据流。

新audio标签通过扬声器将音频数据正常播放出来,麦克风采集了播放的音频数据,获取该音频数据中的第二频谱数据,将第二频谱数据与上述第一频谱数据进行音频频谱校验处理,如果发现了相同的音频频谱数据,证明麦克风采集的音频数据已在WebRTC回音消除队列中,故将第一频谱数据所属的音频数据丢弃,在线课堂中播放麦克风音频数据时也不再包含新audio标签播放的音频数据。避免了在线教育课堂中声学回音的出现,保证了在线教育课堂的授课效果。

本发明实施例的音频播放的回音消除方法,将audio标签向外播放的音频数据预先置于WebRTC回音消除队列中,将该音频数据的频谱数据与麦克风采集的音频数据的频谱数据进行比较;如果出现相同的频谱,则将置于WebRTC回音消除队列中的音频数据自队列中消除,

新audio标签通过扬声器将音频数据正常播放出来,在线课堂中播放麦克风音频数据时也不再包含新audio标签播放的音频数据,在保证正常通话和音频播放的情况下,解决了浏览器中web网页通过audio标签播放音频数据时课堂音频通话出现回音的问题,保证了在线教育课堂的授课效果。

上文结合图1至图5,详细描述了根据本发明实施例的音频播放的回音消除方法,下面将结合图6,详细描述根据本发明实施例的音频播放的回音消除装置。

图6示出了本发明实施例所提供的一种音频播放的回音消除装置的结构示意图。如图6所示,该音频播放的回音消除装置包括:

数据绑定模块61,用于获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流;

对象创建模块62,用于分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据set Remote Description指令建立媒体链路;

轨道绑定模块63,用于获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端;

媒体创建模块64,用于接收所述本地媒体流会话连接对象的输入数据流端传输的音频数据流,为所述远端媒体流会话连接对象的输出数据流端创建媒体流对象,绑定接收返回的音频数据流;

标签创建模块65,用于在web中创建新的HTML5 audio标签;

标签绑定模块66,用于将所述媒体流对象设置为所述HTML5 audio标签的源文件对象,为所述HTML5 audio标签绑定待播放的音频数据流;

队列添加模块67,用于获取所述待播放的音频数据流的第一频谱数据,将所述第一频谱数据添加到WebRTC的回音消除队列;

频谱校验模块68,用于获取麦克风采集的音频数据流的第二频谱数据,将所述第二频谱数据与所述第一频谱数据进行频谱校验;

数据丢弃模块69,用于如果发现存在相同的频谱数据,则丢弃所述回音消除队列的音频数据流。

在本发明实施例中,可选地,数据绑定模块61具体包括:

地址获取子模块,用于通过所述audio标签的源文件对象,获取所述audio标签的音频播放文件的源地址;

地址加载子模块,用于通过Web Audio创建Audio Context Object进行音频操作,使用decode Audio Data接口加载该音频播放文件的地址,获得该音频播放文件的源数据;

音频生成子模块,用于使用Create Media Stream Source创建媒体流对象,使用媒体流对象绑定所述音频播放文件的源数据生成音频数据流。

在本发明实施例中,可选地,对象创建模块62具体包括:

offer创建子模块,用于创建本地媒体流会话连接对象,用于接收所述audio标签生成的音频数据流,调用create Offer指令创建offer,保存offer的会话描述协议内容,将所述audio标签的音频数据流向外发送;

answer创建子模块,用于创建远端媒体流会话连接对象,用于接收offer发送的所述audio标签音频数据流,调用create Answer指令创建answer,保存answer的会话描述协议内容;

会话保存子模块,用于使用offer的set Remote Description指令保存answer端的会话描述协议,使用answer的set Remote Description指令保存offer端的会话描述协议,协商协议完成,建立媒体链路;

监听调用子模块,用于媒体链路建立成功后,根据远端媒体流会话连接对象的输出,调用监听回调函数。

可选地,在本发明实施例中,所述轨道绑定模块63具体包括:

轨道获取子模块,用于通过所述媒体流会话连接对象,获取包含了所述音频数据流的音频轨道对象;

数据绑定子模块,用于将所述音频轨道对象通过RTC Peer Connection.addTrack指令绑定本地媒体流会话连接对象的输入数据流端。

因此,本发明实施例的音频播放的回音消除装置,将audio标签向外播放的音频数据预先置于WebRTC回音消除队列中,将该音频数据的频谱数据与麦克风采集的音频数据的频谱数据进行比较;如果出现相同的频谱,则将置于WebRTC回音消除队列中的音频数据自队列中消除,新audio标签通过扬声器将音频数据正常播放出来,在线课堂中播放麦克风音频数据时也不再包含新audio标签播放的音频数据,在保证正常通话和音频播放的情况下,解决了浏览器中web网页通过audio标签播放音频数据时课堂音频通话出现回音的问题,保证了在线教育课堂的授课效果。

此外,本发明实施例还提供了一种电子设备,包括总线、收发器、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该收发器、该存储器和处理器分别通过总线相连,计算机程序被处理器执行时实现上述音频播放的回音消除方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

具体的,参见图7所示,本发明实施例还提供了一种电子设备,该电子设备包括总线71、处理器72、收发器73、总线接口74、存储器75和用户接口76。

在本发明实施例中,该电子设备还包括:存储在存储器75上并可在处理器72上运行的计算机程序,计算机程序被处理器72执行时实现以下步骤:

获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流;

分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据set RemoteDescription指令建立媒体链路;

获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端;

接收所述本地媒体流会话连接对象的输入数据流端传输的音频数据流,为所述远端媒体流会话连接对象的输出数据流端创建媒体流对象,绑定接收返回的音频数据流;

在web中创建新的HTML5 audio标签;

将所述媒体流对象设置为所述HTML5 audio标签的源文件对象,为所述HTML5audio标签绑定待播放的音频数据流;

获取所述待播放的音频数据流的第一频谱数据,将所述第一频谱数据添加到WebRTC的回音消除队列;

获取麦克风采集的音频数据流的第二频谱数据,将所述第二频谱数据与所述第一频谱数据进行频谱校验;

如果发现存在相同的频谱数据,则丢弃所述回音消除队列的音频数据流。

可选地,计算机程序被处理器72执行时还可实现以下步骤:

所述获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流的步骤具体包括:

通过所述audio标签的源文件对象,获取所述audio标签的音频播放文件的源地址;

通过Web Audio创建Audio Context Object进行音频操作,使用decode AudioData接口加载该音频播放文件的地址,获得该音频播放文件的源数据;

使用Create Media Stream Source创建媒体流对象,使用媒体流对象绑定所述音频播放文件的源数据生成音频数据流。

可选地,计算机程序被处理器72执行时还可实现以下步骤:

所述分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据setRemote Description指令建立媒体链路的步骤具体包括:

创建本地媒体流会话连接对象,用于接收所述audio标签生成的音频数据流,调用create Offer指令创建offer,保存offer的会话描述协议内容,将所述audio标签的音频数据流向外发送;

创建远端媒体流会话连接对象,用于接收offer发送的所述audio标签音频数据流,调用create Answer指令创建answer,保存answer的会话描述协议内容;

使用offer的set Remote Description指令保存answer端的会话描述协议,使用answer的set Remote Description指令保存offer端的会话描述协议,协商协议完成,建立媒体链路;

媒体链路建立成功后,根据远端媒体流会话连接对象的输出,调用监听回调函数。

可选地,计算机程序被处理器72执行时还可实现以下步骤:

所述获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端的步骤包括:

通过所述媒体流会话连接对象,获取包含了所述音频数据流的音频轨道对象;

将所述音频轨道对象通过RTC Peer Connection.add Track指令绑定本地媒体流会话连接对象的输入数据流端。

收发器73,用于在处理器72的控制下接收和发送数据。

在图7中,总线架构(用总线71来代表),总线71可以包括任意数量互联的总线和桥,总线71将包括由处理器72代表的一个或多个处理器与存储器75代表的存储器的各种电路连接在一起。

总线71表示若干类型的总线结构中的任何一种总线结构中的一个或多个,包括存储器总线以及存储器控制器、外围总线、加速图形端口(Accelerate Graphical Port,AGP)、处理器或使用各种总线体系结构中的任意总线结构的局域总线。作为示例而非限制,这样的体系结构包括:工业标准体系结构(Industry Standard Architecture,ISA)总线、微通道体系结构(Micro Channel Architecture,MCA)总线、扩展ISA(Enhanced ISA,EISA)总线、视频电子标准协会(Video Electronics Standards Association,VESA)、外围部件互连(Peripheral Component Interconnect,PCI)总线。

处理器72可以是一种集成电路芯片,具有信号处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中硬件的集成逻辑电路或软件形式的指令完成。上述的处理器包括:通用处理器、中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、可编程逻辑阵列(Programmable Logic Array,PLA)、微控制单元(Microcontroller Unit,MCU)或其他可编程逻辑器件、分立门、晶体管逻辑器件、分立硬件组件。可以实现或执行本发明实施例中公开的各方法、步骤及逻辑框图。例如,处理器可以是单核处理器或多核处理器,处理器可以集成于单颗芯片或位于多颗不同的芯片。

处理器72可以是微处理器或任何常规的处理器。结合本发明实施例所公开的方法步骤可以直接由硬件译码处理器执行完成,或者由译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存取存储器(Random Access Memory,RAM)、闪存(FlashMemory)、只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、寄存器等本领域公知的可读存储介质中。所述可读存储介质位于存储器中,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

总线71还可以将,例如外围设备、稳压器或功率管理电路等各种其他电路连接在一起,总线接口74在总线71和收发器73之间提供接口,这些都是本领域所公知的。因此,本发明实施例不再对其进行进一步描述。

收发器73可以是一个元件,也可以是多个元件,例如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。例如:收发器73从其他设备接收外部数据,收发器73用于将处理器72处理后的数据发送给其他设备。取决于计算机系统的性质,还可以提供用户接口76,例如:触摸屏、物理键盘、显示器、鼠标、扬声器、麦克风、轨迹球、操纵杆、触控笔。

应理解,在本发明实施例中,存储器75可进一步包括相对于处理器72远程设置的存储器,这些远程设置的存储器可以通过网络连接至服务器。上述网络的一个或多个部分可以是自组织网络(ad hoc network)、内联网(intranet)、外联网(extranet)、虚拟专用网(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、无线广域网(WWAN)、城域网(MAN)、互联网(Internet)、公共交换电话网(PSTN)、普通老式电话业务网(POTS)、蜂窝电话网、无线网络、无线保真(Wi-Fi)网络以及两个或更多个上述网络的组合。例如,蜂窝电话网和无线网络可以是全球移动通信(GSM)系统、码分多址(CDMA)系统、全球微波互联接入(WiMAX)系统、通用分组无线业务(GPRS)系统、宽带码分多址(WCDMA)系统、长期演进(LTE)系统、LTE频分双工(FDD)系统、LTE时分双工(TDD)系统、先进长期演进(LTE-A)系统、通用移动通信(UMTS)系统、增强移动宽带(Enhance Mobile Broadband,eMBB)系统、海量机器类通信(massive Machine Type of Communication,mMTC)系统、超可靠低时延通信(UltraReliable Low Latency Communications,uRLLC)系统等。

应理解,本发明实施例中的存储器75可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器包括:只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存(Flash Memory)。

易失性存储器包括:随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如:静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本发明实施例描述的电子设备的存储器75包括但不限于上述和任意其他适合类型的存储器。

在本发明实施例中,存储器75存储了操作系统751和应用程序752的如下元素:可执行模块、数据结构,或者其子集,或者其扩展集。

具体而言,操作系统751包含各种系统程序,例如:框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序752包含各种应用程序,例如:媒体播放器(Media Player)、浏览器(Browser),用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序752中。应用程序752包括:小程序、对象、组件、逻辑、数据结构以及其他执行特定任务或实现特定抽象数据类型的计算机系统可执行指令。

此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述音频播放的回音消除方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

具体而言,计算机程序被处理器执行时可实现以下步骤:

获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流;

分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据set RemoteDescription指令建立媒体链路;

获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端;

接收所述本地媒体流会话连接对象的输入数据流端传输的音频数据流,为所述远端媒体流会话连接对象的输出数据流端创建媒体流对象,绑定接收返回的音频数据流;

在web中创建新的HTML5 audio标签;

将所述媒体流对象设置为所述HTML5 audio标签的源文件对象,为所述HTML5audio标签绑定待播放的音频数据流;

获取所述待播放的音频数据流的第一频谱数据,将所述第一频谱数据添加到WebRTC的回音消除队列;

获取麦克风采集的音频数据流的第二频谱数据,将所述第二频谱数据与所述第一频谱数据进行频谱校验;

如果发现存在相同的频谱数据,则丢弃所述回音消除队列的音频数据流。

可选地,计算机程序被处理器执行时还可实现以下步骤:

所述获取audio标签将要播放的音频播放文件的源数据,使用媒体流对象绑定所述源数据生成音频数据流的步骤具体包括:

通过所述audio标签的源文件对象,获取所述audio标签的音频播放文件的源地址;

通过Web Audio创建Audio Context Object进行音频操作,使用decode AudioData接口加载该音频播放文件的地址,获得该音频播放文件的源数据;

使用Create Media Stream Source创建媒体流对象,使用媒体流对象绑定所述音频播放文件的源数据生成音频数据流。

可选地,计算机程序被处理器执行时还可实现以下步骤:

所述分别创建本地媒体流会话连接对象和远端媒体流会话连接对象,根据setRemote Description指令建立媒体链路的步骤具体包括:

创建本地媒体流会话连接对象,用于接收所述audio标签生成的音频数据流,调用create Offer指令创建offer,保存offer的会话描述协议内容,将所述audio标签的音频数据流向外发送;

创建远端媒体流会话连接对象,用于接收offer发送的所述audio标签音频数据流,调用create Answer指令创建answer,保存answer的会话描述协议内容;

使用offer的set Remote Description指令保存answer端的会话描述协议,使用answer的set Remote Description指令保存offer端的会话描述协议,协商协议完成,建立媒体链路;

媒体链路建立成功后,根据远端媒体流会话连接对象的输出,调用监听回调函数。

可选地,计算机程序被处理器执行时还可实现以下步骤:

所述获取包含所述音频数据流的音频轨道对象,将所述音频轨道对象绑定所述本地媒体流会话连接对象的输入数据流端的步骤包括:

通过所述媒体流会话连接对象,获取包含了所述音频数据流的音频轨道对象;

将所述音频轨道对象通过RTC Peer Connection.add Track指令绑定本地媒体流会话连接对象的输入数据流端。

计算机可读存储介质包括:永久性和非永久性、可移动和非可移动媒体,是可以保留和存储供指令执行设备所使用指令的有形设备。计算机可读存储介质包括:电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备以及上述任意合适的组合。计算机可读存储介质包括:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带存储、磁带磁盘存储或其他磁性存储设备、记忆棒、机械编码装置(例如在其上记录有指令的凹槽中的穿孔卡或凸起结构)或任何其他非传输介质、可用于存储可以被计算设备访问的信息。按照本发明实施例中的界定,计算机可读存储介质不包括暂时信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如穿过光纤电缆的光脉冲)或通过导线传输的电信号。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或二者的结合来实现,为了清楚说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。所述计算机程序指令包括:汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,例如:Smalltalk、C++以及过程式编程语言,例如:C语言或类似的编程语言。

在计算机上加载和执行所述计算机程序指令时,全部或部分的产生按照本发明实施例所述的流程或功能,所述计算机可以是通过计算机、专用计算机、计算机网络或其他可编辑装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如:所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、双绞线、光纤、数字用户线路(digitalsubscriber line,DSL))或无线(例如:红外、无线、微波)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、磁盘、磁带)、光介质(例如:光盘)或半导体介质(例如:固态硬盘(Solid State Drive,SSD))等。这些功能究竟以硬件还是软件来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述本发明方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所披露的装置、电子设备和方法,可以通过其他的方式实现。例如,以上描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的、机械的或其他的形式连接。

所述作为分离部件说明的单元可以是或也可以不是物理上分开的,作为单元显示的部件可以是或也可以不是物理单元,既可以位于一个位置,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或全部单元来解决本发明实施例方案要解决的问题。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术作出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(包括:个人计算机、服务器、数据中心或其他网络设备)执行本发明各个实施例所述方法的全部或部分步骤。而上述存储介质包括如前述所列举的各种可以存储程序代码的介质。

以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种音频播放的回音消除方法、装置及电子设备
  • 一种现场音频播放和采集系统及回音消除方法
技术分类

06120113207745