回声消除
SDK内提供回声对消(AEC)的能力,AEC的调用方式主要取决于设备的MIC数量,AEC效果的好坏,更多的取决于回路音频的质量,如回路音频和MIC采集到的音频未对齐,或者回路音频质量比较差,那么AEC的效果都不能得到保证。在车载项目中,我们有专门的音频工程师协助解决这部分的问题,这部分工作一般需要先于SDK对接工作启动,好的音频质量,是产品拥有一个好的交互体验的基本前提。
ECHO 资源配置
因为SDK同时支持在内置录音机做回声消除,故echo相关配置放置在了SDK init部分传入。 如需要单独使用echo引擎,也需要在sdk init 之前就传入。
EchoConfig echoConfig = new EchoConfig.Builder()
.setAecResource(SampleConstants.AEC_RES)//设置aec资源路径
.setChannels(2)//设置音频通道数,目前支持2、4、6三个参数
.setMicNumber(1)//设置mic数,目前支持 1、2、4三个参数
.setSavedDirPath("/sdcard/speech/echo")//设置echo前后音频保存路径
.create();
独立ECHO引擎
EchoKernel echoKernel = new EchoKernel(new EchoKernelListener() {
@Override
public void onInit(int status) {
}
@Override
public void onResultBufferReceived(byte[] data) {
//AEC 后的单通道音频数据
}
@Override
public void onError(AIError error) {
}
});
// 初始化
echoKernel.newKernel();
//启动引擎
echoKernel.startKernel();
//feed音频
echoKernel.feed(data);
//停止引擎
echoKernel.stopKernel();
//销毁引擎
echoKernel.releaseKernel();