一种基于ARM平台的多路混音方法技术

技术编号:33890024 阅读:7 留言:0更新日期:2022-06-22 17:24
本发明专利技术公开了一种基于ARM平台的多路混音方法,属于语音处理领域。该方法从网口接收语音数据包到拆包得到语音净荷,再到多路混音,再到混音完成后发送回终端,完整地解决了音频或音视频会议中音频的处理流程。同时,本发明专利技术创造性地运用了自适应加权混音算法,并基于ARM汇编指令进行基本数学运算,从而大大改善了混音后色声音质量,并提高了运行效率,显著降低了对处理器的性能要求。降低了对处理器的性能要求。降低了对处理器的性能要求。

【技术实现步骤摘要】
一种基于ARM平台的多路混音方法


[0001]本专利技术属于语音处理
,具体来说是一种基于ARM平台实现的针对音频会议或音视频会议的多路混音方法。

技术介绍

[0002]当今社会对音频会议系统或者音视频会议系统的应用需求越来越高,此类会议的渐渐显示出以下特点:
[0003]1)会议规模越来越大,参会人数动辄达两位数甚至更多;
[0004]2)会议服务器越来越小型化、便携化、嵌入式化。
[0005]针对以上特点,音频会议系统或音视频会议系统对混音软件的需求也越来越高,即保证多人参会的情况下语音质量良好,混音算法的运行效率要高,对服务器处理器的性能要求越低越好。音频会议或者音视频会议系统中存在多路语音混音的需求,而且参会人数越多对混音算法的运行效率及处理器的性能要求越高。
[0006]目前,混音算法一般有以下几种:
[0007]1)线性叠加并箝位法,即将每一路的语音数据线性叠加后进行溢出检测,如果溢出,以最大值来替代。这样会造成声音波形的人为削峰,在破坏语音信号特性的同时会促使噪音的产生。
[0008]2)归一化法,即将每一路的的语音数据线性叠加后全部乘一个系数因子,使幅值归一化,带来的弊端是声音波形生硬,不平滑,声音质量失真度较大。

技术实现思路

[0009]本专利技术的目的是解决嵌入式平台中多路混音算法难以实际应用的问题,提供一种针对音频会议或音视频会议的多路混音方法。该方法能够实现基于中端ARM平台的多路(至少十路)混音。
[0010]为实现上述目的,本专利技术采取以下技术方案:
[0011]一种基于ARM平台的多路混音方法,包括以下步骤:
[0012](1)确定混音路数,依据混音路数初始化FIFO音频数据预存栈,FIFO音频数据预存栈具有与混音路数相等的通道数;然后,启动定时器,同时创建并启动混音线程;
[0013](2)从网口接收音频数据并拆包,得到音频净荷数据;依据音频净荷数据的特征确定数据的路数,然后依据路数将数据预存至FIFO音频数据预存栈的相应通道中;
[0014](3)定时器的每个周期中,混音线程从FIFO音频数据预存栈的各通道中取数一次,基于ARM汇编指令进行自适应加权混音运算;自适应加权混音运算的方式为,使用一个可变的衰减因子对语音进行衰减,这个衰减因子也就代表语音的权重;当混音数据溢出时,衰减因子减小,使得溢出的数据在衰减后能够处于临界值以内;在混音数据没有溢出时,衰减因子增大,使数据平缓变化;
[0015](4)混音完成后进行净荷数据打包,并经由网口发送回语音终端。
[0016]进一步的,步骤(3)中基于ARM汇编指令进行自适应加权混音运算的具体方式为,使用宏定义的形式实现如下过程,其中,宏定义内的数学运算采用带饱和进位的ARM汇编指令来实现:
[0017]1)假设本次会议共有m路音频流,n为一帧的样本数目,[i]为一帧中的第i个样本,[j]为第j路音频流,input[j][i]为第j个输入音频流当前帧的第i个样本,则,没有数据溢出时发给第p个参会人员的混音数据由下式计算:
[0018][0019]2)有溢出时的自适应加权运算过程如下:
[0020]a)衰减因子k初始值为1
[0021]b)对于一帧中的样本,输出音频流为:
[0022]output[i]=mix[i]*k;
[0023]如果output[i]大于预设的最大值MAX,则令output[i]=MAX,并使k=MAX/output[i];如果output[i]小于预设的最小值MIN,则令output[i]=MIN,并使k=output[i]/MIN;
[0024]c)如果k<1,则令k=k+SIZE,其中,SIZE=(1

k)/32;转到步骤b)继续处理下一帧。
[0025]本专利技术的有益效果是:
[0026]1、本专利技术逻辑清晰、使用简便,可简便的适用于音视频会议系统。
[0027]2、本专利技术使用自适应混音加权算法,大大减小了混音数据的失真度,带来了更好的声音效果。
[0028]3、本专利技术创造性地运用了ARM汇编指令进行带饱和进位的基本运算,从而大大提高了软件的运行效率,显著降低了对处理器的性能要求,满足了小型化嵌入式处理器对多路混音的需求。
附图说明
[0029]图1是本专利技术实施例中多路混音的流程图。
具体实施方式
[0030]为将本专利技术的技术方案优势描述的更加清楚,下面结合附图对本专利技术的具体实施方式作进一步的详细阐述。
[0031]一种基于ARM平台的多路混音方法,包括以下步骤:
[0032]依据混音路数初始化混音器的fifo音频数据预存栈,作用是预存每一路的话音数据;
[0033]创建混音线程,启动20ms的定时器码(可对20ms间隔的线性pcm语音数据进行混音,支持A律pcm数据与线性pcm数据的转换),混音线程每隔20ms从fifo中取出所有路数的音频数据进行混音;
[0034]输出混音结果;其中,混音算法采用了自适应加权混音算法,主要实现过程就是使用一个衰减因子,对音频数据进行衰减,衰减因子会随着数据而变化。当混音数据溢出时,衰减因子比较小,使溢出的音频数据衰减以后处于临界值以内,当数据没有溢出时,衰减因子会慢慢增加,尽量保持数据的平滑变化,这样做既保证了整体的声强不至于衰减太快,又
保证了较小的失真度,改善了传统做法那样对于混音数据使用同一个衰减因子来进行带来的混音数据过渡生硬不平滑,甚至声音失真的缺点。
[0035]此外,当混音路数较多时,实现过程中含有频繁的叠加运算,若单纯使用高级语言实现,那么对处理器的性能有较高要求,在ARM上运行的效率是比较低的,远不能达到理想中的使用效果。为了提高软件运行效率,采用了ARM汇编指令实现算法中的运算步骤,将实现过程中的数学计算写成宏定义的形式,宏定义内采用ARM汇编指令来实现,当混音路数增多时,大大提高了软件运行效率。
[0036]以下为以更具体的例子:
[0037]如图1所示,一种基于ARM平台的多路混音方法,包括以下步骤:
[0038]1)初始化,初始化过程中确定混音路数即参会人数,依据混音路数初始化fifo,然后启动20ms定时器,同时创建并启动混音算法线程;
[0039]2)音频接收程序从网口接收音频数据并拆包得到音频净荷数据并调用fifo存数函数进行数据预存,并依据数据特征告知fifo该路数据的通道数。当前市面上多数语音终端PCM语音数据为20ms一包,故该存数过程为20ms一次;
[0040]3)混音线程每隔20ms从fifo各通道中取数一次进行混音运算。该混音算法创造性地对归一化法做了改进完善即自适应加权算法,即使用一个可变的衰减因子对语音进行衰减,这个衰减因子也就代表语音的权重,衰减因子随着音频数据的变化而变化,所以称为自适应加权混音。当数据溢出本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ARM平台的多路混音方法,其特征在于,包括以下步骤:(1)确定混音路数,依据混音路数初始化FIFO音频数据预存栈,FIFO音频数据预存栈具有与混音路数相等的通道数;然后,启动定时器,同时创建并启动混音线程;(2)从网口接收音频数据并拆包,得到音频净荷数据;依据音频净荷数据的特征确定数据的路数,然后依据路数将数据预存至FIFO音频数据预存栈的相应通道中;(3)定时器的每个周期中,混音线程从FIFO音频数据预存栈的各通道中取数一次,基于ARM汇编指令进行自适应加权混音运算;自适应加权混音运算的方式为,使用一个可变的衰减因子对语音进行衰减,这个衰减因子也就代表语音的权重;当混音数据溢出时,衰减因子减小,使得溢出的数据在衰减后能够处于临界值以内;在混音数据没有溢出时,衰减因子增大,使数据平缓变化;(4)混音完成后进行净荷数据打包,并经由网口发送回语音终端。2.根据权利要求1所述的一种基于ARM平台的多路混音方法,其特征在于,步骤(3)中基于ARM汇编指令...

【专利技术属性】
技术研发人员:张敬辉王志浩董彦磊
申请(专利权)人:中国电子科技集团公司第五十四研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1