3GPP认证
📎 原始文档:https://www.kdocs.cn/l/ceeDzWpJKvHG 3GPP认证
概述
本文档旨在根据整改过的认证项,提供一定的问题解决思路,便于自行根据认证项整改
认证介绍
3GPP(3rd Generation Partnership Project,第三代合作伙伴计划),主要针对目前的CVSD和MSBC下的耳机通话性能测试
认证要点:
当存在未通过的认证项,除了要求实验室针对性导出该项测试的报告结果进行分析,也需要同步找认证实验室要到测试结果音频进行分析。
测试结果音频:
此处以3QUEST部分认证为例,测试结果音频包含三部分,即(1-测试音源、2-参考麦克风录音、3-耳机录音)
根据不同的测试项,该测试结果中的录音是用于整改分析的关键数据。
测试项整改处理方法
7.10.0 Delay Check Send.+ Receiving Direction DUT, HENB
分析:认证项要求延时低于220ms,该结果为发送延时+接收延时。实际结果为140.3+85.7 = 226ms>220ms,因此NG。
参考延时的通话算法模块如下:
整改方法:
- 调小下行接收延时(不能低于15ms)

- 3QUEST用ANS能过的前提下(一般是双麦enc耳机),将DNS修改为ANS
- 回音保证好气密性和隔离的前提下,将NLP模块关闭,换成AEC(优化20ms左右)
7.2.5.2b Loudness Rating Receiving max.(RLR) P.501 HENB
分析:最大音量接收响度,要求在-7db->-13db,此处耳机过小导致NG。
整改方法:
- 配置工具修改DAC模拟增益。

- 修改通话音量表(最大音量不能超过0db)
- 修改DACVDD大小(DACVDD要小于VDDIO 200mV以上)
7.2.5.2c Loudness Rating Receiving min.(RLR) P.501 HENB,
该项为测试窄带最小音量接收响度,分析及整改方法参考7.2.5.2b
7.4.1b Sensitivity, frequency character. Snd P.501 HENB
分析:红框部分超出认证项要求范围导致NG。
整改方法:
若是双麦ENC耳机,则在保证ENC对语音保留程度区域完整和平稳的前提下再进行测试。若ENC对有效语音的保留已经不完整,则建议优先整改ENC。
其次通过通话上行EQ进行调整,范围上限和下限可调,耳机上行效果频响能在要求范围内波动即可。
7.8.2a Distortion Receiving, activation HENB
分析:该项目为测试窄带下不同响度下的1019.5Hz(带激励信号)的谐波失真。其计算方法为:利用200Hz左右的基频信号与1020Hz的谐波信号进行比例计算得出失真度大小。由于窄带的采样率较低,该项一般窄带测试下会出现NG的情况,而MSBC宽带测试中则能通过。
整改方法:
软件流程中添加如下代码进行针对性处理。
audio_dec.c文件中添加如下代码:
#if TCFG_3GPP_CVSD_DAC_FIX
//3GPP
typedef struct {
int xn1;
int xn2;
int yn1;
int yn2;
unsigned int energytotal;
unsigned int energyfilted;
int runcnt;
int holdcnt;
int volrate;
int voldest;
} test_st;
test_st *rt = NULL;
static const int bp_coefvvvt[] = {
1107982,
0,
-1107982,
-22159644,
14561252
};
static void testft_open(test_st* tobj)
{
memset(tobj,0,sizeof(test_st));
}
static void testft_run(test_st* tobj, short* indata, int len)
{
int* coefv = bp_coefvvvt;
long long HL_register;
int i;
for (i = 0; i < len; i++){
int v = indata[i];
v = v << 8;
int absvv = (v > 0) ? v : (-v);
tobj->energytotal = ((long long)tobj->energytotal * (long long)1023 + (long long)absvv) >> 10;
int out = ((long long)v * (long long)coefv[0] + (long long)tobj->xn1 * (long long)coefv[1] + (long long)tobj->xn2 * (long long)coefv[2] -
(long long)tobj->yn1 * (long long)coefv[3] - (long long)tobj->yn2 * (long long)coefv[4]) >> 24;
int absout = (out > 0) ? out : (-out);
tobj->energyfilted = ((long long)tobj->energyfilted * (long long)1023 + (long long)absout) >> 10;
tobj->xn2 = tobj->xn1;
tobj->xn1 = v;
tobj->yn2 = tobj->yn1;
tobj->yn1 = out;
tobj->runcnt++;
if (tobj->runcnt >= 32){
tobj->runcnt = 0;
int rate = 0;
if (tobj->energytotal>(256*256)){
rate = ((long long)tobj->energyfilted * (long long)128) / tobj->energytotal;
if (rate>80){
tobj->voldest = 128;
}else if(rate<70){
tobj->voldest = 0;
}
}
}
if (tobj->volrate< tobj->voldest){
tobj->volrate++;
}else if (tobj->volrate> tobj->voldest){
tobj->volrate--;
}
out = ((long long)out * (long long)tobj->volrate + (long long)v * (long long)(128 - tobj->volrate)) >> 7;
out = out >> 8;
if (out > 32767){
out = 32767;
}else if (out < -32768){
out = -32768;
}
indata[i] = out;
}
return;
}
#endif



7.8.2e Distortion Receiving, no activation HENB
该项测试方法和整改内容同7.8.2a,此处不再复述。区别为该项的测试音频为1019.5Hz(不带激励信号)
8.4.1a Sensitivity frequency charact.Sending P.501 HEWB
原因及整改方法同7.4.1b
8.2.5.2b Loudness Rating Receiving max.(RLR) P.501 HEWB
该项测试宽带下的最大音量接收响度,分析及整改方法同7.2.5.2b
8.2.5.2c Loudness Rating Receiving min.(RLR) P.501 HEWB
该项为测试宽带最小音量接收响度,分析及整改方法参考7.2.5.2b