密级状态:绝密(
) 秘密(
) 内部(
)
公开(√ )
福州瑞芯微电子股份有限公司
RK 单麦克语音通话 3A 算法集成说明及参数
调试说明文档
文件状态:
[
] 正在修改
[√] 正式发布
当前版本:
作
者:
完成日期:
审
核:
完成日期:
V3.0
金剑、顾艳梅、李东强
2018-4-18
福州瑞芯微电子股份有限公司
Fuzhou Rockchips Electronics Co . , Ltd
(版本所有,翻版必究)
福州瑞芯微电子股份有限公司
版 本 历 史
版本号
作者
修改日期
修改说明
备注
V1.0
V2.0
V3.0
2017-12-1 发布初版
金剑
金剑 顾艳梅 2018-1-18 调试参数简化
李东强
2018-4-18
Android 集成调试
福州瑞芯微电子股份有限公司
目 录
1. 版本功能说明........................................................................................................................................1
1.1 版本名称....................................................................................................................................... 1
1.2 算法库类别...................................................................................................................................1
1.3 算法库功能...................................................................................................................................1
1.4 包含文件....................................................................................................................................... 1
2. 接口函数................................................................................................................................................1
2.1 设置参数....................................................................................................................................... 2
2.2 初始化........................................................................................................................................... 2
2.3 帧处理........................................................................................................................................... 3
2.4 系统释放....................................................................................................................................... 4
3. 测试数据勾取方法................................................................................................................................4
4. 参数调试说明........................................................................................................................................5
4.1 总模块参数设置...........................................................................................................................5
4.2 回声消除参数设置.......................................................................................................................5
4.3 噪声抑制参数设置.......................................................................................................................6
4.4 自动增益控制参数设置...............................................................................................................7
4.5 频响补偿参数设置.................................................................................................................... 10
4.6 舒适噪声参数设置.................................................................................................................... 11
5. Android 集成调试说明.................................................................................................................... 11
5.1 算法库与算法配置参数文件集成............................................................................................ 11
5.2 Audio Hal 修改集成 audio 3a 算法................................................................................... 12
5.3 Android audio 3a 算法调试.................................................................................................12
福州瑞芯微电子股份有限公司
1. 版本功能说明
1.1 版本名称
RK_1MIC_3A_FOR_CALL_V2.0。
1.2 算法库类别
Linux1108 和 NDK。
该算法库仅限于 RK 平台使用。
1.3 算法库功能
单麦克风语音通话 3A 算法,包括回声消除 AEC、语音降噪 ANR 和自动增益控制 AGC
等。
回声消除 AEC 用于消除麦克采集到的扬声器播放的声音;
语音降噪 ANR 用于消除麦克采集到的环境噪音;
自动增益控制 AGC 则用于压缩信号幅度的动态范围,避免信号过小导致响度较小,也
可避免信号过大,导致削顶失真,即可以起到提高小信号、压缩大信号的作用。
1.4 包含文件
2. 接口函数
该库的调用过程如下:
第一步,设置参数:
1
福州瑞芯微电子股份有限公司
该步骤用于对 3A 算法开放的音频参数进行设置,该参数的设置需要根据产品音频腔体、
器件特点以及使用需求等进行调整,使用时需要根据每个产品的特点设置参数,初步集成时
可使用默认参数,然后根据效果调整参数。参数设置需要通过 VOICE_参数设置文件夹中
RK_VoiceSetPara.c 文件单独在 PC 机上建立工程,配置参数,配置好的参数保存为
RK_VoicePara.bin 文件,将该文件放置平台系统目录下,将该文件路径名作为初始化的输
入参数。
第二步,初始化:
该步骤用于通话开启后,逐帧处理声音信号前。初始化接口函数名为 RK_VOICE_Init,
其输入参数为第一步在 PC 机上生成的参数文件路径名,初始化完成算法内部参数初始化和
相关内存申请,若初始化成功则返回 0,否则返回其他错误码值,如果初始化失败,将导致
第三步逐帧处理异常。
第三步,帧处理:
该步骤即是实时处理通话语音信号,其单位为帧,固定每帧 16ms 的样点,例如 16k
采样时,每帧 256 个样点。帧处理包括两个接口函数,即录音处理 RK_VOICE_ProcessTx
和播放处理 RK_VOICE_ProcessRx,录音处理用于处理麦克风采集的数据,处理后结果
经网络发向对端;播放处理用于处理网络接收语音,处理后送往扬声器进行播放。
第四步,系统释放:
该步骤用于通话结束后,接口函数为 RK_VOICE_Destory,释放 3A 算法内存变量。
2.1 设置参数
参数设置本应该通过调试工具实现,由于客户使用较急,以及当前公司内部开发资源调
配,当前 2.0 版本采用提供配置参数 c 代码,客户在 PC 机上通过建立 VC 工程,可实现对
参数的配置,参数配置后保存为 RK_VoicePara.bin 文件;后续将会提供对应的可视化调
试工具。
参数的配置方法在 RK_VoiceSetPara.c 以及本文档最后一章节有详细说明。
2.2 初始化
函数名称:int RK_VOICE_Init(char *pchParaFile)
函数名称:初始化接口函数
2
福州瑞芯微电子股份有限公司
函数功能:完成3A处理初始化,包括参数配置,内存申请等
函数输入:
pchParaFile ------ 参数bin文件输入路径,如"/para/RK_VoicePara.bin"
函数输出:
3A初始化完成
函数返回:
初始化成功状态:
0
表示初始化成功
其他 表示初始化失败
2.3 帧处理
(1)麦克录音信号即 TX 处理
函数名称:void RK_VOICE_ProcessTx(short int
*pshwIn,
short int
short int
int
*pshwRef,
*pshwOut,
swFrmLen);
函数功能:完成上行信号逐帧处理
函数输入:pshwIn
------ 麦克输入信号指针
pshwRef
------ 用于回声消除参考信号指针
swFrmLen ------ 输入该帧信号采样点数,注意:8k 采样,固定值 128;
16k 采样,固定值 256
函数输出:pshwOut
------ 上行处理后信号指针
(2)网侧播放信号即 RX 处理
函数名称:void RK_VOICE_ProcessRx(short int
*pshwIn,
short int
int
*pshwOut,
swFrmLen)
函数功能:完成下行信号逐帧处理,处理后送往扬声器
函数输入:pshwIn
------ 远端(网络侧)输入信号指针
swFrmLen ------ 输入该帧信号采样点数,注意:8k 采样,固定值 128;
3
福州瑞芯微电子股份有限公司
16k 采样,固定值 256
函数输出:pshwOut
------ 下行处理后信号指针
2.4 系统释放
函数名称:void RK_VOICE_Destory ()
函数功能:用于通话结束后,释放算法系统内存
参数说明:无
使用方法:RK_VOICE_Destory ()
注意事项:在通话结束后调用,与 RK_VOICE_Init()对应。
3. 测试数据勾取方法
算法是否集成正确、算法是否满足要求以及如何调整算法参数,这需要能够将通话中实
际运行的输入输出数据勾取出来,然后进行观察,如观察时延,观察回声大小以及非线性程
度,根据观察结果调试参数,或者将勾取数据提给 RK 相关人员进行算法仿真,也可以给出
结论和调整后的参数。
数据勾取位置
勾取数据时,需要勾取 4 个地方的数据,录音处理函数 RK_VOICE_ProcessTx 的输
入和输出(输入为麦克录音数据、回声消除参考数据;输出为 TX 处理后信号);播放处理
函数 RK_VOICE_ProcessRx 的输入和输出(输入为网络侧解码语音数据;输出为 RX 处
理后信号)。
数据勾取注意
1) 通话两方一个叫近端,一个叫远端,近端我们通常指的是测试这一端。
2) 通话两端不要互相干扰,要离的足够远,或者完全隔音,否则声音会互相串扰,自激,
而且也不符合通话场景;
3) 尽量保证远端处理是好的,如果远端回声处理有问题,这样也会互相串扰,这个远端可
以是固定电话,也可以扬声器改成很小的音量,或者扬声器静音;
4) 一次通话尽量快速录三种场景数据,即 PASS 态,单讲态,还有双讲态,pass 指的是
仅有近端说话,单讲指的是仅有远端说话,双讲指的是远近端同时都说话;
5) 一次录音数据不要太长,几十秒到几分钟相对比较合适;
4
6) 勾取的各个位置的语音数据时间要是同步的。
4. 参数调试说明
福州瑞芯微电子股份有限公司
参数文件需要通过参数工具配置生成,本版本已在 VOICE_参数文件目录下生成了一
些常用的参数文件,该目录下包括默认参数和备选参数,初步调试时可使用默认参数,然后
根据测试效果来选用备选参数,若均没有合适参数,则需要利用 VOICE_参数工具目录下
的.c 文件生成需要的参数文件。
参数的具体调试方法如下:
参数工具.c 文件中先会申请 500 个 short int 数据,并清 0。
4.1 总模块参数设置
总模块参数配置用于配置算法总体参数,可配置参数为 0 号参数,表示当前的采样率,
1 号到 9 号为预留参数。
/* -------- 总模块参数设置 -------- 参数序号:pshwPara[0]至 pshwPara[9] */
pshwPara[0]
= 16000;
/* INT16 Q0 采样率设置;当前仅支持 8000,16000
*/
4.2 回声消除参数设置
此模块用于配置回声消除模块,可配置参数为 10 号到 13 号参数,14 号参数到 99 号
参数为预留参数。
/* -------- AEC 参数设置 -------- 参数序号:pshwPara[10]至 pshwPara[99] */
pshwPara[10] = 1;
/* 使能标志:延时估计使能 */
该参数用于配置延时估计使能开关,当参考 ref 信号与麦克采集回声的相对时延不确定
时,可开启该功能,即参数置 1,需要说明的是,延时发生抖动和跳变时,延时估计需要一
定的时间才可以修正,该时间内可能会漏回声,因此,需要避免时延抖动;在集成时,建议
将时延做成固定延时,然后将该功能关闭。固定延时的一个很好的方法便是采用硬件回采的
方式,即使用 ADC 将扬声器即将输出的模拟信号,与麦克采集信号同步采集送进算法,回
采的信号即为回声消除参考信号,这样回声参考信号与麦克采集的回声相对时延则基本保持
5