logo资料库

通话算法调试指南.pdf

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
Table of Contents
1400/1402/1302 算法调试指南
整体通路
需要的设备和工具
调整下行通路
确定 A2DP 最大输出音量,在 A2DP 模式下测试
确定 HPF 最大输出音量,在 HPF 模式下测试
PLC
调试噪声
EQ
调整上行通路
调整上行音量
调试上行双麦克
调试上行回声
调试上行噪声
调试上行 COMPEXP
调试上行 EQ
算法相关参数调试
AEC2FLOAT
NS2FLOAT
算法增益调试
COMPEXP
EQ
Table of Contents 1400/1402/1302 算法调试指南 整体通路 需要的设备和工具 调整下行通路 确定 A2DP 最大输出音量,在 A2DP 模式下测试 确定 HPF 最大输出音量,在 HPF 模式下测试 PLC 调试噪声 EQ ..................................................................................................................... ........................................................................................................................................... ............................................................................................................................. .................................................................................................................................... ......................................................................... .............................................................................. ............................................................................................................................................ .................................................................................................................................... .............................................................................................................................................. .................................................................................................................................... ............................................................................................................................. .......................................................................................................................... ............................................................................................................................. ............................................................................................................................. .................................................................................................................... ............................................................................................................................... ............................................................................................................................. ................................................................................................................................ .................................................................................................................................. ............................................................................................................................. ................................................................................................................................... .............................................................................................................................................. 1 1 1 1 1 1 1 1 2 2 2 2 5 5 5 5 5 5 6 7 8 8 调整上行通路 调整上行音量 调试上行双麦克 调试上行回声 调试上行噪声 调试上行 COMPEXP 调试上行 EQ 算法相关参数调试 AEC2FLOAT NS2FLOAT 算法增益调试 COMPEXP EQ
1400/1402/1302 算法调试指南 整体通路 整体通路参考 Audio Developer 工具。 所有算法参数都在 bt_sco_chain_cfg_default.c,其他变量 名含有 TX 的表示是上行算法参数,还有 RX 的表示是下行算法参数。 需要的设备和工具 需要调试的整机(接出串口线,dump 音频数据) Audio Developer 工具。如无工具,请到 ftp 下载。 ftp://software.bestechnic.com/,用户名 bescustomer,密码 A#yd2Ha4n_ 工具位于 tools/audiotools/audio_developer/ 目录下,audio_developer_v0.3.4.rar 为调试工具, bes_speech_tuning_tool_ug_v0.3.3 为调试工具使用说明。 如果需要调试双麦克抑噪,还需要下面两项 一个小音箱 白噪声源文件 调整下行通路 确定 A2DP 最大输出音量,在 A2DP 模式下测试 目前确认的是电学的失真必须满足在一定的范围内(< 0.04%)。 模拟增益默认已设置为最大,如果需要 更大的输出幅度,需要提高 VCODEC 电压或者外接 PA。 确定 HPF 最大输出音量,在 HPF 模式下测试 目前 HPF 模式和 A2DP 模式下 Codec 的模拟数字增益是一致的,因此如果要调整 HPF 下喇叭音量,必须 调整下行算法增益(bt_sco_chain_cfg_default.c 文件里的 .rx_post_gain),需要注意的事,一般下行算法增 益不能大于 1.0,也就是不能放大,否则会出现饱和失真。 PLC 提供开关选项,默认打开。 调试噪声 如果下行有噪声,可以打开下行抑噪(SPEECH_RX_NS2FLOAT)。参考下面噪声算法调试。
EQ 根据客户需要具体调整,参考下面 EQ 调试。 调整上行通路 调整上行音量 使用默认模拟数字增益,测试回声性能,如果存在回声残留,调整 AEC 相关参数,需要注意的是调整 AEC 时需保证麦克风拾取的回声没有饱和,控制麦克拾取到的回声大小。如果最终的上行音量偏小,需要 调整 .tx_post_gain 。要注意的是,CVSD 编码在信号幅度大于 -6dBFs 的时候会存在失真。 默认麦克风模拟增益已经最大,默认 12dB,参考对应的 analog_bestxxxx.c(比如 2300p 系列芯片参考 analog_best2300p.c)。 #define DEFAULT_VOICE_ADC_GAIN_DB 12 数字增益(CODEC_SAD_GAIN 默认 10 为放大 18dB,一级 2dB,参考 tgt_hardware.h 里面,一般需要 在无后端增益的情况下上行数据 PCM 能达到 -15dB 左右。 #define CODEC_SADC_VOL (10) 调试上行双麦克 #if defined(SPEECH_TX_MIC_CALIBRATION) /*************************************************************************** ************************* * Describtion: * Mic Calibration Equalizer, implementation with 2 order iir filters * Parameters: * bypass(0/1): bypass enable or disable. * mic_num(1~4): the number of microphones. The filter num is (mic_num - 1) * calib: {bypass, gain, num, {type, frequency, gain, q}}. Please refer to SPEECH_TX_EQ section * in this file * Resource consumption: * RAM: None * FLASE: None * MIPS: fs = 16kHz, 0.5M/section; * Note: * None **************************************************************************** ************************/ const SpeechIirCalibConfig WEAK speech_tx_mic_calib_cfg = { .bypass = ,
.mic_num = 2, .calib = { { .bypass = , .gain = .f, .num = , .params = { {IIR_BIQUARD_LOWSHELF, 150, -2.5, 0.707}, } }, }, }; #endif #if defined(SPEECH_TX_MIC_FIR_CALIBRATION) /*************************************************************************** ************************* * Describtion: * Mic Calibration Equalizer, implementation with fir filter * Parameters: * bypass(0/1): bypass enable or disable. * mic_num(1~4): the number of microphones. The filter num is (mic_num - 1) * calib: {filter, filter_length, nfft}. * Resource consumption: * RAM: None * FLASE: None * MIPS: fs = 16kHz, 0.5M/section; * Note: * None **************************************************************************** ************************/ float mic2_ft_caliration[256] = {1.f, }; const SpeechFirCalibConfig WEAK speech_tx_mic_fir_calib_cfg = { .bypass = , .mic_num = SPEECH_CODEC_CAPTURE_CHANNEL_NUM, .delay = , .calib = { { .filter = mic2_ft_caliration, .filter_length = ARRAY_SIZE(mic2_ft_caliration), }, }, }; #endif #if defined(SPEECH_TX_2MIC_NS2) /*************************************************************************** ************************* * Describtion:
* 2 MICs Noise Suppression * Parameters: * bypass(0/1): bypass enable or disable. * delay_taps(0~4): ceil{[d(MIC1~mouth) - d(MIC2~mouth)] / 2}. * ceil: Returns the largest integer less than or equal to the specified data * d(MIC~mouth): The dinstance from MIC to mouth * e.g. 0: 0~2cm; 1: 2~4; 2: 5~6... * freq_smooth_enable(1): Must enable * wnr_enable(0/1): wind noise reduction enable or disable. This is also useful for improving * noise suppression, but it also has some damage to speech signal. * Resource consumption: * RAM: None * FLASE: None * MIPS: fs = 16kHz, 32M; * Note: * None **************************************************************************** ************************/ .tx_2mic_ns2 = { .bypass = , .delay_taps = .f, .freq_smooth_enable = 1, .wnr_enable = 1, }, #endif 1. 2. 1. 2. 3. 4. 5. 6. 7. 将喇叭放在双麦克中垂线上,播放白噪声,dump 数据查看录音大小,调整音箱声音大小,使录音数 据大概在 -10dB 左右。 使用 Adobe Audition 其他类似工具打开 dump 出的文件,查看两个 mic 拾取到的信号的幅频或相 频差异是否符合预期,可以与结构工程师的结果比较。如果没有相位差异,直接调到第 7 步。 使用 Audio Developer 工具中 console 里 aqe_tools.run_fir_calibration 或者 aqe_tools.run_iir_calibration ,将 1 中录音数据作为输入,得到一组 FIR/IIR 滤波器系数 (位于 _coeffs.h 里面)。 在支持硬件 FIR 的平台上(best2300/best2300p),使用 aqe_tools.run_fir_calibration(infile.wav) ,会在 dist 文件夹下生成文件名后 缀为 _coeff_fir.h 文件,将其中的数组替换 bt_sco_chain_cfg_default.c 里 mic2_ft_caliration 数组即可。 在不支持硬件 FIR 的平台上(best1400/best1402),使用 aqe_tools.run_fir_calibration(infile.wav,12,12,True) ,会在 dist 文件夹 下生成文件名后缀为 _coeff_iir.h 文件,将其中的数组替换 bt_sco_chain_cfg_default.c 里 speech_tx_mic_calib_cfg 里的滤波器参数即可。 其中命令中的 12 是滤波器的阶数,可以调整成更大。 查看生成的文件 calib_noise_out.wav,看校准后的相位是否达到预期。当输入文件相位差较大 时,可能无法使用 FIR 滤波器来补偿。 将获得的参数更新软件里后重新执行第 1,2 步,此时校准后的信号应该是无相位差的。 调整 SPEECH_TX_2MIC_NS2 中 delay 参数,参考双麦克 2cm 间隔设置为 1,测试双麦克主方向是 否存在失真,及双麦克前后左右四个方向的噪声抑制情况。逐渐减少 gain,直至主麦克方向无失真, 并且主瓣宽度能够符合佩戴角度的变化。 注意在支持硬件 FIR 的平台上推荐使用 SPEECH_TX_MIC_FIR_CALIBRATION,同时使用
SPEECH_TX_MIC_FIR_CALIBRATION 里的 delay 来调整双麦克噪声抑制量。 调试上行回声 打开 SPEECH_TX_AEC2FLOAT。参考下面 回声算法调试。 调试上行噪声 打开 SPEECH_TX_NS2FLOAT。参考下面 噪声算法调试。 调试上行 COMPEXP 参考下面 COMPEXP 调试。 调试上行 EQ 参考下面 EQ 调试。 算法相关参数调试 由于部分算法可以同时在上行和下行使用,因此下面的文档不特指是上行还是下行算法,其参数配置的含 义是一致的。 AEC2FLOAT #if defined(SPEECH_TX_AEC2FLOAT) /*************************************************************************** ************************* * Describtion: * Acoustic Echo Cancellation * Parameters: * bypass(0/1): bypass enable or disable. * hpf_enabled(0/1): high pass filter enable or disable. Used to remove DC for Near and Ref signals. * af_enabled(0/1): adaptive filter enable or disable. If the echo signal is very large, enable this * nlp_enabled(0/1): non-linear process enable or disable. Enable this by default. * ns_enabled(0/1): noise supression enable or disable. Enable this by default. * cng_enabled(0/1): comfort noise generator enable or disable. * blocks(1~8): the length of adaptive filter = blocks * frame length * delay(>0): delay samples from mic to speak, unit(sample). * min_ovrd(1~6): supression factor, min_ovrd becomes larger and echo
suppression becomes larger. * target_supp(<0): target echo suppression, unit(dB) * noise_supp(-30~0): noise suppression, unit(dB) * cng_type(0/1): noise type(0: White noise; 1: Pink noise) * cng_level(<0): noise gain, unit(dB) * Resource consumption: * RAM: None * FLASE: None * MIPS: fs = 16kHz; * Note: * This is the recommended AEC **************************************************************************** ************************/ .tx_aec2float = { .bypass = , .hpf_enabled = false, .af_enabled = false, .nlp_enabled = true, .clip_enabled = false, .stsupp_enabled = false, .ns_enabled = true, .cng_enabled = false, .blocks = 1, .delay = 70, .min_ovrd = 2, .target_supp = -40, .noise_supp = -15, .cng_type = 1, .cng_level = -60, .clip_threshold = -20.f, .banks = 64, }, #endif 一般耳机项目默认参数即可, 注意一下几点即可: 如果回声比较大,需要打开 af_enable。可能会导致系统卡顿,此时需要提高系统主频。 该模块已集成噪声抑制,通过 ns_enable 来控制。 NS2FLOAT #if defined(SPEECH_RX_NS2FLOAT) /*************************************************************************** ************************* * Describtion: * Acoustic Echo Cancellation * Parameters: * bypass(0/1): bypass enable or disable. * denoise_dB(-30~0): noise suppression, unit(dB). * e.g. -15: Can reduce 15dB of stationary noise.
分享到:
收藏