跳转至

SDK串口采音以及AEC调试

1、概述

  • 本文为启英泰伦-语音开发工具串口采集语音芯片录音数据,以及调试回声消除功能(AEC)的操作流程。

2、启英泰伦-语音开发工具下载

启英泰伦-语音开发工具(以下简称开发工具)可以到☞启英泰伦语音 AI 平台 资料库中下载最新版本进行开发

启英泰伦-语音开发工具

图2-1 启英泰伦-语音开发工具

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接口中配置

串口参数配置

图3-1 串口参数配置_1

串口参数配置

图3-2 串口参数配置_2

在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 开发工具配置_1

串口参数配置

图3-4 开发工具配置_2

3.3 录音上传并解析

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

录音上传日志

图3-5 录音上传日志

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

工具解析协议头_1

图3-6 工具解析协议头_1

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

工具解析协议头_1

图3-6 工具解析协议头_1

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

工具解析协议头_2

图3-7 工具解析协议头_2

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

压缩解码_1

图3-8 压缩解码_1

压缩解码_2

图3-9 压缩解码_2

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

压缩解码_3

图3-10 压缩解码_3

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

cool edit打开录音文件_1

图3-11 cool edit打开录音文件_1

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

cool edit打开录音文件_2

图3-12 cool edit打开录音文件_2

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

cool edit打开录音文件_3

图3-13 cool edit打开录音文件_3

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-不停止播放
以上传参考信号为例,在offline_asr_llm_aiot_uart_sample的“ ci_ssp_config.c ”中选择左右通道录音上传的音频信号,将iis_right_channel配置为REFL,

.iis_left_channel = MICL,        //左通道输出音频。MICL、MICR、REFL、REFR、DST1、DST2
.iis_right_channel = REFL,       //右通道输出音频。MICL、MICR、REFL、REFR、DST1、DST2

1. MICLMICR左右通道麦克原始输入信号
2. REFLREFR左右通道参考信号
3. DST1DST2左右通道经过算法处理后的输出信号

并在 “ ci130x_audio_pre_rslt_out.c ”中修改录音上传AEC处理后的音频为right信号上传录音: cool 录音上传信号通道选择

图4-1 录音上传信号通道选择

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

cool 唤醒播报音修改

图4-2 唤醒播报音修改

cool 唤醒播报音选择

图4-3 唤醒播报音选择

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

cool 唤醒播报音选择

图4-4 AEC调试上传录音日志