0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

語(yǔ)音通信用哪些方法來(lái)提高語(yǔ)音質(zhì)量

Dbwd_Imgtec ? 來(lái)源:未知 ? 作者:李倩 ? 2018-03-21 11:41 ? 次閱讀

語(yǔ)音通信是實(shí)時(shí)通信,影響語(yǔ)音質(zhì)量的因素很多,大致可把這些因素分成兩大類(lèi):一類(lèi)是回聲噪聲等周?chē)h(huán)境因素導(dǎo)致語(yǔ)音質(zhì)量差;另一類(lèi)是丟包延時(shí)等網(wǎng)絡(luò)環(huán)境因素導(dǎo)致語(yǔ)音質(zhì)量差。這兩類(lèi)因素由于成因不一樣,解決方法也不一樣。下面就講講用哪些方法來(lái)提高語(yǔ)音質(zhì)量。

首先看由于周?chē)h(huán)境因素導(dǎo)致語(yǔ)音質(zhì)量差的解決方法。這類(lèi)方法主要是用信號(hào)處理算法來(lái)提高音質(zhì),不同的因素有不同的處理算法,用回聲消除算法把回聲消除掉,用噪聲抑制算法把噪聲抑制住,用自動(dòng)增益控制算法把音量調(diào)整到一個(gè)期望的值。這些都是信號(hào)處理領(lǐng)域比較專(zhuān)業(yè)的算法,好在現(xiàn)在webRTC已經(jīng)開(kāi)源,也包括這些算法(AEC/ANS/AGC)。我們只要把這些算法用好就有非常不錯(cuò)的效果。這些算法的調(diào)試中AEC相對(duì)復(fù)雜一些,我在前面的文章中(音頻處理之回聲消除及調(diào)試經(jīng)驗(yàn))專(zhuān)門(mén)寫(xiě)過(guò)怎么調(diào)試,有興趣的可以去看一看。ANS/AGC相對(duì)簡(jiǎn)單,先在Linux下做一個(gè)小應(yīng)用程序驗(yàn)證算法的效果,有可能要調(diào)一下參數(shù),找一個(gè)相對(duì)效果較好的值。驗(yàn)證算法的過(guò)程也是熟悉算法怎么使用的過(guò)程,對(duì)后面把算法應(yīng)用到方案中是有好處的。

再來(lái)看由于網(wǎng)絡(luò)環(huán)境因素導(dǎo)致語(yǔ)音質(zhì)量差的解決方法。網(wǎng)絡(luò)環(huán)境因素主要包括延時(shí)、亂序、丟包、抖動(dòng)等,又有多種方法來(lái)提高音質(zhì),主要有抖動(dòng)緩沖區(qū)(Jitter Buffer)、丟包補(bǔ)償(PLC)、前向糾錯(cuò)(FEC)、重傳等,下面分別一一介紹。

1、Jitter Buffer

Jitter Buffer主要針對(duì)亂序、抖動(dòng)因素,主要功能是把亂序的包排好序,同時(shí)把包緩存一些時(shí)間(幾十毫秒)來(lái)消除語(yǔ)音包間的抖動(dòng)使播放的更平滑。我在前面的文章(音頻傳輸之Jitter Buffer設(shè)計(jì)與實(shí)現(xiàn))中專(zhuān)門(mén)寫(xiě)過(guò)Jitter Buffer 的設(shè)計(jì)和實(shí)現(xiàn),有興趣的可以去看一看。

2、FEC

FEC主要針對(duì)丟包這種因素。FEC屬于信道編碼,想了解原理的朋友可以找相關(guān)文章看,這里就不講了。再說(shuō)我講也講不好,我掌握信源編碼(語(yǔ)音編碼就是信源編碼的一種),對(duì)信道編碼只是了解。語(yǔ)音上利用FEC來(lái)做補(bǔ)償主要是在發(fā)端對(duì)發(fā)出的RTP包(幾個(gè)為一組,稱(chēng)為原始包)FEC編碼生成冗余包發(fā)給收端,收端收到冗余包后結(jié)合FEC解碼得到原始的RTP包從而把丟掉的RTP包補(bǔ)上。至于生成幾個(gè)冗余包,這取決于收方反饋過(guò)來(lái)的丟包率。例如原始包5個(gè)為一組,丟包率為30%,經(jīng)過(guò)FEC編碼后需要生成兩個(gè)冗余包,把這7個(gè)包都發(fā)給對(duì)方。對(duì)方收到原始包和冗余包的個(gè)數(shù)和只要達(dá)到5個(gè)就可以通過(guò)FEC完美復(fù)原出5個(gè)原始包,這5個(gè)原始包中丟掉的就通過(guò)這種方式補(bǔ)償出來(lái)了。原始RTP包有包頭和payload,冗余包中還要加上一個(gè)FEC頭(在RTP頭和payload中間),F(xiàn)EC頭結(jié)構(gòu)如下:

其中Group first Sequence number是指這一組原始包中第一個(gè)的sequence number,original count是指一組原始包的個(gè)數(shù),redundant count是指生成的冗余包的個(gè)數(shù),Redundant index是指第幾個(gè)冗余包。冗余包有自己的payload type 和sequence number,要在SIP的SDP中告訴對(duì)方冗余包的payload type是多少,對(duì)方收到這個(gè)payload type的包后就做冗余包處理。

FEC不依賴(lài)與語(yǔ)音包內(nèi)的payload,對(duì)于丟失的包能精確的復(fù)原出來(lái)。但是它也有缺點(diǎn),一是它要累積到指定數(shù)量的包才能精確的復(fù)原,這就增加了時(shí)延;二是它要產(chǎn)生冗余包發(fā)送給對(duì)方,增加了流量。

3、PLC

PLC也主要針對(duì)丟包因素。它本質(zhì)上是一種信號(hào)處理方法,利用前面收到的一個(gè)或者幾個(gè)包來(lái)近似的產(chǎn)生出當(dāng)前丟的包。產(chǎn)生補(bǔ)償包的技術(shù)有很多種,比如基音波形復(fù)制(G711 Appendix A PLC用的就是這種技術(shù))、波形相似疊加技術(shù)(WSOLA)、基音同步疊加(PSOLA)技術(shù)等,這些都很專(zhuān)業(yè),有興趣可以找相關(guān)的文章看看。對(duì)codec而言,如果支持PLC功能,如G729,就不需要再在外部加PLC功能了,只需要對(duì)codec做相應(yīng)的配置,讓它的PLC功能使能。如果不支持PLC功能,如G711,就需要在外部實(shí)現(xiàn)PLC。

PLC對(duì)小的丟包率(< 15%)有比較好的效果,大的丟包率效果就不好了,尤其是連續(xù)丟包,第一個(gè)丟的包補(bǔ)償效果還不錯(cuò),越到后面丟的包效果越差。

把Jitter Buffer、FEC、PLC結(jié)合起來(lái)就可以得到如下的接收側(cè)針對(duì)網(wǎng)絡(luò)環(huán)境因素的提高音質(zhì)方案:

從網(wǎng)絡(luò)收到的RTP包如是原始包不僅要PUT進(jìn)JB,還要PUT進(jìn)FEC。如是冗余包則只PUT進(jìn)FEC,在FEC中如果一組包中原始包的個(gè)數(shù)加上冗余包的個(gè)數(shù)達(dá)到指定值就開(kāi)始做FEC解碼得到丟失的原始包,并把那些丟失的原始包PUT進(jìn)JB。在需要的時(shí)候把語(yǔ)音幀從JB中GET出解碼并有可能做PLC。

4、重傳

重傳也主要針對(duì)丟包這種因素,把丟掉的包再重新傳給對(duì)方,一般都是采用按需重傳的方法。我在用重傳的方法時(shí)是這樣做的:接收方把收到的包排好序后放在buffer里,如果收到RTP包頭中的sequence number能被5整除(即模5),就統(tǒng)計(jì)一下這個(gè)包前面未被播放的包有哪些沒(méi)收到(即buffer里相應(yīng)位置為空), 采用比特位的方式記錄下來(lái)(當(dāng)前能被5整除的包的前一個(gè)包用比特位0表示,丟包置1,不丟包置0,比特位共16位(short型),所以做多可以看到前16個(gè)包是否有丟包),然后組成一個(gè)控制包(控制包的payload有兩方面信息:當(dāng)前能被5整除的包的sequence number(short型)以及上面組成的16位的比特位)發(fā)給對(duì)方,讓對(duì)方重發(fā)這些包。接收方收到這個(gè)控制包后就能解析出哪些包丟了,然后重傳這些包。在控制包的payload里面也可以把每個(gè)丟了的包的sequence number發(fā)給對(duì)方,這里用比特位主要是減小payload大小,省流量。

在實(shí)際使用中重傳起的效果不大,主要是因?yàn)榻?jīng)常重傳包來(lái)的太遲,已經(jīng)錯(cuò)過(guò)了播放窗口而只能主動(dòng)丟棄了。它是這些方法中效果最差的一個(gè)。

5、RFC2198

RFC2198是RTP Payload for Redundant Audio Data(用于冗余音頻數(shù)據(jù)的RTP負(fù)載格式),用了它后在當(dāng)前RTP包中不僅可以承載當(dāng)前語(yǔ)音的payload,還可以承載前幾個(gè)包的payload,承載以前包的個(gè)數(shù)越多,在高丟包率的情況下效果越好,但是延時(shí)也就越大,同時(shí)消耗的流量也就越多。相比于FEC,它消耗的流量更多,因?yàn)镕EC用一組RTP包編碼生一個(gè)或多個(gè)成冗余包,而它一個(gè)RTP包就帶一個(gè)或多個(gè)以前包的payload。在有線(xiàn)網(wǎng)絡(luò)或者WIFI下可以用,在蜂窩網(wǎng)絡(luò)下建議慎用。

以上就是我用過(guò)的提高音質(zhì)的方法。還有其他方法,我沒(méi)實(shí)踐過(guò),就不寫(xiě)了,寫(xiě)出來(lái)也是紙上談兵。歡迎大家補(bǔ)充其他的方法。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 語(yǔ)音通信
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    18714
  • FEC
    FEC
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    13670

原文標(biāo)題:語(yǔ)音通信中提高音質(zhì)的幾個(gè)方法

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PCM1681-Q1語(yǔ)音質(zhì)量很差是什么原因?qū)е碌模?/a>

    我用1681播放語(yǔ)音語(yǔ)音質(zhì)量很差,音源沒(méi)有問(wèn)題。我BCLK,SCLK都給的4.092MFCLK給的16K. 采用TDM格式8SLOT。寄存器我就配置了 09配置為07 就是TDM格式。你們能告訴我 音質(zhì)不好的原因嗎? 另外
    發(fā)表于 10-10 08:17

    基于網(wǎng)絡(luò)性能的VoIP語(yǔ)音質(zhì)量評(píng)價(jià)模型

    :由于路徑延遲,抖動(dòng),丟包率的動(dòng)態(tài)變化)會(huì)使VoIP應(yīng)用的語(yǔ)音質(zhì)量無(wú)法得到保證.為了提高傳輸質(zhì)量和可靠性,有人提出基于路徑多樣性[1]的全文下載
    發(fā)表于 04-24 09:26

    可否使用labview和聲卡的結(jié)合來(lái)測(cè)試電話(huà)機(jī)的語(yǔ)音質(zhì)量

    可否使用labview和聲卡的結(jié)合來(lái)測(cè)試電話(huà)機(jī)的語(yǔ)音質(zhì)量。固定的發(fā)幾個(gè)頻率上的一段波形,然后用聲卡接收波形,計(jì)算信噪比!不知道這樣是否可行?求解!有用做過(guò)音頻信號(hào)分析的大哥能不能講一下你的測(cè)試方案是什么樣的。
    發(fā)表于 02-23 16:02

    音質(zhì)標(biāo)準(zhǔn)和評(píng)價(jià)方法

    除了頻率范圍外,人們往往還用其它方法和指標(biāo)來(lái)進(jìn)一步描述不同用途的音質(zhì)標(biāo)準(zhǔn)。 ●音質(zhì)標(biāo)準(zhǔn)所謂聲音的質(zhì)量,是指經(jīng)傳輸、處理后音頻信號(hào)的保真度。目
    發(fā)表于 06-25 07:28

    安捷倫語(yǔ)音質(zhì)量測(cè)量?jī)x

    是德語(yǔ)音質(zhì)量測(cè)試儀(VQT)技術(shù)概述
    發(fā)表于 07-03 10:07

    如何實(shí)現(xiàn)低碼率語(yǔ)音編碼MELP聲碼器?

    語(yǔ)音編碼技術(shù)在當(dāng)今數(shù)字通信尤其在無(wú)線(xiàn)系統(tǒng)中發(fā)揮著越來(lái)越重要的作用。利用語(yǔ)音編碼技術(shù)可有效降低信息存儲(chǔ)量、提高信道利用率?;旌霞?lì)線(xiàn)性預(yù)測(cè)(MELP)
    發(fā)表于 08-19 07:34

    怎么實(shí)現(xiàn)基于無(wú)線(xiàn)傳感器網(wǎng)絡(luò)/ZigBee協(xié)議多跳語(yǔ)音通信結(jié)點(diǎn)的設(shè)計(jì)?

    為了適應(yīng)ZigBee協(xié)議在無(wú)線(xiàn)傳感器網(wǎng)絡(luò)中語(yǔ)音通信的需求,在短距離上實(shí)現(xiàn)低成本、低功耗的無(wú)線(xiàn)語(yǔ)音通訊,設(shè)計(jì)了一種基于無(wú)線(xiàn)射頻芯片的多媒體語(yǔ)音節(jié)點(diǎn)板的多跳
    發(fā)表于 05-25 06:03

    如何去提高語(yǔ)音引擎設(shè)計(jì)的質(zhì)量和性能?

    如何去提高語(yǔ)音引擎設(shè)計(jì)的質(zhì)量和性能?
    發(fā)表于 05-31 06:35

    資料下載:VoIP技術(shù)(4)--VoIP語(yǔ)音質(zhì)量保證

    VoIP語(yǔ)音質(zhì)量保證
    發(fā)表于 07-02 06:14

    基于E-Model的VoIP語(yǔ)音質(zhì)量研究

    針對(duì)目前網(wǎng)絡(luò)電話(huà)語(yǔ)音質(zhì)量難以準(zhǔn)確評(píng)價(jià)及預(yù)測(cè)的情況,基于E-Model 對(duì)VoIP 的語(yǔ)音質(zhì)量進(jìn)行預(yù)測(cè)。分析幾個(gè)主要影響因素,如延時(shí)、丟包等對(duì)話(huà)音質(zhì)量的影響,構(gòu)建VoIP 語(yǔ)音質(zhì)量預(yù)測(cè)
    發(fā)表于 03-23 08:48 ?17次下載

    Lumia手機(jī)間語(yǔ)音通話(huà)爆嚴(yán)重音質(zhì)問(wèn)題

    HD Voice, 中文也叫高清語(yǔ)音,是下一代電信語(yǔ)音質(zhì)量標(biāo)準(zhǔn),他代表著數(shù)字化更清晰的語(yǔ)音質(zhì)量。
    發(fā)表于 04-01 09:41 ?907次閱讀

    水聲語(yǔ)音通信體驗(yàn)質(zhì)量的實(shí)時(shí)測(cè)量方法

    水聲語(yǔ)音通信體驗(yàn)質(zhì)量的實(shí)時(shí)測(cè)量方法_袁飛
    發(fā)表于 01-07 16:24 ?1次下載

    客觀(guān)語(yǔ)音質(zhì)量評(píng)估算法

    算法是最有用和最便捷的方法。在這篇論文里,我們將要討論評(píng)估通信系統(tǒng)和網(wǎng)路中的語(yǔ)音質(zhì)量的最新的ITU標(biāo)準(zhǔn)PESQ(語(yǔ)音質(zhì)量的感知評(píng)估)和POLQA(感知客觀(guān)
    發(fā)表于 12-27 14:14 ?2次下載

    羅德與施瓦茨的ATC語(yǔ)音質(zhì)量保證系統(tǒng)增強(qiáng)安全性、可靠性和效率

      羅德與施瓦茨通過(guò)使用無(wú)線(xiàn)信號(hào)強(qiáng)度信息(RSSI)監(jiān)測(cè)工具增強(qiáng)ATC語(yǔ)音質(zhì)量保證系統(tǒng)(R&S AVQA),將ATC網(wǎng)絡(luò)中的語(yǔ)音質(zhì)量提高到一個(gè)新的水平。
    的頭像 發(fā)表于 09-22 17:12 ?1932次閱讀

    如何提升語(yǔ)音芯片的音質(zhì)

    前文我們說(shuō)過(guò)從硬性指標(biāo)上來(lái)講,采樣率的提升不失為提高語(yǔ)音芯片音質(zhì)的一個(gè)好辦法,也有童鞋提出可以用量化位數(shù)來(lái)提升語(yǔ)音芯片音質(zhì);那么,小編就和大
    的頭像 發(fā)表于 11-17 09:34 ?615次閱讀
    如何提升<b class='flag-5'>語(yǔ)音</b>芯片的<b class='flag-5'>音質(zhì)</b>?