icfans

录音音量比较小,如何改善?

0
阅读(139) 评论(0)

[DESCRIPTION]
录音音量比较小
[SOLUTION]来自半导体社区
介绍如下几种录音音量调整的common解法:
1. 进入工模--->audio--->Normal mode---->Microphone--->Volume 4,将这个值增大,代码里面修改的是
GAIN_NOR_MIC_VOL4
在这里,我们默认的通话音量是GAIN_NOR_MIC_VOL3,录音音量是GAIN_NOR_MIC_VOL4,要注意的是这里的修改是
调整AFE_VAGC_CON0的值,这个值一旦太大,会引发一些side effect。例如若通话过程中切到免提模式,则此时远端与
近端的通话音量就会变大声,并引发通话噪声。其主要原因是:通话触发免持模式之后, 造成AFE_VAGC_CON0错误设定,
当uplink超大音量触动AGC, mic gain就会跳到最大值从而引入通话噪声,并且之后无法自动还原回来,所以一般不建
议修改的过大。
2. 如果上述方法效果还是不明显的话,可以尝试修改录音的digit gain,方法如下:
如果普通录音声音也小的话,请帮忙尝试修改Digital Gain来试试:
修改Digital Gain(该方法会同时作用于Sound Recorder和FM Recorder):
1.static struct {
...
uint16 record_mic_gain;//加上这句。
} am;
void AM_Init( void )
{…
am.state = 0;
am.speech_mode = 0;
am.sub_channel = 0;
am.speech_off_delay = 0;
am.record_mic_gain =0x1400; //初始化
… }
2.AM_DSP_VMRecordOn, AM_DSP_PCM16K_RecordOn的末尾,及AM_DSP_PCM8K_RecordOn中else{ 的末尾加上:
am.record_mic_gain = *DP_VOL_IN_PCM;
*DP_VOL_IN_PCM = 0x3000; //如果音量小,可以适当加大,0x1000表示0dB,最大为0x7FFF,接近0x8000,计算公式为
:增大dB值 = 20 log (x/0x1000),建议一步步测试出合适的值,如果一下子设置到最大0x7FFF声音可能不会增大
AFE_TurnOffAGC(); //在录音的时候关闭Uplink AGC来解除AGC对Uplink Volume可能的限制作用
3.AM_DSP_VMRecordOff, AM_DSP_PCM16K_RecordOff的末尾,及AM_DSP_PCM8K_RecordOff中的else{ 的末尾加上:
*DP_VOL_IN_PCM = am.record_mic_gain;
AFE_TurnOnAGC(); //还原AGC的设定,避免对通话产生影响
如果普通的录音音量不小的话,FM录音音量小的话,请做如下修改:
1.static struct {
...
uint16 record_mic_gain;//加上这句。
} am;
2.AM_DSP_VMRecordOn, AM_DSP_PCM16K_RecordOn的末尾,及AM_DSP_PCM8K_RecordOn中else{的末尾加上:
if( AFE_GetInputSource() == L1SP_LNA_FMRR ) { am.record_mic_gain = *DP_VOL_IN_PCM; *DP_VOL_IN_PCM =
0x3000; //如果音量小,可以适当加大,0x1000表示0dB,最大为0x7FFF,接近0x8000,计算公式为:增大dB值 = 20 log
(x/0x1000),建议一步步测试出合适的值,如果一下子设置到最大0x7FFF声音可能不会增大
AFE_TurnOffAGC(); //在录音的时候关闭Uplink AGC来解除AGC对Uplink Volume可能的限制作用
}
3.AM_DSP_VMRecordOff, AM_DSP_PCM16K_RecordOff的末尾,及AM_DSP_PCM8K_RecordOff中的else{的末尾加上:
if( AFE_GetInputSource() == L1SP_LNA_FMRR ) {
*DP_VOL_IN_PCM = am.record_mic_gain;
AFE_TurnOnAGC(); //还原AGC的设定,避免对通话产生影响
}
4.修改afe2.c中宏定义FM_RADIO_RECORDING_VOLUME的值
范围 0- 63 ,值越大,音量越大


芯方式