本发明涉及音频处理领域,特别涉及模拟音频的输入增益控制方法。
背景技术:
可编程增益放大器(pga)是模拟麦克风音频输入系统中模数转换器的模拟端增益模块,现有的技术方案针对模拟端增益调整的策略,多是根据模数转换之后的数字信号的幅值大小动态地调整模拟端增益。而增益的动态调整会导致输入音频信号的非线性变化,对于一些对信号变化比较敏感的信号处理算法,特别是回声消除算法,输入音频信号的非线性变化会导致其滤波器的失调和发散,进而导致处理后的音频信号状态异常。
技术实现要素:
本发明要解决的技术问题是:提供一种模拟音频的输入增益控制方法,解决模拟音频信号频繁地非线性变化引起的滤波器失调和发散问题。
为解决上述问题,本发明采用的技术方案是:系统开始工作之前,将系统的音量区间分割为多个等级,取每个等级的最大音量值进行实际环境的增益测试,得到每个等级的增益值,将每个等级的增益值写入增益表;系统开始工作之后,监测模拟音频的系统音量变化,当系统音量发生变化的时候,通过函数接口获取系统音量,并确定系统音量的等级,然后查询增益表,获取该等级所对应增益值,然后将增益值应用到增益控制单元当中。
进一步的,所述模拟音频包括模拟麦克风音频和模拟回声音频。
进一步的,所述实际环境的增益测试为:循环播放歌曲,调整模拟麦克风音频输入部分和模拟回声音频输入部分的模数转换单元的增益值,使得数字麦克风音频信号和数字回声音频信号的幅值足够大且不失真。
本发明的有益效果是:本发明通过将系统的音量区间分割为多个等级,将每个等级的最佳的增益值写入增益表,增益控制时,利用查表的形式选取每个等级最佳的增值,有效避免了回声信号和麦克风信号频繁地非线性变化,从而可以有效地进行回声消除,进而得到正常的语音信号,提高了系统的稳定性,提升了用户体验。
附图说明
图1为本发明使用的系统结构框图。
图2为本发明中增益控制流程图。
具体实施方式
本发明使的系统结构如题1所示,该系统的原理为:模拟麦克风音频信号和模拟回声音频信号通过模数转换单元转换成数字麦克风音频信号和数字回声音频信号,回声消除单元接收到数字麦克风音频信号和数字回声音频信号后通过回声消除运算得到消除了回声的语音信号,然后语音信号输入到操作系统进行后续操作。
本发明所作用的位置是增益控制单元,增益控制单元用来对模数转换单元的模拟端增益进行控制,分为两部分:一个部分是增益表的计算,另一个部分是增益表的使用。
一、增益表的计算
系统开始工作之前,通过将系统的音量区间分割为多个等级,比如系统音量区间是0~100,可以将其平均分成10份,得到0~10,11~20,21~30,31~40,41~50,51~60,61~70,71~80,81~90,91~100共10个等级;然后取每个等级的最大音量值进行实际环境的增益测试,得到每个等级的增益值,比如设置系统音量为10,放一首歌曲,调整模拟麦克风音频输入部分和模拟回声音频输入部分的模数转换单元的增益值,使得数字麦克风音频信号和数字回声音频信号的幅值足够大且不失真,然后设置系统音量是20,放同一首歌曲,使用同样的操作,获取增益值,重复这个过程,直到获取完10组增益值,将每个等级的增益值写入增益表。
二、增益表的使用
如图2所示,系统开始工作之后,监测模拟音频的系统音量变化,当系统音量发生变化的时候,通过函数接口获取系统音量,并确定系统音量的等级,然后查询增益表,获取该等级所对应增益值,然后将增益值应用到增益控制单元当中。
实施例
实施例的系统设置环境如下:
操作系统:android5.1
麦克风型号:geg06022wfj25a
喇叭型号:yx30030-a1-12w-6ω
模数转换芯片:ac108
播放歌曲:《泡沫》
增益表的计算。
1、系统音量区间是0~100,将其平均分成10份,得到0~10,11~20,21~30,31~40,41~50,51~60,61~70,71~80,81~90,91~100共10个等级。
2、设置系统音量为10,循环播放歌曲,调整模拟麦克风音频输入部分和模拟回声音频输入部分的模数转换单元的增益值,使得数字麦克风音频信号和数字回声音频信号的幅值足够大且不失真,然后将这组增益值写入增益表。
3、设置系统音量是20,循环播放歌曲,调整模拟麦克风音频输入部分和模拟回声音频输入部分的模数转换单元的增益值,使得数字麦克风音频信号和数字回声音频信号的幅值足够大且不失真,然后将这组增益值写入增益表。重复这个过程,直到获取完10组增益值,写入增益表。
增益表的使用。
1、编写应用,监听音量变化广播volume_changed_action。
2、监听到音量变化后,通过函数getstreamvolume()获取当前系统音量,比如获取到音量为8,确定其属于0~10这个等级。
3、查询增益表,取得麦克风增益和回声增益,比如增益都是0x3c。
4、设置麦克风增益和回声增益,使用命令
”echo1903c>/sys/bus/platform/devices/twi.1/i2c-1/1-003b/ac108_debug/ac108&&echo1903c>/sys/bus/platform/devices/twi.1/i2c-1/1-0035/ac108_debug/ac108”
5、监听音量变化广播,继续过程2。