SDK串口采音以及AEC调试¶
1、概述¶
- 本文为启英泰伦-语音开发工具串口采集语音芯片录音数据,以及调试回声消除功能(AEC)的操作流程。
2、启英泰伦-语音开发工具下载¶
启英泰伦-语音开发工具(以下简称开发工具)可以到☞启英泰伦语音 AI 平台 资料库中下载最新版本进行开发

3、SDK配置及工具配置使用方法¶
3.1 配置串口参数以及录音上传格式¶
在offline_asr_llm_aiot_uart_sample的“ user_config.h ”中配置串口相关参数,默认使用的 串口1、921600bps
#define UART_NUM_SEND_PLAY_AUDIO_NUMBER HAL_UART1_BASE //网络端交互的串口
#define UART_NUM_SEND_PLAY_AUDIO_BAUDRATE UART_BaudRate921600 //网络端交互的串口波特率振
数字位、停止位和校验位与开发工具通信默认是 8bit、1bit和无校验 ,无需修改;若有需求则在UARTInterruptConfig接口中配置


在offline_asr_llm_aiot_uart_sample的“user_config.h”中配置录音上传的格式(本文档使用opus压缩)
//压缩算法选择-pcm和speex和opus只能三选一,不能同时支持; opus压缩+mp3播放不支持自学习,推荐推荐设置SYS_HEAP_SIZE = (1024*110))
#define AUDIO_COMPRESS_RECORD_DISABLE 0 //PCM上传数据,不做数据压缩
#define AUDIO_COMPRESS_SPEEX_ENABLE 0 //(务必在makefile中配置宏AIOT_AUDIO_COMPRESS_TYPE=1) 1-处理使能SPEEX压缩后的数据 2-使能opus压缩
#define AUDIO_COMPRESS_OPUS_ENABLE 1 //(务必在makefile中配置宏AIOT_AUDIO_COMPRESS_TYPE=2) 1-处理使能SPEEX压缩后的数据 2-使能opus压缩 OPUS比speex多消耗31KB内存
3.2 开发工具配置步骤¶
开发工具配置步骤如下所示: 1.选择语音录音功能 2.配置串口参数,选择与SDK对应的波特率,若SDK未修改数据位、停止位和校验位,则默认 使用8bit、1bit和无校验 3.点击保存录音数据 4.选择存储录音数据的路径 5.打开串口


3.3 录音上传并解析¶
录音上传的日志如下图所示,在使用唤醒词唤醒后,VAD START开始上传录音,VAD END结束上传录音,打印“*”表示录音正在压缩,“.”表示录音正在正常上传

首先在开发工具取消保存录音数据,并关闭串口。

进行采音数据串口协议头的解码。

导入文件选择XXX.pcm(XXX为保存的时间),再点击解码得到XXX_com_decode.pcm

在开发工具中 根据SDK里配置的压缩格式 ,选择对应解码格式,若采用不压缩的格式,则跳过压缩解码步骤


导入文件选择串口协议头解码后的XXX_com_decode.pcm,最后点击解码得到原始录音数据文件。

将文件压缩解码后的文件XXX_com_decode_opus_decode.pcm或者不压缩的文件XXX_com_decode.pcm,拖入cool edit里打开

选择采样率选择 16K、声道选择立体声、采样精度为16位

最终在Cool Edit打开的效果如下

4、使用串口采音调试AEC功能¶
4.1 AEC基本功能以及调试方法介绍¶
AEC功能以及调试方法详细内容请见 ☞回声消除算法, 请用户先阅读该文章后 再进行后续步骤
4.2 SDK配置录音上传的音频信号¶
在offline_asr_llm_aiot_uart_sample的“ user_config.h ”中使能上传降噪后的音频,默认为使能,以及配置为全双工模式下VAD起来不停止播放
#define UPLOAD_NNDENOISE_AUDIO_DATA_ENABLE 1 //1-上传降噪的音频 0-上传非降噪的音频
#define UPLOAD_PLAY_FULL_DUPLEX_ENABLE 1 //全双工处理,播放音频的同时支持vad检测音频上传
#define VAD_START_STOP_PLAY_ENABLE 0 //全双工模式下,vad起来,立刻停止播放 1-停止播放 0-不停止播放
.iis_left_channel = MICL, //左通道输出音频。MICL、MICR、REFL、REFR、DST1、DST2
.iis_right_channel = REFL, //右通道输出音频。MICL、MICR、REFL、REFR、DST1、DST2
1. MICL、MICR:左右通道麦克原始输入信号
2. REFL、REFR:左右通道参考信号
3. DST1、DST2:左右通道经过算法处理后的输出信号
并在 “ ci130x_audio_pre_rslt_out.c ”中修改录音上传AEC处理后的音频为right信号上传录音:

AEC调试时录音上传需要在播放中进行,故需要修改” [60000]{xxx}xxx.xls “中唤醒词的播报,加长唤醒播报的时间;将wake和cmd两种模型下的唤醒词播报类型改为自定义,以及播报音0ID在选择 \firmware\voice\src 中选择2009加2022的组合播报(播报组合可自选,足够录音上传的播报时长即可)


AEC调试的录音上传的日志如下图所示,在使用唤醒词唤醒后,需在播放过程中,让VAD起来然后上传录音,然后请按照 本文第3.3章节对录音进行解析 ,AEC效果调试请参照 ☞回声消除算法 的第5章节
