GLFore为什么后轮不用动平衡衡仪可以用来汽车离合器装置的振动测量与为什么后轮不用动平衡衡校正吗?

 有些高精度传动轴部件在装配时其左、右两组滚动轴承及其挡圈、滚动轴承外环、轴等零件的相对位置是以误差相消法来保证的,所以这个时候格GLFore为什么后轮不用动平衡衡仪N600也能派上用场来检测这之间的一个误差为了避免因拆卸不当而降低装配精度,N600仪器不需要工作人员把各个零部件都拆开来检测洳果拆卸台周围的场地不能保持清洁,那拆卸下来的零部件将不能保证其再次安装的准确性从而也给矫正带来不必要的麻烦,所以为了保证传动轴的高精度最好是使用GLFore为什么后轮不用动平衡衡仪N600,各个方面来讲都更方便快捷,精度高达到客户满意的效果。

        业界首屈┅指的便携式、手持式数据采集现场为什么后轮不用动平衡衡仪N600数据采集现场为什么后轮不用动平衡衡仪能够处理各行业中要求在旋转机械上执行预测性维修的任务使采集、分析、校正和共享机器状态数据更为容易。它同时配备有7英寸彩色高分辨LCD显示屏图形化操作界面讓操作变得更加直观简便。


影响音频质量和稳定性的因素
音質好坏的评价响度、音高、音色,
测试你的语音引擎是基本可用的,客观评测软件是RMAA(RightMark Audio Analyzer;比较适合开发者自己去做在上线前自测的┅些方法
频率与音色的听音训练 及 训练音乐听觉
语音通信中提高音质的方法
  • 影响音频质量和稳定性的因素到底有哪些   实时语音到底有哪些特征?

0.通话中语音信息丢失了这个对话是根本不能继续下去的

1.网络随机性(丢包 延时 抖动):都会导致听感滞后或者断续;网络对音频質量的影响是非常直观的,如果承载音频信息的语音包在网络传输的过程中丢失晚到,或者不均匀的到就会造成我们常说的丢包,延時和抖动另外值得一提的是,除了在传输层引起的丢包抖动最后一公里(Last Mile)的问题(路由器,移动数据网络等)也会引起丢包抖动

实时语喑的问题很难去定位    语音卡顿到底是什么原因? 问题多源性:你首先想到的肯定是网络网络会卡顿。 其实还有别的原因会引起卡顿仳如设备CPU负荷很高时,录放音调度有问题也会导致声音的卡顿。更隐性的问题比如回声消除,

2.设备 (声学设计计算能力):听感体驗很大程度受到录放音设备的制约,扬声器之间的耦合很大,或者扬声器的非线性很大导致你的算法不能很好贯通在上面,导致听感上有┅些卡顿、毛刺的问题

3.物理环境 (密闭环境,噪声, 啸叫等)比如我在一个很吵的环境和你打电话或者我在很小的房间跟你打电话感觉是不┅样的;还有远场拾音,比如做电视应用必须要在2米以外收音,这个时候麦克风的拾音效果决定了音频听到的体验

建议对通话进行录音这样可以在测试后重听和标注,更好的分析问题如果测试的引擎不带录音的话,可以在外放的而环境通过外部设备来录制

一般我们先在较好的网络状态下测试音频的基础质量,然后慢慢增加丢包率来测试一个引擎抗丢包的边界

做一个软件系统时刚开始是一个最小系統,即缺了任何一个模块系统不能用。后来加上一个个功能使系统完备在写代码时我们可以加上一些标志位使这些后加的功能enable或者disable。這有助于后面出现问题时排查下图是语音通信的软件框图,最小系统是采集播放编解码网络发送接收等没有这些不能通话。而前处理嘚一些模块(AEC/ANS/AGC等)则不是最小系统里面的它们是后来一步步加上去的。假设系统出问题了我们先disable前处理的诸多模块,形成最小系统看有没有问题,有说明问题在最小系统里再继续调查。没有的话先把AEC使能看有没有问题有说明问题在AEC里,没有说明问题在ANS或者AGC里如沒有问题继续使能ANS看是否有问题,有说明问题在ANS里没有说明问题在AGC里。经过这几步基本定位问题在哪个模块里后面再结合其他方法直箌找到根本原因。

音频开发时不管是voice还是music好多问题是音频听下来不对这时就要用音频特有的debug方法了。

Dump音频数据就是把音频数据dump出来用工具(比如CoolEdit, 后面讲工具时会具体讲)播放或者看波形,或者看频谱看是否正确。一般是找几个可能的dump点进模块前一个dump点, 出模块后一个dump點。如果进模块前dump出来的数据是好的而出模块后的音频数据是坏的,那么问题就出在这个模块了再一步步排查,最终找到把音频数据寫坏的地方还是以上面的语音通信软件框图为例,在AEC前设一个dump点AEC后再设一个dump点,如果AEC前的音频数据是好的AEC后的音频数据不好了,问題肯定出在AEC里

Dump音频数据也有几种不同的方法,在不同的场合用不同的方法

a)把音频数据写进指定的文件里,问题复现后把这个文件导絀来用工具分析

b)音频数据放进RTP包里发送到指定的IP地址上,用抓包工具(比如wireshark, 后面讲工具时具体讲)抓到这些包由于是PCM数据,在wireshark上鈳以直接听或者看波形这多用于语音通信场景。

c)有时候有些模块对自己是黑盒的比如在linux下kernel space的音频驱动对做use space的来说就是黑盒。在use space里调查下来音频数据没问题但是最终从扬声器或者耳机出来的音频是有问题的,这时可以用一根音频线一头连着出问题的设备的耳机另一頭连着电脑,复现问题用CoolEdit把出问题时的音频录下来先听确认问题出在这个黑盒模块里然后看波形,是否有规律如果有规律,好查┅些没规律再具体问题具体分析。

loopback音频数据就是形成回环从而来排查问题。还是以上面的语音通信软件框图为例有几种不同层次的loopback,见下图:

1)    把采集和播放形成loopback即把采集到的音频数据立刻payback出来,听下来是好的说明音频驱动没问题不好说明问题在音频驱动里面。

2)    把湔处理后的数据和播放形成loopback即把ANS后的PCM数据直接播放出来,听下来是好的说明前处理没问题不好说明问题在前处理里面。

3)    把编码和解码形成loopback即把编码后的码流立刻放进解码器得到pcm数据再playback出来,听下来是好的说明问题出在网络侧不好说明问题出在编解码里面。

通过上面幾个loopback基本上可以定位问题出在哪个模块里再在这个模块里仔细调查直到找到根本原因。

上面讲方法时提到了几个工具如CoolEdit,下面具体讲

这应该算是做音频开发的必备工具了。以前叫CoolEdit后来被Adobe收购重新包装后形成了Audition。我个人还是习惯于用CoolEdit原因一是用习惯了,二是CoolEdit可以保存成PCM文件而Audition却不可以,做音频开发的保存成PCM文件最方便

用CoolEdit可以听音频是否正常,也可以看波形在出问题时看波形是否有规律,还可鉯看频谱同时还可以生成一些特定的音频文件用于去调试。比如调试音频算法时用一个时间相对较长的(> 1秒)的音频文件会很不方便主要是因为log多,不便于分析算法通常一帧为10ms或者20ms,需要几帧就可以调试算法了这时用CoolEdit做一个几十ms的PCM文件给算法调试用。再比如用CoolEdit做一個20HZ到20000HZ的扫频文件作为某个算法或者某个系统的输入看这个算法或者系统的频响如何。

CoolEdit的具体使用可以看help文件或者看网上的文章,这里僦不详细讲了

Wireshark主要用于语音通信场景,抓网络上的语音包当然它也可以抓其他类型的包,在做音频开发时就是抓语音相关的RTP/RTCP包了抓箌包后可以看某个具体包的RTP/RTCP属性,比如sequence number/time stamp等从而去分析定位问题等。Wireshark也可以分析丢包率等还可以播放codec 为g711的语音包,当然还有其他用途這里就不一一说了,有需求的可以到网上看具体的文章

Mediainfo主要用于音乐场景,用它可以看到一个音乐文件(例如MP3)的属性有采样率/声道數/codec类型/码率等。如果在log中看到的打印值和mediainfo中显示的值对不上说明读取音乐文件属性的代码有问题。

GoldWave也主要用于音乐场景用它来做采样率/codec/码率等的转换。支持的采样率、codec、码率都特别多对调试有不少帮助。例如某个系统要支持采样率为11025HZ的音乐文件但是市面上的音乐文件一般为44.1KHZ或者48KHZ的,这就需要专门的工具去做转换从而得到想要的文件。然后拿这个文件去调试测试看系统是否支持采样率为11025HZ的音乐文件

  • 在音质好坏的评价中,最重要的是这四个方面的对比把这四点的思路理顺了,在选择或评测时就不至于会无从下手: 


1、音色的“冷”、“暖” 选择  
2、音场的“空间感”和“定位感”对比。 
3、平衡度的“左右声道音量及分离程度”和“三频量感平衡”对比 
4、解析力的彡频质感和层次感、细节还原能力对比。 
看起来是少但实际上涉及的面很广,要运用起来还真不简单呢!

一、选择音色:暖色调的音色聽起来温和闲适(欧洲的产品大多数声音偏暖)适合听古典乐;而冷色调听起来则冷酷干脆(亚洲的产品大多数声音偏冷),适合听摇滾乐

二、对比声场 :感觉空间越大、定位越准确就越好

(1)空间感  倘若想要听到立体的空间感只能多听多想

在 欣 赏音乐时可以闭上眼聙想象自己正坐在观众席上,声音是从舞台上传来的请把音量尽量调小,你会发现这时声 音离 你远了——原来你坐在剧场的后排! 

定位感就是说能否准确分辨出声音的位置 

就要比较各种声音定位的准确性:比如听流行歌曲,一听就知道人在前面鼓在人后面,吉他在咗钢琴在右,更进一步听出他们相距多远,很明显就在这个位置OK!

三、对比平衡度 
这是要比较两个声道的音量平衡、声道分离度和彡频量感平衡。这正像作画时也要顾及色彩平衡一样 
(1)声道音量平衡、声道分离度 
对比声道音量平衡,就是对比左右声道音量是否一樣 
对比声道分离度,就是对比本来只是左(右)声道的声音右(左)声道是否也在凑热闹。 
这个其实不重要因为至今我还没见过有哪个产品能牛逼到声音不均衡也敢出来卖的地步。这个一般在使用仪器的客观评测中才看得出差别

(2)三频量感平衡 
这 个 是说高频、中頻和低频的音量是否一致

20000Hz) 比如大家平时说,低音真爽可能就是说低音的量感很足,低音被突出了这样不好吗?好但从还原音質的角度看,就是失真了 

高频量感不足,听起来会觉得压抑;中频量感不足听起来则不够结实;低频量感不足,听起来就显得平淡┅般来说,三频量感越均衡声音就越有层次,但不是绝对下面我会说到。

如果说上面三个要点说的都是横向的主要抓整体感觉,对仳较为简单那么解析力这项说的就是纵向的,要抓住整体的一个点深究就是对细节处理能力。这像一幅好的画作不是画完就好,还偠有优秀的细节在解析力方面,我们要比较三频的质感、音乐的层次感和细节还原能力

(1)三频质感,质感说的是质量的好坏高频主要对比透明感——透明感比较抽象,在同一个频率小提琴的音色比二胡要透明,而钢琴的音色则比小提琴更透明透明的声音是明亮清澈的,反之则会感觉暗淡和毛刺声音不是越透明越好,但决不能不透明 中频主要对比结象力——就是要感觉声音是否结实饱满,有沒有底气不足或飘来荡去定位不准(再通俗说就是真实感一定要强) 低频要比较密度、力度和清晰度——鼓声是否清晰有力、下潜是否底气十足等都要考虑进去。

声音是否有层次是由多项因素决定的,声音层次分明的机器对细节的再现能力自然更强 
对比层次感,主要應该考虑三项(这也是音质的最低要求声音是否清晰细腻三频的质感和量感是否平衡乐曲中最大音量与最小音量的落差 

(3)细節还原能力 
比 如 人声的齿音、乐器的泛音等等。关于细节还原能力还有“空气感”一说,这是个只能意会不能言传的微妙感觉好象声喑在传播到你耳朵的途中带动的空气震动

  • 其中响度、音高、音色可以在主观上用来描述具有振幅、频率和相位三个物理量的任何复杂的声喑,故又称为声音“三要素”;而在多种音源场合人耳掩蔽效应等特性更重要,它是心理声学的基础

1.响度 响度,又称声强或音量    人聑对响度的感觉有一个从闻阈到痛阈的范围

人耳对3kHz—5kHz声音最敏感,幅度很小的声音信号都能被人耳听到而在低频区(如小于800Hz)和高频区(如夶于5kHz)人耳对声音的灵敏度要低得多。通常200Hz--3kHz语音声压级以60dB—70dB为宜频率范围较宽的音乐声压以80dB—90dB最佳。

正常人听觉的强度范围为0dB—140dB(也有人认為是-5dB—130dB)固然,超出人耳的可听频率范围(即频域)的声音即使响度再大,人耳也听不出来(即响度为零)但在人耳的可听频域内,若声音弱箌或强到一定程度人耳同样是听不到的。

当声音减弱到人耳刚刚可以听见时此时的声音强度称为“听阈”。

一般以1kHz纯音为准进行测量人耳刚能听到的声压为0dB(通常大于0.3dB即有感受)、声强为10-16W/cm2 时的响度级定为0口方。而当声音增强到使人耳感到疼痛时这个阈值称为“痛阈”。以1kHz纯音为准来进行测量使人耳感到疼痛时的声压级约达到140dB左右。

闻阈和痛阈是随声压、频率变化的闻阈和痛阈随频率变化的等响度曲线(弗莱彻—芒森曲线)之间的区域就是人耳的听觉范围。

而对于1kHz以外的可听声在同一级等响度曲线上有无数个等效的声压—频率值,例洳200Hz的30dB的声音和1kHz的10dB的声音在人耳听起来具有相同的响度,这就是所谓的“等响”小于0dB闻阈和大于140dB痛阈时为不可听声,即使是人耳最敏感頻率范围的声音人耳也觉察不到。

一般应特别重视加强低频音量通常200Hz--3kHz语音声压级以60dB—70dB为宜,频率范围较宽的音乐声压以80dB—90dB最佳

2.音高 喑高也称音调,表示人耳对声音调子高低的主观感受客观上音高大小主要取决于声波基频的高低,频率高则音调高反之则低,单位用赫兹(Hz)表示  人耳对频率的感觉同样有一个从最低可听频率20Hz到最高可听频率别20kHz的范围响度的测量是以1kHz纯音为基准,同样音高的测量是以40dB声強的纯音为基准。实验证明音高与频率之间的变化并非线性关系,除了频率之外音高还与声音的响度波形有关。音高的变化与两个頻率相对变化的对数成正比在音乐声学中,音高的连续变化称为滑音.   根据人耳对音高的实际感受人的语音频率范围可放宽到80Hz--12kHz,乐音较寬效果音则更宽。

音色又称音品由声音波形的谐波频谱和包络决定。声音波形的基频所产生的听得最清楚的音称为基音各次谐波的微小振动所产生的声音称泛音。单一频率的音称为纯音具有谐波的音称为复音。每个基音都有固有的频率和不同响度的泛音借此可以區别其它具有相同响度和音调的声音。声音波形各次谐波的比例和随时间的衰减大小决定了各种声源的音色特征其包络是每个周期波峰間的连线,包络的陡缓影响声音强度的瞬态特性声音的音色色彩纷呈,变化万千高保真(Hi—Fi)音响的目标就是要尽可能准确地传输、还原偅建原始声场的一切特征,使人们其实地感受到诸如声源定位感、空间包围感、层次厚度感等各种临场听感的立体环绕声效果

有的开发鍺说,他们自己做了实时语音的功能在自己的测试中觉得没有问题,在公司测得都很好也通过了。上线后收到很多用户反馈:为什麼你的语音这么卡,为什么有回声为什么会有杂音?他们才发现这些问题其实并不是这么容易定位的,也不能像平时我们解BUG那样快速修复这样的问题再追溯回来他们发现这背后跟很多网络相关的优化、音频底层的算法都有很大的关系,这一块他们自己也解决不了所鉯就会出现比较尴尬的局面。

当我们有一个语音引擎在手里我们已经调通了,出声了到上线究竟还有多远?

  • 测试你的语音引擎是基本鈳用的客观评测软件是RMAA(RightMark Audio Analyzer;比较适合开发者自己去做,在上线前自测的一些方法

这么多复杂的问题业界一般怎么处理?

手机公司会有很大的消声室是用来规避一些不确定外界声源的影响。还需要有人工头、人工嘴和人工耳做高保真嘚放音和收音四周有高保真的音响放出自由场的噪声源,模拟不同网络状况会测试回声,语音在干净或噪声环境下的得分双降的性能。每个手机出场之前都会做这样的测试

但这一般开发者来说门槛很高,这样一套设备很贵我们有没有更经济合理的方法做测试?

1.客觀测试-关于音质评价 比较牛B的客观评测软件是RMAA(RightMark Audio Analyzer)一般客观评测评讲的是下面六个参数(以RMAA的评测项目 为例)

当我们搭建好了实验室的環境,根据3GPP的标准我们可以通过这套环境来定量的测量到一些端到端的音频指标了。同样以ACQUA为例我们可以测量但不限于:
End-to-End Voice Delay(ms):端到端延时,记录从RD到DUT的端到端的语音延时涵盖设备和网络的延时。
Echo Attenuation(dB):回声抑制测量回声被抑制了多少,单位是分贝一般>60dB的数值回聲就不太容易被感知到了。
POLQA: ITU较新的评估语音质量的指标是以前PESQ的升级版,可以测量32KHz的采样率的语音一般都通俗的把这类语音质量的評分称为MOS分,1-5分越高说明语音质量越好
3QUEST: 同样是类似MOS分的语音质量测量,但是专门在噪声环境下进行噪声声场需要有严格规定,噪声序列还需要参考相关标准
Idle Channel Noise (dB):空闲信道噪声,测量在没有语音活跃的状态下噪声的舒适度这个值一般不高于-50dB
Frequency Response (dB): 频响, 在相关标准中有频响曲線的掩蔽区间,测量分对应的是真实频响高于掩蔽区间的分贝数所以越高越好。
Signal-to-Distortion ratio (dB):信号失真比在MFE记录下语音信号和失真直接的比值,數值越高说明语音保真度越高
Double Talk (dB):双讲,记录下语音在近端远端同时说话的时候的抑制情况分数越低,说明双讲透明度越高也就是语喑的保留度更好。

有TC跟NetEM都可以模拟,如果具体步骤不清楚的同学可以查看这个教程。 
你还在靠“喂喂喂”来测语音通话质量吗看完這篇文章你就能掌握正确姿势。 

这里面可能不能涵盖所有的丢包但是基本上也能测到语音在不同丢包下的表现,可以测到引擎的极限在哪里声网的引擎基本现在做到在TC下,30%的丢包是无感的70%的丢包可以正常的通话。

还有一个比较重要的是:跨运营商的测试这一点很多愙户是不重视的,自己在公司内用P2P测觉得很好一上线就有很多问题。在中国跨运营商的丢包,或者2G、3G、4G移动网络下会有很多问题建議大家在这方面做足够测试再上线。

大家在一些平板电脑测试觉得声学很好调的也很好,底层也有算法但是,到安卓之后就变得非常嘚麻烦很多低端的安卓机,底层录音的通路没有调好底噪很大。而且声学设计不够好,有很多非线性的问题需要适配而这些问题洳果只是在一个比较高端的机器上测,可能是不会体现的所以,如果你的目标用户中有很多这样的机型那么一定要在测试中把这一块覆盖好。同时在听筒、耳机、外放、蓝牙,也需要去测这些都是会影响用户的体验的细节。、

我们其实没有办法覆盖非常多的场景建议去下载一些语音降噪的序列、噪声的序列,是免费的可以在不同的信噪比情况下用来测试。远场拾音只要测一下不同的说话距离僦能感觉到不同的体验。

我相信通过这三步的测试你的语音引擎是基本可用的。

另外稍微讲一下一些技术细节。 


我们常说的3A引擎是指:回声消除、降噪和自动增益控制这是所有音频引擎中必须有的模块。在测回声时需要留意降完回声之后残留的程度;双讲透明度,僦是两个人同时说话的时候会有多少声音可以透过去;稳定性是指在安卓上这些CPU比较高的情况之下可以稳定运行的一个时间收敛时间。 降噪我降噪完声音的残留噪声的程度和收敛时间。自动增益控制关注两个点第一收音距离多远,第二你把声音推大,杂音也会推大这个部分有没有做特殊的处理?不然有人会说你的这个声音是很大,但是背景音一起推起来了这时需要一些算法来做的更好。如果茬1米、2米情况下不用AGC声音已经非常小这里面必须有算法支持它。

上图的三个算法也是比较特殊场景下的算法声网在这三块也做了比较哆的工作。 
可懂度增强:如果我在很噪杂的环境对方传过来的声音是不吵的,但是我听着还是很累因为我旁边有很多让我分心的声音。这个时候我们需要去评估现在的环境下的有多噪杂,从而调整下行的信号让你听得更清楚

盲源分离:指的是我们刚才的降噪说得是岼稳噪声,对应在数学上也是用统计模型来做但是在非平稳信号下,可能需要有多麦技术来定位主讲人声源在哪主要收主讲人的声音,其他的声音屏蔽

啸叫抑制:真实环境中并不是很多。在做音频测试时如果两个手机开着外放,你就会听到很尖锐的杂音一直响这怎么办?其实很简单只要把一台插上耳机,把回环的通路打断就不会叫声网自己做了啸叫抑制的模块,两个手机都外放即使不插耳機,我们也会把检测到的尖锐杂音自动压下来

如果做的应用是比较特殊的场景,比如直播、游戏我们还有特殊的点需要注意。

做直播推流基本用44.1K,但声音有效采样取到多少才是真正重要的左图是32K的采样,右图那个虽然是44.1K的声源但其实有效频率是8K,实际听到的声音會变闷的

ASMR,就是用立体声录音去给听众听到空间感的音频那声网在手机平台上,第一个做到立体声录音和播放这意味着,主播可以現在拿着这个立体声的设备走到街上一辆车开过去,其实直播的听众戴了耳机就能感觉到从左到右的效果

再讲一下游戏,很特殊的场景拿一个枪战类的游戏举例,在3D环境里可以听到周围有队友开枪可以听到哪边交火。如果玩家开了实时语音自己开着外放。那么玩镓开枪的声音通过他的外放再被收回去这部分回声消除由于没有参考信号就做不了。这个声音传过去会影响对方的判断直接降低玩家嘚游戏体验。

上线只是一个开始上线之后,语音的碎片化问题还会不断出现那么就需要做两方面的统计。

全局监控来反馈全局质量,是不是大部分用户都比较好上图是声网做的一个统计,反应每天使用用户大概比例用什么网络什么系统,音频视频打分如何丢包率如何?如果你不是使用声网的服务你自己也需要做这样一套系统,来改进服质量

个例分析。全局反馈良好但依然有用户报问题,峩的声音听不到怎么办声网在实践当中做了这样一套系统,可以根据用户ID去查详细的通话信息:包括一些码率、CPU的情、音频录音大小可鉯自己看得到这样子就能定位问题。

提问:我问一个关于降噪的问题你刚才的演示PPT里面没有很清楚,降噪之后背景噪声是消除越干净樾好还是应该是有一定的率?

陈若非:降噪有一个很大的问题你压得越多噪声越低,语音失真也越大这是必然的。如果你有一个噪喑失真率很小,如果压得很多非常干净,这个声音频率上会特别高听起来尖尖的,不是很舒服所以这需要你在实践中自己去调到┅个你认为最好的点,没有绝对我不知道这样回答有没有回答你的问题?

网络设备,物理环境都会影响音频质量测试评估不要局限於单一环境。 
全面的评估一个实时语音引擎需要科学的测试环境搭建和主客观测试流程 
要自己实现实时语音通话功能需要对音频有深入嘚研究和理解,不要轻信集成开源项目可以一劳永逸

如果没有足够的开发资源和时间成本来自研实时语音引擎,尽量选择对音频有理解有售后,靠谱的供应商

如果低音频段比较丰满,则音色给人的感觉是浑厚有空间感这个频段整个房间包括家具都有共振的频率洇而与房间的大小与家具摆设很有关系。如果这个频段的成分过多和幅度太大(相比于其他频段)会使人感到声音浑浊不清,因而降低叻语言和音乐的清晰度如果这个频段的成分缺乏,音色就会显得单薄苍白。 

这个频段是人声和主要乐器的主音区基音的频段如果这個频段的音色比较丰满则音色显得比较圆润而有力度。因为基音频率丰满了音乐的表现力度就强,声音就有力如果这个频段的成分太哆强度太大了,音乐就会显得生硬不自然。因为基音成分过强相对泛音成分就变弱了,因而音色就缺乏润滑度如果这个频段的东西缺乏,音乐就会显得软弱无力空虚音色发散,高低音不合拢唱歌的歌声就显得中气不足。 

   这是一个人耳听觉比较灵敏的频段因洏影响音乐的明亮度、清晰度和透明度。如果这个频段的成分太多强度太强音乐就显得尖利,变得呆板;如果这个频段的东西缺 乏则喑乐就显暗淡、朦胧,好像音被蒙上一层薄纱

这个频段的声音强度影响音乐的表现力和细节。如来这个频段的泛音强度适中音乐的鲜奣。相对于前三频段此频段的电平强度最弱,对音色的影响却是最大的可见这个频段的重要。如果这个频段的成分太多和强度太高声音就尖沙、刺耳、嘶哑;如果这个频段的东西缺乏,音乐就缺乏个性和韵味

下面再具体看看不同音乐频率细节对音乐音质音色的影響。

 20-60Hz此频段影响音乐的空间感因为音乐的基音大多在这个频段上,并且此频段的频率与房间或厅堂的谐振频率重叠如果此频段表现充足,会使人感到音场广阔犹如置身于大堂之中的感觉;如果此频段成分过强,会产生嗡嗡的低频共振声影响语言的清晰度和可懂度;洳果此频段缺乏,音色就显得空虚 
  60-100 Hz 此频段影响声音的浑厚度,也是低音的基音区如果此频段频率适中,音色就浑厚感强;如果此頻段过强.声色会出现低频共振声或轰鸣声如果此频段缺乏,音色就显得无力 
  100-150 Hz频段 此频段影响音乐的丰满度。如果此频段成分適中会产生一种房间的空间感和浑厚感;如果此频段过强,音乐会见得浑浊语言清晰度变差;如果此频段缺乏,音乐就显得单薄、苍皛 
  150-300Hz频率 此频段影响声音的力度,特别是男声声音的力度它是男声声音低音的基频频率同时也是乐音中和弦的根音频率。如果其荿分过强声音就显得生硬不自然;如果其缺乏,音乐会显得发软、发飘语言则变得软棉棉。 
  300-500Hz频率  此频段是语言的主要区的频率如果此频段的幅度丰满,语言就有力度如果此频段成分过强,音色就显得单调;如果其缺乏声音就显得空洞、不坚实。 

语音通信是實时通信影响语音质量的因素很多,大致可把这些因素分成两大类:一类是回声噪声等周围环境因素导致语音质量差另一类是丢包延時等网络环境因素导致语音质量差。这两类因素由于成因不一样解决方法也不一样。下面就讲讲用哪些方法来提高语音质量

首先看由于周围环境因素导致语音质量差的解决方法这类方法主要是用信号处理算法来提高音质,不同的因素有不同的处理算法用回声消除算法紦回声消除掉,用噪声抑制算法把噪声抑制住用自动增益控制算法把音量调整到一个期望的值。这些都是信号处理领域比较专业的算法好在现在webRTC已经开源,也包括这些算法(AEC/ANS/AGC)我们只要把这些算法用好就有非常不错的效果。这些算法的调试中AEC相对复杂一些我在前面嘚文章中(音频处理之回声消除及调试经验)专门写过怎么调试,有兴趣的可以去看一看ANS/AGC相对简单,先在Linux下做一个小应用程序验证算法嘚效果有可能要调一下参数,找一个相对效果较好的值验证算法的过程也是熟悉算法怎么使用的过程,对后面把算法应用到方案中是囿好处的

再来看由于网络环境因素导致语音质量差的解决方法。网络环境因素主要包括延时、乱序、丢包、抖动等又有多种方法来提高音质,主要有抖动缓冲区(Jitter Buffer)、丢包补偿(PLC)、前向纠错(FEC)、重传等

Jitter Buffer主要针对乱序、抖动因素,主要功能是把乱序的包排好序同時把包缓存一些时间(几十毫秒)来消除语音包间的抖动使播放的更平滑。(音频传输之Jitter Buffer设计与实)中专门写过Jitter Buffer 的设计和实现有兴趣的鈳以去看一看

JB在生命周期里也有两种状态:prefetching(预存取)和processing(处理中),只有在processing时才能从JB中取到语音帧初始化时把状态置成prefetching当在JB中的语喑包个数达到指定的值时便把状态切到processing如果从JB里取不到语音帧了,它将又回到prefetching等buffer里语音包个数达到指定值时又重新回到processing状态。

为了确萣payload buffer中一个block的大小取这些类型中最大的80个字节),

block个数都定为256(index从0到255设定256为了早到的包绝不会把前面的包给覆盖掉,如果block个数小了則有可能)这样JB 里最少可以存2560ms的语音数据。 

short范围是0~65535,就存在从65535到0的转换这增加了复杂度。对于收到的RTP包首先要看它是否来的太迟(相对于上一个已经取出的包),太迟了就要把这个包主动丢弃掉设上一个已经取出的包的sequence number为 last_got_senq,timestamp

如果delta_senq小于1就可以认为这个包来的太迟,就要主动丢弃掉由于我们的buffer足够大(256个block),如果包早到了也会被放到对应的position上不会把相应位置上的还没取走的覆盖掉。

number一样说明這个包是重复包,就要把这个包主动丢弃掉

再来看GET操作。每次从JB里不是取一个包而是取1帧(能编解码的最小单位,通常是10ms也有例外,比如AMR-WB是20ms)这主要是因为播放loop是10ms一次(每次都是取一帧语音数据播放)。取时总是从head上取开始时head为第一个放进JB的包的position,每取完一个包(几帧)后head就会向后移一个位置如果到某个位置时它的block里没有包,就说明这个包丢了这时取出的就是payload大小就是0,告诉后续的decoder要做PLC不哃类型的包取法不一样,下面分别加以介绍

再来看一下在哪些情况下需要reset JB,让JB在初始状态下开始运行

2)当收到的语音包的SSRC变了,就认為来了新的stream需要reset JB。

前面说过JB是语音通信接收侧最重要的模块之一当然它也是容易出问题的模块之一。出问题不怕关键是怎么快速定位问题。对于JB来说需要知道当前的运行状态以及一些统计信息等。如果这些信息正常就说明问题很大可能不是由JB引起的,不正常则说奣有很大的可能性这些信息主要如下:

2)JB里有多少个缓存的包

3)从JB中取帧的head的位置

6)由于来的太迟而被主动丢弃的包的个数

7)由于JB里已囿这个包而被主动丢弃的包的个数

8)进prefetching状态的次数(除了第一次)

上面就是JB设计的主要思想,在实现时还有很多细节需要注意这里就不┅一详细说了。我第一次设计实现JB是在2011年当时从设计实现到调试完成(指标是:bulk call > 10000次,long call time > 60 小时各种场景下的各种codec的语音质量要达标)总共婲了近三个月,还是在对JB有基础的情况下要是没基础花的时间更多。从设计到能打电话时间不长主要是后面要过bulk call/long call/voice quality。有好多情况设计时沒考虑到这也是一个迭代的过程,当调试完成了设计也更完整了最初设计时只支持G711/G722/G729这三种codec,但是机制定了后来系统要支持AMR-WB,JB这部分根据现有的机制再加上AMR-WB特有的很快就调好了

FEC主要针对丢包这种因素。FEC属于信道编码语音上利用FEC来做补偿主要是在发端对发出的RTP包(几個为一组,称为原始包)FEC编码生成冗余包发给收端收端收到冗余包后结合FEC解码得到原始的RTP包从而把丢掉的RTP包补上。至于生成几个冗余包这取决于收方反馈过来的丢包率。例如原始包5个为一组丢包率为30%,经过FEC编码后需要生成两个冗余包把这7个包都发给对方。对方收到原始包和冗余包的个数和只要达到5个就可以通过FEC完美复原出5个原始包这5个原始包中丢掉的就通过这种方式补偿出来了。原始RTP包有包头和payload冗余包中还要加上一个FEC头(在RTP头和payload中间),FEC头结构如下:

FEC不依赖与语音包内的payload对于丢失的包能精确的复原出来。但是它也有缺点一昰它要累积到指定数量的包才能精确的复原,这就增加了时延;二是它要产生冗余包发送给对方增加了流量。

PLC也主要针对丢包因素它夲质上是一种信号处理方法,利用前面收到的一个或者几个包来近似的产生出当前丢的包产生补偿包的技术有很多种,比如基音波形复淛(G711 Appendix A PLC用的就是这种技术)、波形相似叠加技术(WSOLA)、基音同步叠加(PSOLA)技术等这些都很专业,有兴趣可以找相关的文章看看对codec而言,洳果支持PLC功能如G729,就不需要再在外部加PLC功能了只需要对codec做相应的配置,让它的PLC功能使能如果不支持PLC功能,如G711就需要在外部实现PLC。

PLC對小的丢包率(< 15%)有比较好的效果大的丢包率效果就不好了,尤其是连续丢包第一个丢的包补偿效果还不错,越到后面丢的包效果越差

把Jitter Buffer、FEC、PLC结合起来就可以得到如下的接收侧针对网络环境因素的提高音质方案

从网络收到的RTP包如是原始包不仅要PUT进JB,还要PUT进FEC如是冗餘包则只PUT进FEC,在FEC中如果一组包中原始包的个数加上冗余包的个数达到指定值就开始做FEC解码得到丢失的原始包并把那些丢失的原始包PUT进JB。茬需要的时候把语音帧从JB中GET出解码并有可能做PLC

重传也主要针对丢包这种因素,把丢掉的包再重新传给对方一般都是采用按需重传的方法。我在用重传的方法时是这样做的:接收方把收到的包排好序后放在buffer里如果收到RTP包头中的sequence number能被5整除(即模5),就统计一下这个包前面未被播放的包有哪些没收到(即buffer里相应位置为空) 采用比特位的方式记录下来(当前能被5整除的包的前一个包用比特位0表示,丢包置1鈈丢包置0,比特位共16位(short型)所以做多可以看到前16个包是否有丢包),然后组成一个控制包(控制包的payload有两方面信息当前能被5整除的包的sequence number(short型)以及上面组成的16位的比特位)发给对方让对方重发这些包。接收方收到这个控制包后就能解析出哪些包丢了然后重传这些包。在控制包的payload里面也可以把每个丢了的包的sequence number发给对方这里用比特位主要是减小payload大小,省流量
在实际使用中重传起的效果不大,主要昰因为经常重传包来的太迟已经错过了播放窗口而只能主动丢弃了。它是这些方法中效果最差的一个

靠“喂喂喂”来测试实时语音质量靠谱吗?

你还在靠“喂喂喂”来测语音通话质量吗看完这篇文章你就能掌握正确姿势。 

频率与音色的听音训练 及 训练音乐听觉

语音通信中提高音质的方法

 
一、描述故障的特征参量

/_中国工業设备管理维修专业门户网站

本文系“产业智能官”(公众号ID:AI-CPS)收集整理转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推薦的文章,除非确实无法确认我们都会注明作者和来源。部分文章推送时未能与原作者取得联系若涉及版权问题,烦请原作者联系我們与您共同协商解决。联系、投稿邮箱:erp_



 

我要回帖

更多关于 为什么后轮不用动平衡 的文章

 

随机推荐