关于音频混音算法

一.常用混音算法

解释:混音算法就是将多路音频输入信号根据某种规则进行运算(多路音频信号相加后做限幅处理),得到一路混合后的音频,并以此作为输出的过程。

基本有如下几种混音算法:

a>将多路音频输入信号直接相加取和作为输出;
b>将多路音频输入信号直接相加取和后,再除以混音通道数,防止溢出;
c>将多路音频输入信号直接相加取和后,做Clip操作(将数据限定在最大值和最小值之间),如有溢出就设最大值;

d>将多路音频输入信号直接相加取和后,做饱和处理,接近最大值时进行扭曲;

e>将多路音频输入信号直接相加取和后,做归一化处理,全部乘个系数,使幅值归一化;

f>将多路音频输入信号直接相加取和后,使用衰减因子限制幅值;

二.注意事项

并非任何两路音频流都可以直接混合。
两路音视频流,必须符合以下条件才能混合:

  • 1)格式相同,要解压成PCM格式;
  • 2)采样率相同,要转换成相同的采样率。主流采样率包括:16k Hz、32k Hz、44.1k Hz和48k Hz;
  • 3)帧长相同,帧长由编码格式决定,PCM没有帧长的概念,开发者自行决定帧长。为了和主流音频编码格式 的帧长保持一致,推荐采用20ms为帧长;
  • 4)位深(Bit-Depth)或采样格式(Sample Format)相同,承载每个采样点数据的bit数目要相同;
  • 5)声道数相同,必须同样是单声道或者双声道(立体声)。这样,把格式、采样率、帧长、位深和声道数对齐 了以后,两个音频流就可以混合了。

三.音量调节

IIS只是数据传输处理,本身不带音量控制,要控制音量有3个主要方式:

1. 在数据处理中直接减小相应数据就等效于减小音量(按比例缩放数据);

2. 在输出上控制DAC输出后的部分,即在DAC后添加衰减就可以减小音量;

3. 在DAC后的功率放大部分减小放大比来减小最终输出音量;

猜你喜欢

转载自blog.csdn.net/Damon_Sandy/article/details/130343171