Android Audio回声消除学习笔记
2016-05-11 17:17
1971 查看
回声消除AcousticEchoCanceler 继承自AudioEffect
声学回声消除器(AEC)AcousticEchoCanceler类消除了从远程捕捉到音频信号上的信号的作用
自动增益控制(AGC)AutomaticGainControl类自动恢复正常捕获的信号输出
噪声抑制器(NC)NoiseSuppressor类可以消除被捕获信号的背景噪音
注意:并不能保证所有的设备都能支持这些效果的,所以你应该首先调用在对应音频效果类上的isAvailable()的方法来检测它的可用性。
AcousticEchoCanceler使用方法
1. 首先判断下设备是否支持回声消除
public static boolean isDeviceSupport()
{
return AcousticEchoCanceler.isAvailable();
}
2. 初始化并使能AEC
private AcousticEchoCanceler canceler
public boolean initAEC( int audioSession){
if(canceler != null)
{
return false;
}
canceler = AcousticEchoCanceler.create(audioSession);
canceler.setEnabled(true);
return canceler.getEnabled();
}
ps: audioSession的获取
AudioSystem audioSystem
= AudioSystem.getAudioSystem( AudioSystem.LOCATOR_PROTOCOL_AUDIORECORD);
audioSession = audioSystem.getAudioSessionId();
3. 使能/去使能AEC
public boolean setAECEnabled( boolean enable)
{
if( null == canceler){
return false;
}
canceler.setEnabled(enable);
return canceler.getEnabled();
}
4.释放AEC
public boolean release(){
if( null == canceler){
return false;
}
canceler.setEnabled(false);
canceler.release();
return true;
}
配置文件记得添加权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
android新版本增加的API AcousticEchoCanceler 可以非常快速的开发出符合VOIP性质的回声消除程序。但是考虑到各种机型适配,仍然需要第三方的回声消除程序。
这里主要推荐两个:webrtc里面的AEC/AECM,speex。
声学回声消除器(AEC)AcousticEchoCanceler类消除了从远程捕捉到音频信号上的信号的作用
自动增益控制(AGC)AutomaticGainControl类自动恢复正常捕获的信号输出
噪声抑制器(NC)NoiseSuppressor类可以消除被捕获信号的背景噪音
注意:并不能保证所有的设备都能支持这些效果的,所以你应该首先调用在对应音频效果类上的isAvailable()的方法来检测它的可用性。
AcousticEchoCanceler使用方法
1. 首先判断下设备是否支持回声消除
public static boolean isDeviceSupport()
{
return AcousticEchoCanceler.isAvailable();
}
2. 初始化并使能AEC
private AcousticEchoCanceler canceler
public boolean initAEC( int audioSession){
if(canceler != null)
{
return false;
}
canceler = AcousticEchoCanceler.create(audioSession);
canceler.setEnabled(true);
return canceler.getEnabled();
}
ps: audioSession的获取
AudioSystem audioSystem
= AudioSystem.getAudioSystem( AudioSystem.LOCATOR_PROTOCOL_AUDIORECORD);
audioSession = audioSystem.getAudioSessionId();
3. 使能/去使能AEC
public boolean setAECEnabled( boolean enable)
{
if( null == canceler){
return false;
}
canceler.setEnabled(enable);
return canceler.getEnabled();
}
4.释放AEC
public boolean release(){
if( null == canceler){
return false;
}
canceler.setEnabled(false);
canceler.release();
return true;
}
配置文件记得添加权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
android新版本增加的API AcousticEchoCanceler 可以非常快速的开发出符合VOIP性质的回声消除程序。但是考虑到各种机型适配,仍然需要第三方的回声消除程序。
这里主要推荐两个:webrtc里面的AEC/AECM,speex。
相关文章推荐
- Android 应用开发 之通过AsyncTask与ThreadPool【转】
- 自定义AndroidStudio中的默认Header信息
- dialogfragment 的使用
- 【Android学习】四大组件的工作过程
- Android开发加速工具-JRebel for Android
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- 问渠哪得清如许,唯有源头活水来-浅谈android 系统
- Android中的“再按一次返回键退出程序”实现
- Android 命名规范 (提高代码可以读性)
- Android程序优化之对屏幕旋转的处理总结
- Android使用Monkey的自动化测试
- Android基础知识之智能指针:强指针和弱指针
- android开发 更新下载apk部分机型文件写入失败(Permission denied)
- Android DES MD5 UTF—8 BASE64 加密解密
- android适配不同分辨率的手机
- Android-SIM卡信息相关
- android 和 phonegap(Cordova)交互使用Zxing二维码扫描
- Android Studio 设置LogCat 颜色
- Android程序优化之监听物理回退键,退出程序
- Android打开系统GPS设置页面代码