CN103870234A - 一种混音方法及其装置 - Google Patents
一种混音方法及其装置 Download PDFInfo
- Publication number
- CN103870234A CN103870234A CN201410069079.3A CN201410069079A CN103870234A CN 103870234 A CN103870234 A CN 103870234A CN 201410069079 A CN201410069079 A CN 201410069079A CN 103870234 A CN103870234 A CN 103870234A
- Authority
- CN
- China
- Prior art keywords
- sound card
- audio
- voice data
- data
- mixing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明提供一种混音方法,包括:利用声卡以预设速度播放预存的第一音频数据;获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号;根据所述控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。本发明可以应用于所有支持声卡的操作系统中,通用性强,不受操作系统繁忙程度的影响。
Description
技术领域
本发明涉及语音处理技术领域,尤其涉及一种混音方法及其装置。
背景技术
随着互联网技术的发展,网络用户对实时沟通的需求变得越来越强烈,文字媒体已经不能满足用户的需求,通过语音,视频等媒体进行沟通交流的技术逐渐被开发出来。其中语音媒体是被使用的最广泛的技术,从简单的双人对话,到多人对话,各种基于语音交流的系统软件被研发出来。每个参与语音聊天系统的人都将自己的音频数据传递到服务器,服务器负责将收到的音频数据转发给所有参与的人员。对于N个人参与的语音系统,服务器收到音频数据量为NM,转发的音频数据量为(N-1)NM,因此音频数据对于服务器的带宽占用成指数增长。为了解决这个问题,服务器采用混音的方法,将收到的N路语音数据通过混音算法混合成单一的音频数据输出。这样,对于N个人参与的语音系统,服务器收到数据量为NM,转发的数据量为(N-1)M,降低了占用的服务器的带宽。
混音处理为采用混音算法将多个音频数据混合成单一的音频数据的技术,例如在两人对唱中,将两个人从不同麦克风输入的声音和背景乐混合成一个音频文件进行存储,这个混合的过程就叫做混音。
现有技术的混音处理对于混音时间点的控制,常采用windows的高精度计时器,通过windows操作系统提供的精确到微秒的计时器,从音频数据中取出需要混合的数据量,然后根据混音算法混合数据。
但是windows操作系统是一种收费的价格昂贵的系统,同时采用windows的高精度计时器的混音时间点控制方法与操作系统直接相关,且现有的服务器通常不安装windows操作系统。如果语音系统的服务器没有采用windows操作系统,则无法实现混音时间点的控制。同时windows的高精度计时器所计算的混音时间点的精度会随windows操作系统的繁忙程度有所偏差。
发明内容
有鉴于此,本发明提供一种混音方法及其装置,其可以应用于所有支持声卡的操作系统中,通用性强,不受操作系统繁忙程度的影响。
本发明提供一种混音方法,包括:
利用声卡以预设速度播放预存的第一音频数据;
获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号;
根据所述控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的音频数据,并对其进行混音。
进一步地,本发明所述预存的第一音频数据为0。
进一步地,本发明所述声卡为硬件声卡或者软件虚拟声卡。
进一步地,本发明所述缓冲器为抖动缓冲器。
进一步地,本发明所述从至少一个缓冲器中读取声卡进行播放所需数据量的第二音频数据时,如所述缓冲器中剩余的音频数据不满足声卡进行播放所需要的音频数据量,则从上次读取的音频数据中截取音频数据以满足数据量要求。
进一步地,本发明所述从上次读取的音频数据中截取音频数据为根据音频数据采集时间从后向前进行截取。
本发明还提供一种混音装置,包括:
音频播放模块,用于利用声卡以预设速度播放预存的第一音频数据;
信号产生模块,用于获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号;
音频混音模块,用于根据所述控制信号从至少一个缓冲器中读取声卡进行播放所需数据量的第二音频数据,并对其进行混音。
进一步地,本发明所述预存的第一音频数据为0。
进一步地,本发明所述声卡为硬件声卡或者软件虚拟声卡。
进一步地,本发明所述缓冲器为抖动缓冲器。
由以上技术方案可见,本发明利用声卡以预设速度播放预存的第一音频数据,根据每次播放完毕读取音频数据时声卡产生的控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。这样,无须使用windows的高精度计时器,而是利用声卡播放的速率控制混音的时间点。因此,本发明可以应用于所有支持声卡的操作系统中,通用性强,不受操作系统繁忙程度的影响。
附图说明
图1是本发明一种实施方式中混音方法的流程图;
图2是本发明音频数据保存到抖动缓冲器中的流程图;
图3是本发明从抖动缓冲器中读取出需要混音的音频数据的流程图;
图4是本发明一种实施方式中混音装置的结构图。
具体实施方式
本发明利用声卡以预设速度播放预存的第一音频数据,根据每次播放完毕读取音频数据时声卡产生的控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。这样,无须使用windows的高精度计时器,而是利用声卡播放的速率控制混音的时间点。因此,本发明可以应用于所有支持声卡的操作系统中,通用性强,不受操作系统繁忙程度的影响。
本发明提供一种混音方法,应用于语音系统中的混音服务器。
参看图1,所述方法包括:
S1、利用声卡以预设速度播放预存的第一音频数据。
S2、获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号。
S3、根据所述控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。
具体地,声卡以预设速度播放混音服务器上预存的所述第一音频数据。所述声卡在播放第一音频数据的时候,先读取播放所需的音频数据量,然后对读取的音频数据进行播放,播放完毕时,再次读取播放所需的音频数据量,然后对读取的音频数据进行播放。在具体操作中,声卡并不是在播放完毕读取的第一音频数据时,再次读取播放所需的第一音频数据,而是在每次接近播放完毕时(播放完毕前2-3ms),再次读取播放所需的第一音频数据。为便于说明,本发明仅以理想状态,即声卡在播放完毕读取的第一音频数据时,再次读取播放所需的第一音频数据进行说明。所述声卡每次播放完毕读取的第一音频数据时,产生控制信号,因此所述控制信号代表所述声卡播放第一音频数据的速度。而用户接口接收到所述控制信号后,按照每次声卡播放第一音频数据所需的数据量从缓冲器中读取需要进行混音的第二音频数据。本发明并不将读取的需要进行混音的第二音频数据发送给声卡,而是针对读取的第二音频数据完成混音操作。声卡播放的第一音频数据是混音服务器提供的音频数据,并不是从缓冲器中读取的第二音频数据。本发明仅是利用声卡播放第一音频数据产生的控制信号来从缓冲器总读取需要混音的第二音频数据。而这样,每次对第二音频数据进行混音操作的时间点和声卡播放第一音频数据同步。因此,本发明利用声卡播放的速率实现了混音时间点的控制。所述声卡播放第一音频数据的速度可以根据系统需要设定。
进一步,本发明所述预存的第一音频数据为0。
本发明声卡播放混音服务器提供的第一音频数据,令声卡每次播放完毕读取的第一音频数据时产生控制信号。由于本发明仅利用声卡的播放机制来进行混音时间点控制,并不是为了播放音频数据。因此,优选地,声卡播放混音服务器提供的为0的音频数据,并可以以静音的方式播放该音频数据。
进一步,本发明所述声卡为硬件声卡或者软件虚拟声卡。
具体地,本发明既可以利用服务器安装的硬件声卡,也可以在服务器并未安装硬件声卡的时候安装软件虚拟声卡来完成。从而,避免了语音系统成本的增加,安装简单,使用方便。
进一步,本发明所述缓冲器为抖动缓冲器。
如果网络传输速度是匀速的,播放的音频数据也呈现连续性。但是网络传输的速度通常都是变化的,变化的网络传输速度称之为网络抖动。网络抖动会影响音频数据播放的连续性,比如网络传输速度比播放速度慢时候,会发生播放的暂停。这时候通常会设置用于存储音频数据的抖动缓冲,将接收的音频数据存放到抖动缓冲器中,从抖动缓冲器中读取音频数据进行播放。从而,保证播放的音频数据不会受到网络传输速度变化即网络抖动的影响,维持数据的连续播放。具体来说,本发明N个抖动缓冲器为相同规格的缓冲器,从而保证本发明从N个抖动缓冲器中读取的N路音频数据保持同步,保证针对同步的N路音频数据进行混音。
本发明中的抖动缓冲是一个存储第二音频数据的缓存,这些缓存被标记为块,每个块里包含若干毫秒的音频数据。此外,每个块还存储着此音频被采集的时间和此音频的播放时长,每个块按照被采集的时间进行排序,采集时间早的排在前面,采集时间晚的排在后面。
参看图2,将音频数据保存到抖动缓冲器中的流程包括:
201、抖动缓冲器接收音频数据。
202、判断抖动缓冲器中的每个音频数据块的起始采集时间加上其播放时长是否小于下一次需要输出音频的起始时间。音频数据块的起始采集时间加上其播放时长小于下一次需要输出音频的起始时间表明该音频数据块为已经输出过的音频数据块;音频数据块的起始采集时间加上其播放时长大于或者等于下一次需要输出音频的起始时间表明该音频数据块为尚未输出过的音频数据块。
203、释放起始采集时间加上其播放时长小于下一次需要输出音频的起始时间的音频数据块所占据的缓冲器的存储空间。如果一音频数据块为已经输出过的音频数据块,则表明该音频数据块无需继续保存在缓冲器中,释放此数据块所占据的缓冲器的存储空间。
204、判断抖动缓冲器中的音频数据块中的丢失数据块的总数量是否超过设定阈值。
205、如果超过设定阈值,则重置抖动缓冲,否则,执行步骤206。如果抖动缓冲器丢失的音频数据块数量超出抖动缓冲设定的阈值,表明丢失音频数据块太多,无法完成音频数据块输出,则需要重置抖动缓冲。
206、判断接收的音频数据块的起始采集时间加上其播放时长,并加上抖动缓冲器的适应时长是否大于或者等于下一次需要输出音频的起始时间;
207、如果接收的音频数据块的起始采集时间加上其播放时长,并加上抖动缓冲器的适应时长大于或者等于下一次需要输出音频的起始时间,则将该音频数据块保存到抖动缓冲器中的未使用空间。如未找到未使用空间,则删除采集时间最早的音频数据块,并释放其存储空间为未使用空间。
参看图3,本发明所述声卡在抖动缓冲器中读取音频数据是根据音频数据块存储的顺序依次进行读取。由于本发明如何从抖动缓冲器中读取音频数据块同现有技术中从抖动缓冲器中读取数据并无差异,因此仅简述其读取流程。假设,抖动缓冲器并未被重置,且无需添加内插数据的情况下,从抖动缓冲器中读取出需要混音的音频数据的流程包括:
301、判断能否从存储在抖动缓冲器中的音频数据块中找出采集时间与需要读取的音频数据时间相同,且播放时长大于或者等于需要读取的音频数据时长的音频数据块。
302、如果能够找出该音频数据块,则从抖动缓冲器中复制该音频数据块,并释放该音频数据块占用的抖动缓冲空间。
303、更新抖动缓冲存储的音频数据量,返回读取音频数据成功信息。
304、如果未能找出该音频数据块,则判断能否从抖动缓冲器中存储的音频数据块中找出采集时间小于或者等于需要读取的音频数据的时间,且播放时长大于或者等于需要读取的音频数据时长的音频数据块,并执行步骤302。
305、如果未能找出该音频数据块,则判断能否从抖动缓冲器中存储的音频数据块中找出采集时间小于或者等于需要读取的音频数据的时间,且采集时间加上播放时长大于需要读取音频数据的时间的音频数据块,并执行步骤302。
306、如果未能找出该音频数据块,则判断能否从抖动缓冲器中存储的音频数据块中找出采集时间大于或者等于需要读取的音频数据的时间,并且距离需要读取的音频数据时间最近,且播放时长最长的音频数据块,并执行步骤302。
另外,如果网络抖动的非常剧烈,比如网速过慢,会导致抖动缓冲中存储的音频数据量过少。从抖动缓冲器中读取音频数据时,如果由于抖动缓冲器中剩余的音频数据量并不满足混音所需要的音频数据量,称之为欠载现象。如果发生欠载现象,则混音的效果会不好,例如造成音频明显的卡顿效果以及延时明显增长等。
为了解决上述由于欠载造成的混音效果不好的问题,本发明实施例所述方法还包括:
所述从至少一个缓冲器中读取声卡进行播放所需数据量的第二音频数据时,如所述缓冲器中剩余的音频数据不满足声卡进行播放所需要的音频数据量,则从上次读取的音频数据中截取音频数据以满足数据量要求。
具体地,从抖动缓冲器中读取第二音频数据,当抖动缓冲器中存储的音频数据量不足以满足混音所需要的音频数据量(声卡进行播放所需要的音频数据量)时,从上次读取的音频数据中截取出一段音频数据,令读取出的音频数据量和截取出的音频数据量的总和满足混音所需要的音频数据量的要求。这样,即使抖动缓冲器发生欠载现象,本发明实施例也能够通过上述方式保证混音的数据量满足混音所需要的音频数据量,即通过上述方式保证每次混音的数据量均为声卡每次播放所需要的音频数据量。因此,本发明不会由于欠载影响混音的效果,不会造成音频明显的卡顿效果以及延时明显增长。
进一步,本发明所述从上次读取的音频数据中截取音频数据为根据音频数据采集时间从后向前进行截取。
由于每个音频数据块按照被采集的时间进行排序,采集时间早的排在前面,采集时间晚的排在后面。当抖动缓冲器中剩余的音频数据不满足混音所需要的音频数据时,根据音频数据采集时间从后向前从上次读取的音频数据中截取音频数据。这样保证截取的音频数据的采集时间点更加接近本次读取的音频数据的采集时间点,从而减少声音的卡顿的同时能够保证获得更好的混音效果。
对应于上述方法,本发明还提供一种混音装置,应用于语音系统中的混音服务器。
参看图4,所述混音装置包括:
音频播放模块41,用于利用声卡以预设速度播放预存的第一音频数据。
信号产生模块42,用于获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号。
音频混音模块43,用于根据所述控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。
进一步,本发明所述预存的第一音频数据为0。
进一步,本发明所述声卡为硬件声卡或者软件虚拟声卡。
进一步,本发明所述缓冲器为抖动缓冲器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种混音方法,其特征在于,包括:
利用声卡以预设速度播放预存的第一音频数据;
获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号;
根据所述控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。
2.根据权利要求1所述的方法,其特征在于,所述预存的第一音频数据为0。
3.根据权利要求1所述的方法,其特征在于,所述声卡为硬件声卡或者软件虚拟声卡。
4.根据权利要求1所述的方法,其特征在于,所述缓冲器为抖动缓冲器。
5.根据权利要求1所述的方法,其特征在于,所述从至少一个缓冲器中读取声卡进行播放所需数据量的第二音频数据时,如所述缓冲器中剩余的音频数据不满足声卡进行播放所需要的音频数据量,则从上次读取的音频数据中截取音频数据以满足数据量要求。
6.根据权利要求5所述的方法,其特征在于,所述从上次读取的音频数据中截取音频数据为根据音频数据采集时间从后向前进行截取。
7.一种混音装置,其特征在于,包括:
音频播放模块,用于利用声卡以预设速度播放预存的第一音频数据;
信号产生模块,用于获取所述声卡每次播放完毕读取的第一音频数据时所产生的控制信号;
音频混音模块,用于根据所述控制信号从至少一个缓冲器中按照声卡进行播放所需数据量读取需要进行混音的第二音频数据,并对其进行混音。
8.根据权利要求7所述的装置,其特征在于,所述预存的第一音频数据为0。
9.根据权利要求7所述的装置,其特征在于,所述声卡为硬件声卡或者软件虚拟声卡。
10.根据权利要求7所述的装置,其特征在于,所述缓冲器为抖动缓冲器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410069079.3A CN103870234B (zh) | 2014-02-27 | 2014-02-27 | 一种混音方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410069079.3A CN103870234B (zh) | 2014-02-27 | 2014-02-27 | 一种混音方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870234A true CN103870234A (zh) | 2014-06-18 |
CN103870234B CN103870234B (zh) | 2017-03-15 |
Family
ID=50908815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410069079.3A Active CN103870234B (zh) | 2014-02-27 | 2014-02-27 | 一种混音方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870234B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040031379A1 (en) * | 1999-11-17 | 2004-02-19 | Alain Georges | Automatic soundtrack generator |
JP2005128296A (ja) * | 2003-10-24 | 2005-05-19 | Yamaha Corp | オーディオ・ミキサー装置 |
US20060064300A1 (en) * | 2004-09-09 | 2006-03-23 | Holladay Aaron M | Audio mixing method and computer software product |
CN101510988A (zh) * | 2009-02-19 | 2009-08-19 | 深圳华为通信技术有限公司 | 一种语音信号的处理、播放方法和装置 |
CN101656072A (zh) * | 2009-09-08 | 2010-02-24 | 北京飞利信科技股份有限公司 | 混音装置、混音方法及利用该混音装置的会议系统 |
CN102325173A (zh) * | 2011-08-30 | 2012-01-18 | 重庆抛物线信息技术有限责任公司 | 一种混音视频共享方法及系统 |
CN102982832A (zh) * | 2012-11-24 | 2013-03-20 | 安徽科大讯飞信息科技股份有限公司 | 一种在线卡拉ok伴奏、人声与字幕的同步方法 |
CN103337240A (zh) * | 2013-06-24 | 2013-10-02 | 华为技术有限公司 | 处理语音数据的方法、终端、服务器及系统 |
-
2014
- 2014-02-27 CN CN201410069079.3A patent/CN103870234B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040031379A1 (en) * | 1999-11-17 | 2004-02-19 | Alain Georges | Automatic soundtrack generator |
JP2005128296A (ja) * | 2003-10-24 | 2005-05-19 | Yamaha Corp | オーディオ・ミキサー装置 |
US20060064300A1 (en) * | 2004-09-09 | 2006-03-23 | Holladay Aaron M | Audio mixing method and computer software product |
CN101510988A (zh) * | 2009-02-19 | 2009-08-19 | 深圳华为通信技术有限公司 | 一种语音信号的处理、播放方法和装置 |
CN101656072A (zh) * | 2009-09-08 | 2010-02-24 | 北京飞利信科技股份有限公司 | 混音装置、混音方法及利用该混音装置的会议系统 |
CN102325173A (zh) * | 2011-08-30 | 2012-01-18 | 重庆抛物线信息技术有限责任公司 | 一种混音视频共享方法及系统 |
CN102982832A (zh) * | 2012-11-24 | 2013-03-20 | 安徽科大讯飞信息科技股份有限公司 | 一种在线卡拉ok伴奏、人声与字幕的同步方法 |
CN103337240A (zh) * | 2013-06-24 | 2013-10-02 | 华为技术有限公司 | 处理语音数据的方法、终端、服务器及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103870234B (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8718065B2 (en) | Transmission using multiple physical interface | |
CN105406975A (zh) | 一种聊天室中赠送虚拟礼物及特效触发方法与系统 | |
US9626364B2 (en) | Streaming media | |
CN108234790B (zh) | 多人语音通信方法、装置、终端设备和存储介质 | |
CN112087652A (zh) | 视频的制作方法、共享方法、装置、电子设备及存储介质 | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
CN103888377A (zh) | 报文缓存方法及装置 | |
CN105393544A (zh) | 媒体流传送中的动态轨道切换 | |
CN101764831A (zh) | 一种流媒体数据共享方法、共享系统和流媒体节点 | |
CN106375835B (zh) | 一种流媒体播放方法及设备 | |
CN108900469A (zh) | 连接进度页面展示方法、终端设备及计算机可读介质 | |
CN106415520A (zh) | 用于回放的高码率内容的预测性递送的系统和方法 | |
CN110517692A (zh) | 热词语音识别方法和装置 | |
CN104219286A (zh) | 流媒体处理方法、装置、客户端、cdn节点服务器及终端 | |
CN108702370A (zh) | 用于网络技术的多流交织 | |
CN104394601A (zh) | 一种WiFi无线网络的访问控制方法、装置及路由器 | |
CN110069533B (zh) | 一种基于区块链的事件订阅方法及装置 | |
CN103336670A (zh) | 一种基于数据温度对数据块自动进行分布的方法和装置 | |
CN108600407A (zh) | 一种ip地址分配方法、装置、设备及机器可读存储介质 | |
CN103401941A (zh) | 一种gis场景信息处理方法、系统、节点机和服务端 | |
CN105812439A (zh) | 一种音频传输方法及装置 | |
CN108632399A (zh) | 一种地址分配方法和装置 | |
CN104202309B (zh) | 一种数据传输的控制方法及装置 | |
CN108833200A (zh) | 一种大数据文件自适应单向传输方法及装置 | |
CN102802041A (zh) | 支持多个实时动态数据源的智能流媒体服务器的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 801, building 5, No. 9, Shouti South Road, Haidian District, Beijing 100048 Patentee after: Beijing Huafang Technology Co.,Ltd. Address before: Room 801, building 5, No. 9, Shouti South Road, Haidian District, Beijing 100048 Patentee before: BEIJING 6ROOMS TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |