发明内容
本发明针对背景技术的问题提供一种网络音频混音处理方法及装置,提高运算效率,容易在单片机中实现,只采用一个单片机节约成本。
为了实现上述目的,本发明提出一种网络音频混音处理方法,包括以下步骤:
将各路音频数据进行有符号累加;
对累加后音频数据进行分段压缩;
确定各分段的衰减因子;
获取输出的混音音频信号。
优选地,所述的有符号累加,具体为:包含数据位数中的符号位进行累加。
优选地,所述的对累加后音频数据进行分段压缩,分段区间的长度为2Q-1,其中,Q表示音频数据位数。
优选地,所述的确定各分段的衰减因子,具体为:
其中,
表示第n分段区间内的衰减因子,n
i=min(|MixData|/2
Q-1,4),MixData表示累加后的音频数据,Q表示音频数据位数;k表示基本衰减因子,k>1。
优选地,所述的将各路音频数据进行有符号累加步骤与对累加后音频数据进行分段压缩步骤之间,还包括:
对累加后的音频数据取绝对值。
优选地,所述的获取输出的混音音频信号,包括:
对数据进行恢复符号操作。
优选地,所述的对数据进行恢复符号操作步骤之前,还包括:
分离获取累加后音频数据的高位数据和低位数据。
优选地,所述的对数据进行恢复符号操作,具体公式如下:
其中,Output表示恢复符号操作后的输出的混音音频信号;MixData表示累加后的音频数据;
表示第n分段区间内的衰减因子,sgn(.)表示符号函数,
n
j=min(|MixData|/2
Q-1,4),Q表示音频数据位数;d
j(t)=c
j(t)*7;c
j(t)=MOD(|MixData|,2
Q-1)。
本发明还提出一种网络音频混音处理装置,包括:
单片机;
存储器,耦合至所述的单片机并存储有指令,所述的指令在由所述单片机执行实现所述的网络音频混音处理方法的步骤。
本发明提出一种网络音频混音处理方法及装置,所述混音处理方法采用分段压缩的方法进行混音,即使得运算效率高,也容易在单片机中实现;通过实际波形观察,得出该方法混音后,并没有溢出及切顶现象,而是都压缩在接近上下限的位置,音量较大,剩余可懂度高,听起来也没有明显噪声干扰;本发明装置只需要使用ARMCortexTM-M4架构以上的单片机即可实现功能;并且利用现有的LWIP协议栈,使系统能够支持TCP/IP中基本的传输协议;由于只需要一个单片机处理的缘故,从电路上就可以省去一块FPGA,从而节约成本;另外,在对接外部设备时也能够通过标准的TCP/IP协议进行通信;开发方便,去除了FPGA调试固有的复杂性,系统软件升级也比较方便,因为只有一个主控芯片,所以可以使用网络升级。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提出一种网络音频混音处理方法;
本发明第一优选实施例中,如图1所示,包括以下步骤:
S10、将各路音频数据进行有符号累加;
本发明实施例中,所述的有符号累加,具体为:包含数据位数中的符号位进行累加;
本发明与输入信号Input输入信号无关,而与混音后的MixData有关;
S20、对累加后音频数据进行分段压缩;
本发明实施例中,对累加后音频数据MixData进行分段压缩,以消除MixData可能产生的溢出;无论参与混音的信号路数M为多少,|MixData|幅度绝对值的值域为[0,+∞);现在对[0,+∞)进行分段,每个区间的长度为2Q-1;从0开始计数,第0个区间的范围是[0,2Q -1],第1个区间的范围是[2Q-1,2*2Q-1];依次类推,第n个区间范围是n*2Q-1,(n+1)*2Q-1];
S30、确定各分段的衰减因子;
本发明实施例中,确定各分段的衰减因子,具体为:
其中,
表示第n分段区间内的衰减因子,n
j=min(|MixData|/2
Q-1,4),MixData表示累加后的音频数据,Q表示音频数据位数;k表示基本衰减因子,k一般取2的整数次幂;根据算法特点,k值太小会较大地收缩波形造成整体失真,太大则会导致高强度信号严重失真。所以取k=8或16较好。本实施例中取8;
S40、获取输出的混音音频信号;
S401、将获取的数据进行恢复符号操作;
本发明实施例中,所述的对数据进行恢复符号操作,具体公式如下:
其中,Output表示恢复符号操作后的输出的混音音频信号;MixData表示累加后的音频数据;
表示第n分段区间内的衰减因子,sgn(.)表示符号函数,
n
j=min(|MixData|/2
Q-1,4),Q表示音频数据位数;d
j(t)=c
j(t)*7;c
j(t)=MOD(|MixData|,2
Q-1);
本发明第二优选实施例中,如图2所示,包括以下步骤:
S10、将各路音频数据进行有符号累加;
本发明实施例中,所述的有符号累加,具体为:包含数据位数中的符号位进行累加;
本发明与输入信号Input输入信号无关,而与混音后的MixData有关;
S50、对累加后的音频数据取绝对值;
S20、对累加后音频数据进行分段压缩;
本发明实施例中,对累加后音频数据MixData进行分段压缩,以消除MixData可能产生的溢出;无论参与混音的信号路数M为多少,|MixData|幅度绝对值的值域为[0,+∞);现在对[0,+∞)进行分段,每个区间的长度为2Q-1;从0开始计数,第0个区间的范围是[0,2Q -1],第1个区间的范围是[2Q-1,2*2Q-1];依次类推,第n个区间范围是n*2Q-1,(n+1)*2Q-1];
S30、确定各分段的衰减因子;
本发明实施例中,确定各分段的衰减因子,具体为:
其中,
表示第n分段区间内的衰减因子,ni=min(|MixData|/2
Q-1,4),MixData表示累加后的音频数据,Q表示音频数据位数;k表示基本衰减因子,k一般取2的整数次幂;根据算法特点,k值太小会较大地收缩波形造成整体失真,太大则会导致高强度信号严重失真。所以取k=8或16较好。本实施例中取8;
S40、获取输出的混音音频信号。
S401、将获取的数据进行恢复符号操作。
本发明实施例中,所述的对数据进行恢复符号操作,具体公式如下:
其中,Output表示恢复符号操作后的输出的混音音频信号;MixData表示累加后的音频数据;
表示第n分段区间内的衰减因子,sgn(.)表示符号函数,
n
j=min(|MixData|/2
Q-1,4),Q表示音频数据位数;d
j(t)=c
j(t)*7;c
j(t)=MOD(|MixData|,2
Q-1);
本发明第三优选实施例中,如图3所示,包括以下步骤:
S10、将各路音频数据进行有符号累加;
本发明实施例中,所述的有符号累加,具体为:包含数据位数中的符号位进行累加;
本发明与输入信号Input输入信号无关,而与混音后的MixData有关;
S50、对累加后的音频数据取绝对值;
S20、对累加后音频数据进行分段压缩;
本发明实施例中,对累加后音频数据MixData进行分段压缩,以消除MixData可能产生的溢出;无论参与混音的信号路数M为多少,|MixData|幅度绝对值的值域为[0,+∞);现在对[0,+∞)进行分段,每个区间的长度为2Q-1;从0开始计数,第0个区间的范围是[0,2Q -1],第1个区间的范围是[2Q-1,2*2Q-1];依次类推,第n个区间范围是n*2Q-1,(n+1)*2Q-1];
S30、确定各分段的衰减因子;
本发明实施例中,确定各分段的衰减因子,具体为:
其中,
表示第n分段区间内的衰减因子,ni=min(|MixData|/2
Q-1,4),MixData表示累加后的音频数据,Q表示音频数据位数;k表示基本衰减因子,k一般取2的整数次幂;根据算法特点,k值太小会较大地收缩波形造成整体失真,太大则会导致高强度信号严重失真。所以取k=8或16较好。本实施例中取8;
S40、获取输出的混音音频信号。
S400、分离获取累加后音频数据的高位数据和低位数据,目的是使繁杂的公式使用高效的C语音进行实现;
S401、将获取的数据进行恢复符号操作。
本发明实施例中,所述的对数据进行恢复符号操作,具体公式如下:
其中,Output表示恢复符号操作后的输出的混音音频信号;MixData表示累加后的音频数据;
表示第n分段区间内的衰减因子,sgn(.)表示符号函数,
n
j=min(|MixData|/2
Q-1,4),Q表示音频数据位数;d
j(t)=c
j(t)*7;c
j(t)=MOD(|MixData|,2
Q-1);
本发明不会使信号OUTPUT发生溢出,证明过程如下:
当n=0时,MixData没发生溢出;
当n>0时,当k取值是2的整数次幂时,算法中的乘除法操作可简化为移位操作,大大减少了运算的复杂程度,节省了软件开销。
本发明提出的混音方法运算过程中,只需要移位,与,加操作,所以效率非常高,并且通过实验得出即便混音超过16路时,音质仍然能流畅清晰,并且失真度小于0.3%。
本发明优选实施例中,如图4中图(a)至图(f)所示,通过实际波形观察,得出该算法混音后,并没有溢出及切顶现象,而是都压缩在接近上下限的位置,音量较大,剩余可懂度高,听起来也没有明显噪声干扰。
本发明还提出一种网络音频混音处理装置;
本发明第四优选实施例中,如图5所示,网络音频混音处理装置包括:
单片机;
存储器,耦合至所述的单片机并存储有指令,所述的指令在由所述单片机执行实现所述的网络音频混音处理方法的步骤,例如:
S10、将各路音频数据进行有符号累加;
S20、对累加后音频数据进行分段压缩;
S30、确定各分段的衰减因子;
S40、获取输出的混音音频信号。
本发明实施例中,所述的网络音频混音处理装置内置单片机,可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器利用各种接口和线路连接取各个部件,通过运行或执行存储在存储器内的程序或者单元,以及调用存储在存储器内的数据,以执行网络音频混音处理的各种功能和处理数据;
存储器用于存储程序代码和各种数据,安装在网络音频混音处理装置中,并在运行过程中实现高速、自动地完成程序或数据的存取。所述存储器包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
本发明一种优选实施例中,所述的网络音频混音处理装置通过网络音频数字会议系统实现;网络音频数字会议系统还包括:
操作系统使用FREERTOS,该系统是实时性较强的嵌入式操作系统;选择该系统的原因是线程优先级抢占性好,移植方便。
网络发送模块:主要提供给LWIP及RTP音频包进行发送,最终通过以太网DMA发送到PHY芯片处;
网络接收模块:在以太网接收DMA处获取网络包,并缓存;主要提供给LWIP及RTP音频包进行接收;
音频采样模块:硬件I2S不间断地进行音频采集,当采集数据达到一定数量时(根据系统延时要求可自行设置,本系统采用336bytes),则通过以太网发送线程进行组包发送;
音频播放模块:当以太网收到RTP音频包时,进行解包,并且缓冲;每当播放线程需要输出数据时,则调用这个缓冲的数据即可;
LWIP处理模块:负责调度整个TCP/IP协议栈的发送与接收,并且将需要发送的数据给到网络发送模块。
混音处理模块:该线程只需要用于主机端,通过上文所述的实时混音算法,只需要移位,与,加操作,则可得出混音数据;最后给到音频播放线程进行播放;另外混音处理的数据也需要缓冲,当达到达到一定数量时(根据系统延时要求可自行设置,本系统采用336bytes),则通过以太网发送线程进行组包发送;
会议逻辑处理部分模块:这些模块可根据会议系统的需要进行添加,但是这些模块的优先级必须比音频、网络、混音的要低,这样才能保证网络音频的实时性;
音频传输时钟同步模块:由于主机与终端通信时,存在网络延时抖动,音频主时钟差别,导致两边时钟不同步;对此本发明使用基于IEEE1588的PTP协议进行时钟的同步。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。