Android 音视频开发- 降噪回声处理
本文主要记录下android 录音操作中降噪,回声的处理.
1: 降噪处理
噪声抑制(NS)是一种音频预处理器,用于从捕获的信号中去除背景噪声。对于更高级的实现,被视为噪声的信号分量可以是静止的(汽车/飞机发动机、交流系统)或非静止的(其他人的对话、汽车喇叭)。
NS主要用于语音通信应用程序(语音聊天、视频会议、SIP呼叫)。
应用程序创建NoiseSuppressor对象,以实例化和控制音频框架中的NS引擎。
将NoiseSuppressor连接到特定的android.media.AudioRecord.
在创建NoiseSuppressor时指定此AudioRecord的音频会话ID。
通过调用android.media.AudioRecord.getAudioSessionId()。
在某些设备上,平台可以根据android.media默认将NS插入捕获路径中。MediaRecorder使用的音频源。应用程序应在创建NS后调用NoiseSuppressor.getEnable(),以检查特定录音会话上的默认NS激活状态。
if (NoiseSuppressor.isAvailable()) {
NoiseSuppressor noise = NoiseSuppressor.create(ar.getAudioSessionId());
if (noise != null && !noise.getEnabled()) {
//用该噪声抑制器的启用方法,将噪声抑制功能设置为打开状态
noise.setEnabled(true);
}
}
2: 回声处理
Acoustic Echo Canceler(回声消除器),也称为Echo Cancellation(回声控制),是一种音频信号处理技术,主要用于解决电话、网络会议或者语音聊天等场景中,由远端声音通过线路传播到麦克风再反射回来形成的人工回声问题。这种现象可能导致对话质量下降,干扰听觉体验。
回声消除器工作原理是通过实时分析和识别音频信号中的回声部分,并将其抵消或减小。它通常涉及到两个过程:自适应反馈抑制和前馈补偿。自适应反馈抑制会建立一个反馈模型来预测并消除自身的回音,而前馈补偿则直接针对已知的物理路径(例如电话线延迟)来调整信号.
if (AcousticEchoCanceler.isAvailable()) {
AcousticEchoCanceler aec = AcousticEchoCanceler.create(ar.getAudioSessionId());
if (aec != null && !aec.getEnabled()) {
//启用音频回声消除器,对麦克风接收到的音频信号进行处理,减少或消除回声效应
aec.setEnabled(true);
}
}