KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

通话调试流程指南

📎 原始文档:https://www.kdocs.cn/l/ck1XA2TmirZX 通话调试流程指南

1.简介

本文档主要提供一个较为通用的通话调试流程思路,其具体问题还需结合样机具体分析。

2.基本调试流程和注意事项

1.电脑软件上:以下调试步骤大部分基于Au(Adobe Audition)软件进行分析和调试,以听感结果进行效果验收。【Adobe Audition CC (该软件非杰理产品,请使用正版软件)】
2.应用工具上:通话调试过程中用于分析的数据都是来自pcm写卡工具导出通话数据。
image 软件程序上修改:
程序中打开PCM写卡debug操作如下:(设置为以下步骤即可直接用写卡工具去读取数据了)
image 【需要注意:使用写卡工具录取通话数据时,一定需要保证aec/ans/nlp/agc几个算法模块有一个是打开的,可以选择关闭aec/ans/nlp,保持AGC打开,但是设置放大上下限的增益为0,即打开了AGC模块,但也不会起效果】

pcm写卡工具使用方法:
pcm写卡工具:从以下链接下载读取 [音频数据导出使用说明.pdf] 进行学习操作。并看下方工具使用文档。
串口工具,向杰理科技深圳中心助理申请。申请后在下方的链接中下载工具并读取使用pdf。
【金山文档】 音频导出串口pcm工具 https://kdocs.cn/l/cpUgZtu355YQ
【金山文档】 PCM写卡工具使用说明 PCM写卡工具使用说明.otl

在工具使用有以下几个注意事项:
2.1 串口工具读取通话数据,默认是读取三个通道:0通道为mic采集的未经过算法处理的原始数据;1通道为DAC输出的干净的音频数据,也称通话算法的参考数据;2通道为mic采集原始数据经过算法和AGC动态增益后传到远端的数据。
image 2.2 串口工具读取数据需要使用内存卡来读取保存,该内存卡选用越小越好,最好是128MB或是512MB。
2.3 程序中打开pcmdebug 会占用cpu运行的部分资源,所以可能在部分客户的样机程序上打开调试,通话时会出现跑不过来的情况,比如通话时打印aec_buff full !;一旦通话时出现跑不过来的情况,那回音消除算法肯定是失效的,写卡测试抓到的数据也是错误的,所以客户需要首先排除跑不过来的情况。若出现跑不过来的情况,可先按下方修改:

  1. 增大时钟,将时钟主频#define CLOCK_FIX 直接设为最高。
  2. 关闭一些不影响通话的功能,可以关闭到只剩余通话功能。同时可以将部分程序放到ram中,比如FM代码放ram(无论fm模式是否有使能,都降fm的代码放ram!);将drc的代码放ram中。
  3. 检查客户样机程序是否有使能多项定时器在占用资源,可以关闭不影响通话的定时器。

2.1通话调试总体流程框图

image

2.2调试注意要点

2.2.1 确保原始数据无问题才能进一步调试

2.2.1.1远端

通话时远端听到较好的效果评判标准有:远端听到机器采集到近端人声的有效语言还原度以及回音问题。
所以此处关键是机器使用的mic:模具在不打开算法情况下样机mic采集到的原始数据已达到较好的有效人声还原度和信噪比,才可确保经过算法处理后对有效语言的损伤较小。
不看原始数据进行算法全开的盲调会使得无法定位到通话问题和无调试方向,是不可取的行为。
硬件上:1.首先根据麦克风规格书检查确保麦克风供电符合要求
2.第二需保证样机整体的硬件设计上,样机mic采集近端的原始数据不存在高频干扰声/电流声。
可以根据以下文档的第一大点检查测试: 【该步骤必须进行!!!】
AC695X_AC696X_AD697X 常见通话问题处理参考资料.doc

软件上:做完以上mic的硬件分析后,近端mic采集的声音传到远端,凭听感进行判断很难准确评判好坏和定位问题点,因此此处提供一个可视化的调试方法。
第一步:
普通办公室安静环境下用客户认可的人声清晰度的手机(如:iPhone13)正常通话时,确保是使用状态(如果是用手机做的参考,那就是手机放在耳边的状态),打开手机通话的录音,远端不要说话,只录制参考样机/手机的mic声音。这样就确认了参考样机/手机的标杆效果和有效语音频响曲线,或者若有对比样机也可用对比样机。(即用标杆样机/手机进行通话录音录制mic的声音)
第二步:
(耳机按照使用状态佩戴调试样机)/(音箱按照使用状态音箱摆正位置,保持距离) 进行录音(用写卡工具写卡数据)录制mic的声音,注意第一步手机录音内容和第二步样机录音的内容要保持一致,可以选择同样语调读同一段话。
第三步:
用Au软件进行调试样机和标杆效果音频的频响曲线对比,查看二者的效果差异。
AU中怎么添加频率分析窗口-百度经验 (baidu.com)
例:
用Au频率分析左上设置对数,窗口采用哈姆,FFT大小为1024下:
image 通过对比调试样机和iPhone13处于同一段语音的录音效果下对比,调试样机的声音大小相比iPhone13的要小了10db左右,可用Au增幅10db进行二者的拟合后进行对比。
image 可见二者拟合后,在最影响听感的200hz-3khz基本吻合,且调试样机整体曲线平缓,无明显陷波和尖峰,为正常效果。
image 且调试样机的拾音频谱在16k采样率下,频谱声纹清晰,此处声纹即上图能量谱上一条一条的纹理,纹理越清晰,随着频率的增高(纵轴向上)如果纹理还明显存在,就代表该mic采集到的人声还原度越好,有效语音越多,无明显杂音和电流声波形。

2.2.1.2近端

通话时近端喇叭出来的声音流:手机----bt---->样机(解码)------>DAC输出------>功放------>喇叭
通话时近端听到的声音评判标准有:对远端声音的还原度、喇叭播出的声音纯净度、声音大小等。【同时近端播放的声音对通话回声有着较大的影响】
1.必须确保样机整体结构稳定。用户可将产品样机放在桌面上,在通话时调节一个可接受的喇叭播放声音。此时需要保证这个声音下近端播放的声音喇叭震动不会过大,音箱整体结构不会发生较大震动(比如将样机震动的前后滑动),样机上的其他组成部件不会发生震动(螺丝钉,样机内部的一些器件,喇叭等),需要保证通话时近端播放声音不会导致样机出现明显异响。
2.确保原始数据正常时:通话时需要确保近端喇叭放出的声音没有失真,没有其他干扰噪声,如果近端喇叭播放的声音存在失真或是存在其他干扰噪声则会对回音消除算法的运行带来较大的干扰,最终导致远端听到的回音大。
3.如果听感上喇叭输出的声音存在失真(听感上有刺音),则需要先排查出失真的原因,此时需要进一步判断DAC输出的声音是否也存在失真问题,比如DAC输出的数据太大了,超出0db了,如下图,在AU软件中看到DAC输出的声音已经超出了odb,超出部分就会被截止,出现失真。DAC输出声音排查完后,按照上方的近端音频播放流程图可知,下一个则需排查功放端。
imageimage

2.2.2 通话算法模块需逐步单独开启调试,一口气所有算法整体联调不可取

单独开启模块调试效果,可防止其他算法模块带来的影响,同时可以看到各个算法模块能处理的mic采集数据中的成分,并便于定位各算法模块对通话语音带来的影响,以及方便定位到通话回音产生的原因。单独开启模块调试顺序为:AEC/ENC->ANS\DNS->NLP。进行各个算法模块调试时,需要先理解各个算法模块做的事情和原理,见下一章。

3.各算法模块的原理简述

image

1、AEC回音消除模块

算法原理:通过计算参考数据【dac拿过来的干净音频的数据/pcm写卡通道1的数据】和主麦拾取数据【mic采集的未经过算法的原始数据/pcm写卡通道0的数据】的相干性做判断进行消除。通过计算两者的相关性,将回音部分做压制消除。
1.下方是AEC模块的参数调节选框:AEC_DT_AGGRESS原音回音追踪等级范围为1.0-5.0;即aec回音消除算法的档位设置。上面原理可知,算法是将通道0和1的数据做相干性分析,如果通道0mic采集到原始音频数据中远端过来的声音(需要被消除的部分)很大,比近端真正需要保留的人声大很多,就可能出现当前aec回音消除算法档位无法覆盖整个回音的追踪(或是理解为远端的声音大小超出了该档位的aec算法可追踪回音声音大小的阈值),所以此时需要提高等级。
image 2.aec回音消除算法无法处理非线性回音过大的情况。
非线性回音:指在声音传播过程中,由于反射、折射等物理现象的影响,使声音信号的强度和相位发生变化,从而样机mic采集到的声音出现误解或是失真。
1.当声音信号遇到障碍物(如墙壁、天花板等)时,会发生反射和折射,从而产生多个声源。这些声源会相互干涉和叠加(同相相加,反相相消),形成复杂的声波分布,最终形成如混响效果般的声场;最后样机mic采集到近端的声音是:混响版的喇叭声音+近端人声。这种混响般的声音属于非线性回音,aec降噪算法对其处理难度大。可见下图,下图为使用写卡工具录制到的mic采集的原始音频数据:
image 2.样机结构不稳定,通话播歌过程中,样机结构出现异响(如音箱整体震动,螺丝震动,其他物料震动等);或是喇叭装配结构不稳,播放音频过程中出现明显的喇叭震动,这种震动导致的失真,也是非线性失真;被mic采集到也无法被aec降噪算法消除。

2、NLP回音压制模块

NLP回音压制模块可视为一个简易版的aec回音消除模块。
image NLP_ AGGRESS_FACTOR回音压制前级:主要影响的是压制时候声音频谱的范围。
NLP_MIN_SUPPRESS回音压制后级:主要影响的是在NLP_ AGGRESS_FACTOR确定好压制的频谱范围后,设置确定压制的深度。
范围和深度互相影响并非独立参数,在调节NLP,主要是保持好压制范围,去调节压制深度。可以单独打开nlp调节压制深度来看其对通话回音的影响。

3、ANS/DNS传统/神经网络单通道降噪模块

ANS为传统单通道降噪,用于消除稳态噪声,比如某些特定频率的环境噪音,对人声类型噪声无压制能力。DNS为单通道神经网络降噪,用于消除非人声类型的稳态噪声,对人声类型噪声无压制能力,其对稳态噪音压制的效果比ans要好,同时占用的资源也会更多。
1.在安静环境下:该算法部分带来的最大影响是会抹除掉人声的清音部分,如下图,所以其对人声的还原度以及自然度影响最大,若客户追求偏向人声自然度则推荐尽可能调低。ans算法的工具默认值就已经调的较低了,如果还有明显环境噪音,则可适量增大。
image 2.在嘈杂环境下:若样机原始数据的有效语音信噪比为负,即近端mic采集到的有效人声已经由于声音的遮掩效应被淹没在噪声(或是歌声下)之后,则会导致经过单通道降噪处理后人声部分严重缺失,表现为声音发闷。该情况可适当调低降噪效果,若无法达到想要的效果需要考虑更换信噪比更高的麦克风。
典型情况如图:
image 此时明显噪声的幅值已大过有效语音的幅值,信噪比=有效语音RMS-噪声RMS,此时信噪比为负值后,有效语音从500hz往上的部分已丢失。

4、AGC自动增益控制

AGC调试的是远端听到的声音,是对麦克风原始信号幅值过回音消除算法后的的二次放大或缩小(第一级放大为mic模拟增益)。AGC的效果一般可用Au进行模拟,通过AU对音频增大或减小增益:振幅统计下,若主麦原始信号平均振幅RMS总计为-35db,需要增幅到-25db,则AGC放大上限调为10db即可。
注意:AGC的放大上限与放大下限不宜差异过大,否则会带来忽大忽小的问题,其NDT_SPEECH_THR和DT_SPEECH_THR可根据样机实际情况进行调整,具体设置参数方法见下方参数意义。
【AGC模块的各个参数意义:】
image

  1. 单端模式和双端模式 image 通话的场景分为单双端模式:单端模式:只有近端在讲话,远端没有说话。双端模式:远端有在讲话。
    SDK中的切换模式为:样机接收到远端发送过来的数据和ECHO_PRESENT_THR参数进行对比(注意数据是远端原始数据,没有经过样机DAC输出)。若远端发过来的原始数据大于ECHO_PRESENT_THR值,则主控近端通话路径进入双端模式路径。小于该值,主控近端通话路径进入单端模式路径。即判断近端走哪种模式取决于远端手机发送过来的原始数据大小,有的手机返回来的声音大点,有的小点,所以不同手机对于相同的ECHO_PRESENT_THR参数会有不同的现象。
    image

单端模式

近端进入到单端模式中,样机mic采集的原始数据经过通话算法处理后,将走单端增益进行二次放大。
imageimageimage

双端模式

近端进入到双端模式中,样机mic采集的原始数据经过通话算法处理后,将走双端增益进行二次放大。
imageimageimage 2. 淡入淡出步进 通话单端/双端模式中,mic的原始数据经过通话算法处理后会依据其声音大小走放大的上下限,上下限在切换的过程中就需要对放大增益进行淡入淡出。淡入淡出效果就是从当前放大上下限开始做淡入淡出到目标放大上下限,从12dB到0dB是淡出,从0dB到12dB是淡入。
imageimage 一般通话链路建立好之后,第一时间双方都是没有讲话,所以近端是处于单端模式的ndt_min_gain放大下限;假设此时ndt_min_gain是0dB,即为起始的淡入淡出增益值。随后若远端说话“喂”,近端没有说话,远端说话的原始数据大于设置的ECHO_PRESENT_THR,这时近端将切换至双端通话模式的放大下限dt_min_gain。若假设此时dt_min_gain是6dB,这个就是目标放大上下限。这个时候近端需要从单端下限0dB淡入到双端下限6dB,因为近端已进入到双端通话下限,所以淡入的步进使用DT_ FADE_IN,假设该值为1.3db;即本次淡入需要步进5次才能到目标放大增益值。每次步进的时间10ms,所以淡入淡出的步进值会影响到近端通话放大增益值的切换,如果步进时间过长,则会造成忽大忽小的情况。

4.典型问题示例

3.1 远端听到人声闷,人声不清晰

  1. 使用样机进行以上2.2.1的操作,测试样机mic采集的原始数据是否存在问题,若AU显示mic采集原始数据高频部分弱于手机拾音曲线---->则将样机模具拆除进行裸板测试,如裸板测试出现声音高频还是较差---->可再将裸板放置较为靠嘴的位置测试验证是否是佩戴方式导致---->若是佩戴方式导致的高频较差,可检查麦克风耦合电容是否为105,采用104的电容会使得声音中高频有所优化,降低低频分量。其次依靠EQ进行优化。
  2. 第二种出现人声闷问题的可能性就是ans/dns算法的压制导致的,可以开关ans/dns算法对比查看,具体的分析处理方法见上面标题2.3第三点ANS/DNS降噪算法。

3.2 通话存在回音问题分析处理

image 由上图可知,如果喇叭声音过大,导致喇叭播放出来的远端人声,被MIC重新采集经过算法处理和AGC动态增益后,又传回给远端手机,导致远端手机又听到自己的声音。

常见的通话回音问题原因有:

  • 软件问题:1.检查是否有正确开启AEC算法模块;2.检查是否是程序修改出现的bug导致AEC算法不起作用;3.回声消除/回音压制等算法模块的压制等级参数调得不够大,或是回音处理算法模块没有打开完全。
  • 硬件问题:硬件电路设计问题,比如:没有分数字地和模拟地、PCB板走线影响等原因,导致DAC线路上的音频信号直接串到MIC线路上引起的回音。
  • 复杂综合问题:检查验证不是软件和硬件问题,并且按照原来的调试文档和经验,进行了各回音处理算法模块(aec/nlp/ans/agc)的综合调试,同时也有尝试提高aec/nlp回音消除和回音压制算法的强度,仍然存在回音问题的。

软件问题

1.正确更新配置工具,使能各算法模块后切记需要保存bin文件,以确保算法生效。
image 2.检测aec通话算法模块在程序中是否正确打开。上面的第1点是确保配置工具中正确使能各算法模块,本第2点是确保程序中是否有正确传入要打开的通话算法参数。
imageimage 3.确保通话算法正确使能后,如果此时还存在较大的通话回音则需先查看通话时的程序打印,看程序运行是否存在问题。如下图,通话时抓取打印如果出现aec inbuf full的错误打印,则表示aec算法使能后,经过aec算法处理的通话数据出现堵塞,出现跑不过来的情况!
imageimage 这种情况会有极大的概率导致通话出现回音,此时分析的方法如下:

  1. 检查系统时钟是否有提到最高,没有则将时钟主频#define CLOCK_FIX 直接设为最高。
  2. 提高时钟仍然会打印的话,则检查程序看哪些功能模块或客户自己创建任务或是创建的定时器比较占CPU资源,可以测试一点一点关闭一些功能模块、创建的任务和功能定时器,看情况是否会有好转。【若定位到是客户自己创建的线程任务导致通话算法跑不过来,则可尝试减小创建任务的优先级,或是增大aec通话算法线程的优先级】 image
  3. 做第2点的同时,也可以同时将部分程序放到ram中,比如FM代码放ram(无论fm模式是否有使能,都降fm的代码放ram!),和将drc的代码放ram中。
  4. 以上分析手法完成后,若程序通话时已不存在aec inbuf full的打印,通话回音的问题也有所好转(回音不再是完整的一句话返回,而是有明显被压制过的声音)。这就说明上面做的分析方法有作用,剩余的通话回音则需进一步定位回音原因。 【PC模式通话注意点!!!】
    1.PC模式通话需要打开/参考数据变采样处理/处理,此处的参考数据即为上文所说的DAC输出的干净的音频数据,用于通话算法参考分析回音成分。
    PC模式音频解码的采样率与AEC通话算法模块支持处理的数据采样率不同,所以PC通话需使能变采样
    image 2.PC模式通话usb mic数据采集需经过aec算法,必须使能USB_MIC_AEC_EN
    image 3.正确打开通话算法模块,usb mic通话程序默认只使能打开了ANS算法模块,此处需做修改,使能所有的通话算法模块。可以参考软件问题的上文通过打印看是否正确打开了所有通话算法。
    2.usb mic通话传入的mic增益,不是配置工具上设置的mic模拟增益。usb mic增益需在程序中单独设置app_var.usb_mic_gain。
    image

硬件问题

以上检查确保通话算法模块得到了正确的打开,再确定打开aec通话算法后,通话时是否有正确运行。

复杂综合问题

以上检查确保通话算法模块得到了正确的打开,再确定打开aec通话算法后,通话时是否有正确运行。

耳机回音一般仅开启NLP即可,音箱回音问题依据情况选择算法开启的模块。
调试方法:

  1. 检查硬件喇叭是否存在失真,模具是否存在明显震动,样机喇叭和麦克风隔离是否有做好(35db)。
  2. 软件调试:需要确保硬件上已做好了隔离,减震,以及喇叭无失真

样机整体气密性测试以及mic与腔体的密封性测试:
单独堵住主麦\副麦和不堵麦克风的差异越大越好,差异越大通话时近端mic采集到有效人声质量越高,对大音量通话场景的回音压制越好。
该数据差异一般在20db-35db,差异35db是大部分耳机的气密性要求,一个理想的气密性耳机,堵住和不堵住mic采集的数据扫频信号频谱如下图:
image

3.3 小腔体或密闭腔体音箱--AGC调试模拟单工通话效果

1.前文回顾:AGC属于mic采集数据流中的二级放大或缩小,只会影响远端听到的声音(详细看前文)。
imageimage 小腔体音箱/大吸盘音箱:
音箱特点:喇叭腔体很小,所以很容易导致mic与喇叭腔体的隔绝性不强;或者由于空间原因,mic与喇叭腔体根本就没有做密封隔绝,这样就很容易造成通话回音的问题。一般对于这种结构的音箱,需要实现蓝牙通话的功能则推荐调试成单工通话的方式:此段主要介绍通过AGC模块调试模拟单工通话的效果,相较于软件上直接设置为单工模式AEC_SIMPLEX,AGC调节可使远端听到的效果更好。

需要打开的算法模块

使用单工通话模式就是为了解决处理通话回音的问题;所以如果已决定调试为单工通话效果,则建议在通话算法上(AEC/NLP/ANS)可只保留ANS或是DNS这种环境声降噪模块,回声问题通过AGC调试来模拟单工通话效果来解决处理。这样还能节省ram资源,减小通话时CPU使用率。新版配置工具可如下操作,也可在程序中直接修改:
image 旧版SDK配置工具无法直接在工具中关闭对应的通话算法,可直接在程序中修改:
imageimage 【如果资源够用,也是可以保持AEC和NLP算法也打开的;只是mic采集到的原始数据会过aec和nlp处理,增加通话时cpu资源的消耗】

AGC动态调节参数修改

由于通过AGC来调节单工模式,需要修改AGC的参数突破工具中的界限,所以可直接在程序中修改需要修改的AGC参数,其他通话参数按照原流程读取配置工具即可。
本段的核心即通过AGC动态增益调节的原理,来控制通话实现单工通话的效果,整个AGC工作的流程和机制自行查看上方文档【4、AGC自动增益控制】!!!
image

        //单端双端讲话淡入淡出步进
        p->AGC_NDT_fade_in_step = 18.f;
        p->AGC_NDT_fade_out_step = 18.f;
        p->AGC_DT_fade_in_step = 18.f;
        p->AGC_DT_fade_out_step = 18.f;
        //单端讲话放大上下限及上下限阈值 ---- AGC调试单工,单端可根据样机实际情况来定
        p->AGC_NDT_max_gain = 8.f;
        p->AGC_NDT_min_gain = 4.f;
        p->AGC_NDT_speech_thr = -50.f;
        //双端讲话放大上下限及上下限阈值,远端讲话时,压制近端mic采集声音的大小,一般-60db就听不到了;
        //该参数不需要太大;太大会有通话时突然没声音的感觉,也会导致压制近端mic声音恢复的时间过长,具体根据实际情况测试
        p->AGC_DT_max_gain = -30.f;
        p->AGC_DT_min_gain = -30.f;
        p->AGC_DT_speech_thr = -40.f;
        //判断走单端还是双端阈值,在AGC单工模式中,即如同AGC压制的开关,配置工具中默认参数为-70
        //该参数也不用太小,太小的话,远端有一小点声音,近端的mic就被压制到完全没声音了,具体根据实际情况测试
        p->AGC_echo_present_thr = -55.f;

以上程序只是某个样机案例中的修改参数,具体样机仍需根据实际情况测试再修改。

3.4 使能mic混响,同时需要通话时跑aec通话算法

当前SDK默认是使能mic混响后(哪怕不open mic混响),会固定mic采样率和dac输出采样率为44100,该固定的采样率在板机配置中可做修改。
imageimage 使能mic混响后,mic每次采样的数据点数也会跟随mic采样率计算变化。
imageimage

问题注意点:

我们的aec通话算法各个模块只支持处理16K的数据,并且每次处理的数据点数为256。即通话时mic采样率应为16K,通话DAC输出采样率为16K或8K(宽带通话或窄带通话)。所以这就和开mic混响后固定的mic采样率和dac输出采样率以及采样点数存在冲突。所以优化方法需区分开mic混响和开mic通话的流程。

具体优化案例:

  1. 首先,蓝牙开mic通话时如需跑aec通话算法,需关闭mic混响。在esco_enc_open流程中,开mic流程可以直接修改为走默认不带混响的开mic流程。 image
  2. 区分开mic通话案例【注意以下是用多个标识区分mic混响和mic通话流程的案例,还需根据客户程序做更多的区分】 imageimageimage 以上是用标识位区分流程的案例,各标识位置1的地方,esco_mic_online可在esco_enc_open处置位。esco_call_online可在esco_dec_start处置位。

本文档包含以下子页面

  • PCM写卡工具使用说明
Prev
UI相关应用
Next
通话相关应用