又被“过运营商语音认证”虐了一回!虐的伤痕累累、疲惫不堪!过程是痛苦的,但结果是美好的,收获也是挺多的!既然用了“又”,那以前肯定被虐过。是的,没错。那是7年多前(2011年底),同样是在秋冬,不过一个是2011年底,一个是2018年底。同样是在芯片公司, 不过一个是老牌外企,一个是本土新秀。当时我们在公司的芯片上做了一个语音通信解决方案(具体怎么做的见我前面的文章:如何在嵌入式Linux上开发一个语音通信解决方案),只有过了中国电信的语音认证客户才会用我们的。老板把这个任务交给了我,我那时是第一次弄这些,一脸懵逼。既然交给了我,我就尽全力把它做好。认证主要有两方面内容:音质相关的MOS(Mean Opinion Score,平均主观意见分)和时延相关的delay。当时MOS的评分标准是PESQ(Perceptual Evaluation of Speech Quality,语音质量的感知评估),即ITU-T的P.862。经过近几年的发展,如今变成了POLQA(Perceptual Objective Listening Quality Analysis,感知客观语音质量评估),即ITU-T的P.863。P.863标准(POLQA)是对P.862标准(PESQ)的升级,适应范围更广,评价结果更接近主观的MOS。经过近三个月的努力,成功过了认证,心里别提多高兴了。虽然很累,但技术能力提高了不少,也特别有成就感。这次过的是中国移动(CMCC)手机上的EVS音频电学认证。关于EVS,我在前面的文章(移动通信最先进的音频编解码器EVS及用好要做的工作)中讲过。下面就讲讲是怎么过认证的以及怎么被虐的。

前面的文章(Android智能手机上的音频浅析)讲了安卓手机上音频相关的软硬件,文章(谈谈我开发过的几套语音通信解决方案)讲了在安卓手机上打传统电话时的方案,知道了通话时主要是CODEC芯片、Audio DSP(ADSP)和CP参与语音数据的传输,具体如下图:

codec芯片主要负责语音的采集和播放,ADSP上主要是编解码以及语音增强(voice Enhancement,简称VE,包括AEC、ANS、AGC等)等,CP上主要是网络侧及空口的处理。CMCC以前对EVS是可选项,但2018年四月份开始变成了必选项,即要入库的手机一定要支持EVS。我们公司的手机芯片是支持EVS的,这功能是我和CP的同事共同完成的(我负责Audio DSP上EVS codec相关的,CP同事负责网络侧IMS相关的)。那时中国移动关于EVS认证的case还没公布,我们在实网下对EVS做了基本的调测,能用了。到了七八月份具体case公布了,全面调测EVS就提上了日程。CP同事、测试同事和我三人组成了一个小分队,由于EVS codec在Audio DSP上,这件事就由我来牵头向前推进。先在实网下做全面的测试,解决了不少语音质量相关的问题(比如噪声断续等)。这些问题相对都是较难弄的,花了近一个月。实网下测下来基本感觉不到噪声断续等问题了,我们决定开始过移动EVS认证的case。

CMCC EVS音频电学认证的case也主要分两类:MOS和delay。测试时仪器通过音频线和手机的耳机孔连接进行语音数据的传输,仪器通过射频线和手机上的射频口相连进行空口数据的传输,其框图如下:

MOS有良好网络下的上下行MOS、恶劣网络下的下行MOS、LTE向2/3G切换的切换中和切换后的MOS、数据业务并发时的MOS等。算上行MOS时,仪器把参考音频经音频线送给手机,手机上行处理后经射频线再把码流送给仪器,仪器解码码流得到PCM再基于POLQA(上面说过现在MOS的评分标准用的是POLQA)跟参考音频比较得到MOS分,上图中的uplink方向给出了示意。算下行MOS时,仪器把参考音频的码流经射频线送给手机,手机下行处理后经音频线把语音再送给仪器,仪器基于POLQA把收到的语音跟参考音频比较得到MOS分,上图中的downlink方向给出了示意。Delay同样有良好网路下的delay、恶劣网络下的delay、LTE向2/3G切换的切换前后的delay、数据业务并发时的delay等,这里delay是指单向时延(one-way-delay),即从发端到收端的延时。算delay的框图如下:

仪器把参考音频经音频线送给手机,手机上行处理后经射频线再把码流送给仪器,仪器中形成一个loopback(上图中红色粗体处),把这个码流经射频线送给手机。手机下行处理后把语音数据经音频线送给仪器,仪器把收到手机语音数据的时间和参考音频的发送时间做比较从而得到delay值。不管是MOS还是delay都是测多次(MOS测10次或者20次,delay测50次),然后算平均值作为最终得分。

测试EVS音频电学的这套仪器非常贵,没有几百万是搞不定的,后面还有每年向仪器厂商缴的维护费用。大厂一般都会买上一套来调试各种音频电学指标。上文说过我现在的公司是本土新秀,老板不是很愿意花这么多钱在这上面。幸好CMCC有仪器设备免费给相关厂商用,要提前预约,通常一星期批一次,一次两三个小时。但是经过两三个星期这样的运作后发现效率太低(手机校准(校准是为了找到最好的灵敏度值和gain值,相同的仪器和手机只需要做一次校准,如果有一个变化了就需要重新做校准)一次要花近两个小时,我们的手机在实网下打EVS电话没什么问题,但是在仪器环境下测时好多case的EVS通话都建立不起来,需要各个领域的同事一起调查,也需要仪器侧技术人员的support,但是仪器侧的support力度很弱,进展太慢),老板决定向仪器厂商租设备来调试(租金也是相当昂贵的),即我们到仪器厂商的实验室去调试。仪器厂商的实验室在北京,这样就有了我和CP同事的北京之行(我们公司北京有office,测试同事就在北京)。在北京呆了一星期,同样遇到了不少问题,由于是在仪器厂商的实验室,遇到问题时他们支持的力度较大,大部分case都能测起来了,进而也就得到了相应的MOS分和delay值。良好网络下的MOS分不仅没有一个达标的,而且有的离达标还很远,良好网络下的delay部分达标了。仪器厂商的技术人员安慰我们说第一次过EVS认证都是这样的。在过EVS认证这件事上他们见多识广,我们就当信以为真,哈哈。

回到公司后我们简单总结了一下,并制定了后面的策略:每星期由北京测试同事去仪器厂商实验室测试一到两天,一方面验证前面遇到的问题是否fix,修改后MOS分是否有提高,delay值是否有减小,另一方面再继续测未测的case,即采用迭代的方式向前推进。先主攻良好网络下的MOS分。调查MOS分低(即音质差)主要是把各个处理过程后的语音数据dump出来,再辅以我们自己开发的各种工具,最终都变成PCM数据用CoolEdit听,从而得出是哪个处理过程把音质降低了(主要是噪声断续等),然后再在这个处理过程中找到使音质降低的根本原因。在前面文章(webRTC中音频相关的netEQ(一):概述)中也说过我们语音通信中也用到了netEQ,只不过MCU模块在CP上,DSP模块在ADSP上。下行CP给ADSP发语音包和netEQ的控制命令,上行ADSP 给CP发语音包和netEQ的反馈信息(主要是上一帧的处理模式和时间戳等)。我们主要做了四个工具。一是EVS decoder(基于3GPP EVS reference code),把EVS码流解码成PCM;二是解析下行dump出来的CP发给ADSP的语音码流和netEQ控制命令;三是解析上行ADSP发给CP的语音码流和netEQ反馈信息;四是netEQ DSP模块的simulator(模拟器),把下行dump出来的CP发给ADSP的语音码流和控制命令作为输入,netEQ中DSP模块处理后的PCM作为输出,就能完全复盘出问题的场景,从而找到根本原因。在这些工具的辅助下发现了一些问题,也都一一解决了。经过几个星期的迭代,良好网络下的MOS分稳步提升,上下行都达到了3.9x,但是不达标(达标是4.0)。讨论下来在传输环节已经没有什么可做的了(依据是用CoolEdit听仪器中的结果音频,已经听不出任何噪声断续了),该负责VE的算法同事上场了。刚开始时算法同事也没什么招,后来听测试同事讲仪器厂商实验室有参考机,可以拿这个参考机测测,如果达标了看仪器上的结果音频是什么样的,好有参考。参考机测下来达标了,上行4.09,下行4.16。把结果音频发给算法同事,研究频谱等特性。算法同事尝试着修改VE里的参数,前三次以失败告终,让人好失望,甚至有点绝望,就差这零点零几分了!第四次尝试后总算达标了(上行4.10,下行4.20),好不容易啊!总结下来就是尽量减少对语音信号的处理,保持原有信号的频谱等特性。改好后又测了良好网络下的其他case的MOS分,全都达标了。后面由于时间不多了,就开始兵分两路,一路负责恶劣网络下的MOS,另外一路负责各种场景下的delay。恶劣网络主要分三个等级(1%丢包10ms jitter/2%丢包20ms jitter/3%丢包40ms jitter),相对OTT语音(比如微信语音,OTT语音经常会出现高于5%的丢包率)不是很恶劣,主要是因为LTE网络处理语音数据的QoS的级别较高,而OTT语音的QoS级别同其他数据业务(比如上网)是一样的,需要做好多补偿措施,具体有FEC、重传等,我在前面的文章(语音通信中提高音质的方法)对这些措施做过具体介绍,有兴趣可以看一看。提高恶劣网络下EVS的音质主要是用好丢包补偿、平滑等算法。减少delay先是算出各个环节引入了多少delay,然后看是否能减少以及减少多少,主要是减少语音数据缓的时间。例如下行先有铃声数据进DMA buffer播放出来,语音数据到来后如放在未播放的铃声数据后就会引入delay,这就需要立刻用语音数据去覆盖DMA buffer中未播放的铃声数据从而减少delay。不管是MOS还是delay,要想达标,就在几个核心的点上,比如前面讲的改VE中的参数就是一个很重要的点,改了后就能提高0.2左右的MOS分。点找到了,达标也就不是很难了,往往是找到一个点并解决了需要不少时间,有时候花了很多时间也不一定能找到,需要很强的专业知识,还是以修改VE参数的点为例,需要精通音频算法的专家。

过EVS音频电学认证前前后后花了四个月左右的时间,遇到了很多问题,参与人数也众多(我们建了一个EVS认证的群,从最初的三四人到最终的近50人,不仅有信令处理、媒体处理的,还有硬件的平台的以及空口的,都是遇到问题涉及到相关人员而拉进群的),可以算是一个不小的项目了。我作为过EVS认证的牵头者,不仅要解决好媒体处理相关的问题,同时还要跟踪项目的状态制定计划等,部分承担了PM(项目经理)的角色,不管是技术上还是项目管理上都收获颇多。

又被“过运营商语音认证”虐了一回相关推荐

  1. 广和通LTE-A模组FM101-NA率先取得北美运营商T-Mobile认证

    7月,广和通LTE-Cat6模组FM101-NA率先获得北美重要运营商T-Mobile认证,这表明FM101-NA符合北美地区通信产品性能准入标准和要求,并可在T-Mobile无线网络下平稳运行. 广 ...

  2. 一文看懂中国的运营商入库认证(中国移动入库指南)

    01 中国移动(&中国广电) 日前已建成5G基站近39万个,并且全面推动SA网络,同时和中国广电共同发展5G网络.作为全球5G网络覆盖广.用户规模大的通信运营商,中国移动始终大力推进5G融百业 ...

  3. 一文看懂中国的运营商入库认证(中国联通入库指南)

    中国联通 在国内31个省(自治区.直辖市)和境外多个国家和地区设有分支机构,是中国唯一一家在纽约.香港.上海三地同时上市的电信运营企业,连续多年入选"世界500强企业". 01 Q ...

  4. 一文看懂中国的运营商入库认证(中国电信入库指南)

    中国电信 中国电信集团公司是我国特大型国有通信企业.上海世博会全球合作伙伴,连续多年入选"世界500强企业",主要经营固定电话.移动通信.卫星通信.互联网接入及应用等综合信息服务. ...

  5. 化敌为友 运营商组团拥抱OTT为哪般

    2月15日,全球9大电信运营商宣布,成立"合作运营联盟"(Partnering Operator Alliance),协力挖掘互联网企业为电信业带来的增长潜力.从几年前的抵御OTT ...

  6. 5G发展困难,贪婪的手机企业不愿降价,运营商无奈再开4G价格战

    近日有媒体报道指运营商纷纷推出4G套餐,降低4G流量费和语音通话费用,在当下5G时代已在进行之时运营商重推4G套餐,或许是因为5G的发展面临困难所致. 运营商公布的5G用户数与中国的5G手机累计销量存 ...

  7. QA:PTCRB认证、PTCRB报告、美国运营商准入认证、国际认证

    本文1316个字,大约需要两三分钟,完整阅读更精彩,欢迎点赞.转发或留言! PTCRB新标 PTCRB旧标 Q:什么是PTCRB? A: 美国运营商准入认证,又称PTCRB认证测试.PTCRB是199 ...

  8. linux添加三权,锐捷推SAM运营商版方案 三权分立突破管理瓶颈

    锐捷推SAM运营商版方案 三权分立突破管理瓶颈 全球通信业正在经历一场移动互联网带来的巨变,随着智能终端的快速普及,运营商正面临海量数据对网络带来的压力.为了应对这种趋势,同时解决高校宿舍等特殊环境下 ...

  9. 美国运营商PTCRB认证PTCRB认证怎么做PTCRB认证是什么?

    大家好,今天我想和大家分享一下什么是PTCRB认证! PTCRB是指个人通信服务型号认证评估委员会,由北美移动运营商于1997年成立.目前的运营商已经不仅限于北美,而是涵括全球范围内的移动运营商成员. ...

最新文章

  1. PDF数据提取------1.介绍
  2. OS_CORE.C(1)
  3. 如何为你的 Github 博客添砖加瓦
  4. Python 查看pip安装的包的位置(查看pip安装包的路径)
  5. 设置tableview的滚动范围--iOS开发系列---项目中成长的知识三
  6. 太空大战背景移动的几种方式
  7. python程序30行_Python30行代码实现对pdf文字内容的提取
  8. sharepoint_study_7
  9. C#存取数据为所欲为(二)
  10. mysql中的where和having子句的区别
  11. Python Linked List
  12. [postgresql]postgresql的递归查询sql实例
  13. ubuntu的文件路径
  14. 【优化预测】基于matlab粒子群算法优化SVM预测【含Matlab源码 1424期】
  15. vc6.0怎么新建c语言项目
  16. java管理系统类似的_开发类似安居客OA系统管理平台
  17. Java新手编程入门
  18. Litestar 4D:道路照明
  19. 计算机栏和用户栏有啥区别,电脑qq轻聊版和普通版有什么区别 windowsqq轻聊版特点...
  20. 多核cpu应用场景_1分钟搞懂 CPU该买多核还是高主频?

热门文章

  1. 苹果10亿美元收购英特尔手机基带业务 买下iPhone一颗“定芯丸”
  2. 美国大使馆面签预约中心网站上的小Bug-附hack方法
  3. nsq java_golang使用Nsq
  4. odd在python_[Python Challenge通关]第11关 odd even
  5. Rounding To Odd
  6. Hessian的基本使用
  7. Allegro走线自动关闭其它飞线操作指导
  8. 微营销王萍分享如何让销量暴涨的7个方法
  9. ScrollView中嵌入ListView,让ListView全显示出来
  10. 全球及中国广告机行业竞争现状与市场需求展望报告2022-2028年