BES通话算法调试指南

本文以BES2500YP为例, 介绍了BES通话算法调试的一些基本的方法, 适合刚入门BES芯片软件开发的朋友, 读完本文可以对BES的通话算法的调试有个初步的基本的认识

BES通话算法列表

通话算法的宏开关存放在target.mk文件中(不同芯片, 不同项目的 target 可能不同), TX为上行, RX为下行, 以下为BES2500YP SDK默认的通话算法开关(不同芯片能打开的算法可能不同)
通话算法开关
SDK支持的通话算法列表, 包含单麦到三麦的通话算法, 不同通话算法占用的资源不同, 如下图
通话算法

BES通话配置和处理

  1. 首先是麦克风的配置, 根据硬件上支持的麦克风个数, 打开正确的算法开关. 比如硬件上有两个麦克风, 则需要配置如下图SPEECH_CODEC_CAPTURE_CHANNEL_NUM == 2条件下的麦克风的通道配置, 麦克风通道需要与硬件通道匹配
    麦克风配置
  2. 通话的上层数据应用在 app_bt_stream.cpp 文件中的 bt_sco_player 函数, 开启通话算法时需要根据不同算法类型变更主频, 比如三麦算法需要更高的主频, 则可以在bt_sco_player()函数中提高通话时的主频
    设置通话主频
  3. 通话算法的初始化以及使用, 在 bt_sco_chain.cpp文件中的speech_init()函数 上行通话处理speech_tx_process()函数和下行通话处理speech_rx_process()函数
    通话算法的初始化
    通话上下行处理, 这里可以拿到通话上下行原始的pcm数据
    通话上下行处理

BES通话上下行通路

如下图为BES官方工具上画出的通话上下行的算法通路
上下行通路

BES通话算法

调整上行通路

使用默认模拟数字增益, 测试回声性能, 如果存在回声残留, 调整 AEC 相关参数, 需要注意的是调整AEC时需保证麦克风拾取的回声没有饱和, 控制麦克拾取到的回声大小. 如果最终的上行音量偏小, 需要调整 .tx_post_gain. 要注意的是CVSD编码在信号幅度大于 -6dBFs 的时候会存在失真
默认麦克风模拟增益已经最大, 默认 12dB, 参考对应的 analog_bestxxxx.c (比如 2500p系列芯片参考analog_best2500p.c), 通话模拟增益大小:

#define DEFAULT_VOICE_ADC_GAIN_DB           12

通话前级数字增益(CODEC_SAD_GAIN默认12, 一级约2dB~3dB, 参考tgt_hardware.h里面, 一般需要在无后端增益的情况下上行数据 PCM 能达到 -15dB 左右

#define CODEC_SADC_VOL (12)

通话算法介绍

  1. 回声消除算法(AEC)
    回声消除算法推荐使用TX_AEC2FLOAT, 一般保持默认设置即可. 如果回声比较大的情况, 可以打开af_enable, 打开之后可能会有卡顿, 需要提升主频. 该模块还集成了通话上行噪声抑制, ns_enabled打开配合noise_supp的设置也可以有不错的噪声抑制效果
    TXAEC2FLOAT
  2. 通话噪声抑制算法
    一般单麦算法可以直接使用AEC2FLOAT中的NS算法即可
    双麦算法 推荐SPEECH_TX_2MIC_NS2 和 SPEECH_TX_2MIC_NS7
    2MIC_NS2
    三麦算法目前只有SPEECH_TX_3MIC_NS算法, 算法参数一般使用默认即可, 必要时可以使用audio_developer工具在线调试通话算法的质量
    TX3MIC
  3. 下行通话降噪
    推荐RX_NS2FLOAT或SPEECH_RX_NS3
    调整RX_NS2的denoise_dB的值或调整NS3的mode都能有不同的下行降噪的效果
    RX降噪算法
  4. 算法后级增益
    算法增益即是一个简单的倍数放大, 比较简单, 单位为1dB, 算法后级增益也可以使用COMPEXP模块和EQ模块来调整. 如果打开了这两个模块, POST GAIN模块也可以不打开
    算法后级增益
  5. COMPEXP模块
    是一个小信号会被抑制, 大信号会被放大的模块, 一般调整makeup_gain会有不同效果
    TX_COMPEXP
  6. 上下行EQ
    SPEECH_TX_EQ和SPEECH_RX_EQ
    目前最大支持20段EQ, 一般能满足客户需求. 如果需更多段数, 修改MAX_VQE_EQ_BAND重新生成libmultimedia即可. EqConfig使用常规的f0, gain, q来配置各段滤波器参数, 同时也支持使用RAWDATA滤波器参数 a1,a2,b0,b1,b2 来配置来直接配置, 其中 a0 默认为 1.f. 需要注意的是, 直接使用滤波器系数时需要同时提供宽带和窄带的滤波器系数
    EQ
    BES通话效果调试比较麻烦, 算法涉及multimedia的lib, 不同SDK能打开的通话算法会有差异, 有时候还需要原厂支持, 通话效果调整参数项较多, 参数不太好确定效果, 无从下手的话, 建议可以使用audio developer工具的Speech Tuning功能在线调试效果
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小的代码里面挖呀挖呀挖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值