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

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

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

基于數(shù)字信號(hào)處理算法和芯片的會(huì)議信號(hào)合成實(shí)現(xiàn)方案

電子設(shè)計(jì) ? 來源:電子技術(shù)應(yīng)用 ? 作者:李超 ? 2021-03-18 10:25 ? 次閱讀

隨著在數(shù)字信號(hào)處理(DSP算法芯片處理能力以及通信網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化等方面的不斷發(fā)展,現(xiàn)代化通信已經(jīng)迅速普及。音頻會(huì)議是眾多通信系統(tǒng)的必備功能。有多個(gè)用戶參與的音頻會(huì)議,最簡單的模式可以使用令牌控制下的互斥模式,使只有擁有發(fā)言權(quán)的那個(gè)與會(huì)者才可以講話。在這種模式下,每個(gè)與會(huì)者某一時(shí)刻只能聽到一路音頻信號(hào),這種“半雙工”模式對(duì)于音頻會(huì)議是不方便和不實(shí)際的。

真正的電話會(huì)議應(yīng)當(dāng)仿真多個(gè)與會(huì)者在一個(gè)會(huì)議室進(jìn)行對(duì)話的情形。但是由于與會(huì)終端在物理上并不在一起,而每個(gè)終端只有一套音頻輸出設(shè)備(功放+音箱),要同時(shí)傳送給每個(gè)終端的音頻流也只能使用一路信道。為使每個(gè)終端同時(shí)接收多個(gè)與會(huì)者的聲音,必須采取多路音頻合成方案。電話會(huì)議的特點(diǎn)是會(huì)場使用麥克風(fēng)和揚(yáng)聲器,這種方式很容易造成回波干擾和嘯叫。一般會(huì)議信號(hào)處理算法主要關(guān)注的也是這個(gè)方面,通常采用回波抵消的方法。但是這種方式對(duì)于會(huì)議信號(hào)的處理并不是最完善和有效的。經(jīng)過研究,采用有無聲檢測、歸一化定標(biāo)、自適應(yīng)回波抵消算法合成技術(shù)則能夠很真實(shí)地實(shí)現(xiàn)會(huì)議仿真效果。

1 會(huì)議信號(hào)合成實(shí)現(xiàn)方案

1.1 會(huì)議信號(hào)合成的合理性和必要性

音頻流不象典型的視頻流一樣在空間/時(shí)間域占有惟一的位置,在同一時(shí)間和位置的信號(hào)元素疊加是沒有任何意義的。但人耳可以感知在同一空間/時(shí)間播放多個(gè)音頻流。這就是會(huì)議信號(hào)合成的合理性和必要性。通過會(huì)議信號(hào)的合成,將多路音頻流的輸入經(jīng)過處理后,提供一個(gè)單輸出信道輸出合成音頻。

1.2 會(huì)議信號(hào)合成的關(guān)鍵因素

當(dāng)多個(gè)音頻源在一個(gè)空間播放時(shí),人耳聽到的聲波是各個(gè)聲源聲波的線性疊加,這正是模擬音頻信號(hào)合成的基礎(chǔ)。該事實(shí)表明數(shù)字化后的語音進(jìn)行合成也應(yīng)當(dāng)使用線性疊加的方式。假設(shè)有n路輸入音頻流進(jìn)行混音,Xi(t)是t時(shí)刻的第i路輸入語音的線性樣本,則t時(shí)刻的混音值為:

m(t)=ΣXi(t),i=0,1,…,n-1

語音信號(hào)是連續(xù)的、時(shí)間要求嚴(yán)格的一種流媒體信號(hào),它在時(shí)域上具有短時(shí)平穩(wěn)的特征。對(duì)語音信號(hào)進(jìn)行處理的一個(gè)基本概念就是對(duì)語音信號(hào)進(jìn)行采樣,得到的語音樣本以緩沖區(qū)為單位進(jìn)行處理,即對(duì)語音樣本分幀。語音處理的很多概念都是基于語音幀的,比如有聲/無聲、能量、自相關(guān)等。語音幀的長度一般采用10~20ms。 數(shù)字音頻的重要參數(shù)是采樣率,各路輸入音頻流合成的前提應(yīng)當(dāng)是使用相同的采樣率。

隨著需要合成的語音信道數(shù)量的增加,在不采取任何附加預(yù)防措施的情況下,一些并非會(huì)議有效信號(hào)(如聲反饋和噪音)就會(huì)累積起來導(dǎo)致質(zhì)量劣化,讓人無法接受。特別是由本地?cái)U(kuò)聲系統(tǒng)產(chǎn)生的電聲反饋引起的回音造成了再生混響,其結(jié)果嚴(yán)重地影響了語音的清晰度。更為致命的是當(dāng)聲反饋非常嚴(yán)重時(shí)會(huì)產(chǎn)生自激,使整個(gè)通信系統(tǒng)無法正常工作。所以必須對(duì)每個(gè)終端的輸入音頻進(jìn)行有無聲檢測和聲反饋抑制處理。

語音合成時(shí)應(yīng)注意求和樣本的動(dòng)態(tài)范圍,這引出了歸一化定標(biāo)問題。數(shù)字音頻波形理論定義,定標(biāo)就是檢查某個(gè)選定的幀,找到振幅峰值,并由此調(diào)整被選幀整體的音量,以便使允許的振幅值最大,且不會(huì)溢出。語音合成是對(duì)數(shù)字波形進(jìn)行的一種編輯,尤其需要解決歸一化定標(biāo)問題。

2 會(huì)議信號(hào)合成關(guān)鍵技術(shù)研究

2.1 自適應(yīng)回波抵消算法

數(shù)字回波抵消器的理論基礎(chǔ)是自適應(yīng)濾波器技術(shù)。隨著DSP的快速發(fā)展,數(shù)字回波抵消器已能很好地在DSP上加以應(yīng)用。在電話會(huì)議中產(chǎn)生回波的最主要原因是遠(yuǎn)端會(huì)議信號(hào)經(jīng)本地?fù)P聲系統(tǒng)在室內(nèi)產(chǎn)生的聲場回饋至傳聲器引起回音造成的再生混響。

回波抵消器必須精確地估計(jì)回波路徑特性并快速適應(yīng)其變化,根據(jù)電話會(huì)議的特點(diǎn),使用干涉抵消模型是最佳的方式。該模型是一個(gè)具有二個(gè)輸入端的自適應(yīng)濾波器,如圖1所示。它將本地的傳聲器輸出作為原始信號(hào),而將本地?fù)P聲器的輸入作為參考信號(hào)。經(jīng)過自適應(yīng)回波抵消處理后,能有效地抑制本地傳聲器的輸出經(jīng)室內(nèi)聲場饋至傳聲器的電聲反饋(回音),從而實(shí)現(xiàn)自適應(yīng)聲反饋(回音)的抵消。

基于數(shù)字信號(hào)處理算法和芯片的會(huì)議信號(hào)合成實(shí)現(xiàn)方案

回波抵消的核心就是自適應(yīng)濾波器算法。常見的算法包括SDA算法和LMS算法。由于SDA算法中梯度的計(jì)算涉及到矩陣,并不適合實(shí)際應(yīng)用。通過其派生的LMS算法簡單實(shí)用,計(jì)算效率高。TI公司的DSP芯片TMS320C54X有專門的LMS指令用于加速自適應(yīng)濾波算法。在實(shí)際應(yīng)用中,還可以在LMS算法的基礎(chǔ)上得到修改濾波器系數(shù)的算法:

詳細(xì)的自適應(yīng)回波抵消算法計(jì)算步驟如下:

(1) 采樣值;

(2) 根據(jù)前一次的計(jì)算值和濾波器系數(shù)修改算法,進(jìn)行系數(shù)調(diào)整;

(3) 計(jì)算遠(yuǎn)端估計(jì)能量;

δ2[k] = (1-α) δ2[k-1] +α X2[k]

(4) 進(jìn)行FIR濾波計(jì)算, 求得濾波器的輸出y(n)和誤差信號(hào)e(n);

(5) 數(shù)據(jù)輸出;

(6) 跳轉(zhuǎn)到第一步。

2.2 有無聲能量檢測

在ITU-T協(xié)議中有無聲檢測即語音激活檢測(Voice Activity Detection)。在多點(diǎn)音頻會(huì)議中,有無聲檢測使得在某一時(shí)段實(shí)際語音合成的終端數(shù)目大大少于與會(huì)者數(shù)目,降低了合成運(yùn)算量,減輕了處理芯片的負(fù)擔(dān)。同時(shí)也是麥克風(fēng)自適應(yīng)增益控制AGC的基礎(chǔ)。

在數(shù)字語音信號(hào)中,有無聲檢測是通過信號(hào)能量、過零率參數(shù)的組合,與預(yù)置的能量門限值進(jìn)行比較得出?;诙虝r(shí)平均能量的計(jì)算是利用一個(gè)固定寬度的滑動(dòng)窗口,每輸入一個(gè)最新樣本,計(jì)算該樣本之前的窗口覆蓋的所有樣本的能量平均值,將其與一個(gè)能量門限值比較來判斷該新樣本是靜音還是有聲。

如上所述,以幀為單位對(duì)數(shù)字語音進(jìn)行檢測,如果某一幀內(nèi)有任何一個(gè)樣本是有聲,則該幀就是有聲。將窗口以幀為單位滑動(dòng),而不是以樣本為單位,直接憑每幀的最后一個(gè)樣本是有無聲來確定該幀是有聲幀或無聲幀,這種簡化的判斷方式大大節(jié)省了運(yùn)算量。對(duì)判斷的結(jié)果而言并無影響。

使用自適應(yīng)變化的能量門限可以更加準(zhǔn)確地對(duì)有無聲加以判斷。可以通過樣本短時(shí)能量的一階線性低通濾波得到背景噪聲能量。而自適應(yīng)能量門限值則保持與短時(shí)背景噪聲能量一個(gè)靜音檢測的靈敏度常量比值So。長時(shí)間連續(xù)講話會(huì)升高背景噪聲的估計(jì)值,這就相應(yīng)地提高了靜音檢測能量門限,有可能造成緊接著發(fā)生的低幅值的講話當(dāng)作靜音而未被檢測到。所以當(dāng)檢測到話音時(shí)可以通過改變低通濾波器的截止頻率來重新估計(jì)噪聲能量。

在過濾靜音的同時(shí)應(yīng)當(dāng)注意如何保留短時(shí)能量相對(duì)較低的微弱音頻信號(hào),如摩擦音和輔音。這些微弱信號(hào)的存在保證了語音語義的完整性,所以在短時(shí)平均能量判斷之外還應(yīng)該結(jié)合過零率的判別保留這些微弱音頻信號(hào)。采用余音生成器的方式可以實(shí)現(xiàn)微弱音頻信號(hào)的保留,即余音生成器將緊跟在一個(gè)語音串后的頭幾幀。所謂無聲的幀仍然應(yīng)該被當(dāng)作是有聲,從而避免低電平語音被抑制掉。ITU-T G.723.1A對(duì)余音生成器算法作了較詳細(xì)的設(shè)計(jì),在此不做詳細(xì)描述。

2.3 歸一化定標(biāo)處理

多路語音信號(hào)合成時(shí)采用線性疊加,必須解決的問題是如何防止疊加產(chǎn)生溢出而導(dǎo)致失真。如果采樣樣本是16bit,而求和緩沖區(qū)也是16bit,那兩路音頻流就容易使求和區(qū)溢出。即使提供了高精度的求和緩沖區(qū),使得在求和過程中不會(huì)溢出,但是這不能保證求和結(jié)果的幅值適合輸出硬件器件的要求范圍(DA器件范圍通常是16bit)。

簡單的方法是對(duì)超出范圍的值箝位。更好的方法是對(duì)求和結(jié)果分幀進(jìn)行歸一化定標(biāo),具體就是:對(duì)某個(gè)求和語音幀中的所有樣本分析,若樣本S的值超過了器件所能表示的最大范圍,那么S之后的所有樣本均乘以一個(gè)衰減因子f。其中f是能夠使S滿足輸出器件范圍的最大值,顯然,f的絕對(duì)值小于1。這樣在箝位后的一段時(shí)間內(nèi),語音樣本之間的大小是相對(duì)不變的。

在實(shí)驗(yàn)中選用了通用的16bit定點(diǎn)DSP芯片TMS320C549進(jìn)行實(shí)時(shí)仿真來完成多路音頻流的合成。各路線性樣本相加過程中,求和的值是不會(huì)溢出的,因?yàn)闃颖臼?6bit,而累加器是32bit。但和值很容易超過輸出硬件設(shè)備允許的范圍(16bit)。

在歸一化定標(biāo)處理中,初始化時(shí)衰減因子f為1,每次開始處理一個(gè)新的樣本緩沖區(qū)時(shí),任何一個(gè)樣本S超過了范圍,將S箝位,并且求得S與允許范圍值的比值f,在時(shí)序上位于S之后的樣本都除以f。但是為了避免語音不必要的衰減,而箝位操作有讓f越來越小的趨勢,因此需要有讓f變大的地方,這發(fā)生在每個(gè)新樣本緩沖區(qū)開始處理的入口。新的緩沖區(qū)樣本仍然需要衰減的可能性很大,所以f不適合每次都從1開始,而是應(yīng)該在某種程度上繼承過去的值。即在每個(gè)新樣本緩沖區(qū)的入口處,只要f不等于1,就將其調(diào)整為比f稍大些的值,讓它成為新的衰減因子。若樣本的確不需要衰減,經(jīng)過若干幀后f會(huì)慢慢變回1。

定點(diǎn)DSP中不易使用除法,所以可以把所有f的值做成一張表,f的取值范圍定義為1/16、2/16,直到15/16,它的衰減精度為1/16。當(dāng)S發(fā)生箝位時(shí),用比較法或者查表法求出合適f (15個(gè)取值之一)。之所以考慮是1/16的步長,是因?yàn)樗呀?jīng)可以確保16個(gè)輸入流求和不會(huì)溢出,如果還需要更大的精度,可以取1/32(2的n次方由定點(diǎn)DSP實(shí)現(xiàn)起來較方便)。

歸納起來,歸一化定標(biāo)的核心思想是:f必須很快地變成合適的衰減因子,使得樣本不會(huì)溢出,然后f會(huì)慢慢地變回1。S發(fā)生箝位時(shí)f立刻被計(jì)算出,而在時(shí)間上每處理完一個(gè)求和幀后,就試圖把f向1靠近,f每次增加它與1的差值的1/16。即: f′= f+(1-f)/16。具體的定標(biāo)流程圖如圖2所示。

3 試驗(yàn)分析

同時(shí)輸入10路的音頻流到混音模塊,每路的采樣率都是16kHz,幀長選擇10ms,即160個(gè)樣本。

在對(duì)電干擾進(jìn)行抵消時(shí),對(duì)于帶寬為3kHz(300~3 300Hz)的寬帶隨機(jī)白噪聲,抵消程度優(yōu)于42dB。在室外,其混響時(shí)間較小,對(duì)寬帶噪聲的聲干擾的抵消程度優(yōu)于30dB。在混響較為嚴(yán)重的實(shí)驗(yàn)室中,聲干擾的抵消程度也可以優(yōu)于15dB。

經(jīng)過聽覺試驗(yàn)表明,經(jīng)過定標(biāo)和回波抑制的合成語音流輸出能夠清晰分辨出每一路的聲音。

使用Matlab比較對(duì)輸出進(jìn)行簡單箝位和輸出定標(biāo)兩種方式的語音時(shí)域波形,可以觀察到前者波形中有很多因溢出導(dǎo)致的“削波”,而后者的波形失真較小。

數(shù)字音頻流合成對(duì)于多點(diǎn)音頻會(huì)議系統(tǒng)是不可缺少的。首先對(duì)輸入的多路音頻流進(jìn)行經(jīng)過有無聲能量檢測和回波抑制處理后將有效輸入信號(hào)線性疊加,然后進(jìn)行增益定標(biāo)以便減少失真,以滿足輸出設(shè)備的要求。通過定點(diǎn)DSP的實(shí)現(xiàn)以及實(shí)驗(yàn)證明這種模式下的音頻會(huì)議信號(hào)合成算法能取得很好的會(huì)議效果。

責(zé)任編輯:gt

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

    關(guān)注

    552

    文章

    7913

    瀏覽量

    347612
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    49938

    瀏覽量

    419614
  • 濾波器
    +關(guān)注

    關(guān)注

    159

    文章

    7657

    瀏覽量

    177181
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)字信號(hào)處理器DSP技術(shù)入門(附送算法設(shè)計(jì)與系統(tǒng)方案

    `數(shù)字信號(hào)處理器DSP技術(shù)入門學(xué)習(xí)資料PPT文檔下載附件下載:DSP算法設(shè)計(jì)與系統(tǒng)方案:本書內(nèi)容主要包括兩部分,第一部分介紹了各種數(shù)字濾波器
    發(fā)表于 02-17 17:17

    DSP定點(diǎn)運(yùn)算之數(shù)字信號(hào)處理算法的定點(diǎn)化及其C語言仿真

    本帖最后由 mr.pengyongche 于 2013-4-30 03:22 編輯 數(shù)字信號(hào)處理算法的定點(diǎn)化及其C語言仿真周海
    發(fā)表于 03-01 13:57

    C語言實(shí)現(xiàn)數(shù)字信號(hào)處理算法

    C語言實(shí)現(xiàn)數(shù)字信號(hào)處理算法
    發(fā)表于 08-16 23:17

    如何去使用數(shù)字信號(hào)處理算法

    文章背景一直想學(xué)習(xí)一下數(shù)字信號(hào)處理算法,而不是每次遇到數(shù)據(jù)處理就求平均,求最值,看容差,做滑動(dòng)窗。。。數(shù)字信號(hào)處理算法已經(jīng)很成熟了,但網(wǎng)上大
    發(fā)表于 08-09 08:23

    C語言實(shí)現(xiàn)數(shù)字信號(hào)處理算法

    C語言實(shí)現(xiàn)數(shù)字信號(hào)處理算法附錄A1 BC下復(fù)數(shù)類型的實(shí)現(xiàn)1、利用BC提供的復(fù)數(shù)支持//BC中使用復(fù)數(shù)類型使用示例(ComplexUse.Cpp文件)#include
    發(fā)表于 05-10 09:55 ?67次下載

    數(shù)字信號(hào)處理-理論算法實(shí)現(xiàn)

    本內(nèi)容提供了數(shù)字信號(hào)處理-理論算法實(shí)現(xiàn) 電子書,歡迎大家下載學(xué)習(xí)
    發(fā)表于 07-22 11:34 ?0次下載
    <b class='flag-5'>數(shù)字信號(hào)</b><b class='flag-5'>處理</b>-理論<b class='flag-5'>算法</b>與<b class='flag-5'>實(shí)現(xiàn)</b>

    數(shù)字信號(hào)處理單片機(jī)及其應(yīng)用

    數(shù)字信號(hào)處理算法基于單片機(jī)的實(shí)現(xiàn)及其應(yīng)用 非常好的書籍資料
    發(fā)表于 12-28 14:19 ?1次下載

    數(shù)字信號(hào)處理算法程序

    數(shù)字信號(hào)處理算法程序,又需要的朋友可以下來看看。
    發(fā)表于 01-19 16:16 ?4次下載

    基于FPGA的數(shù)字信號(hào)處理算法研究與高效實(shí)現(xiàn)

    基于FPGA的數(shù)字信號(hào)處理算法研究與高效實(shí)現(xiàn)
    發(fā)表于 08-29 23:20 ?41次下載

    數(shù)字信號(hào)處理算法C語言實(shí)現(xiàn)PDF版電子書免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)字信號(hào)處理算法C語言實(shí)現(xiàn)PDF版電子書免費(fèi)下載。
    發(fā)表于 03-21 16:19 ?0次下載
    <b class='flag-5'>數(shù)字信號(hào)</b><b class='flag-5'>處理算法</b>C語言<b class='flag-5'>實(shí)現(xiàn)</b>PDF版電子書免費(fèi)下載

    數(shù)字信號(hào)處理算法C語言實(shí)現(xiàn)PDF電子書免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)字信號(hào)處理算法C語言實(shí)現(xiàn)PDF電子書免費(fèi)下載包括了:第一篇常用數(shù)字信號(hào)的產(chǎn)生,第二篇數(shù)字信號(hào)
    發(fā)表于 04-11 16:08 ?76次下載
    <b class='flag-5'>數(shù)字信號(hào)</b><b class='flag-5'>處理算法</b>C語言<b class='flag-5'>實(shí)現(xiàn)</b>PDF電子書免費(fèi)下載

    如何使用FPGA實(shí)現(xiàn)數(shù)字信號(hào)處理算法的研究

    處理能力的現(xiàn)場可編程門陣列(FPGA)在成本、性能、體積等方面都顯示出了優(yōu)勢。本文以此為背景,研究了基于FPGA的快速傅立葉變換、數(shù)字濾波、相關(guān)運(yùn)算等數(shù)字信號(hào)處理算法的高效
    發(fā)表于 02-01 16:11 ?16次下載
    如何使用FPGA<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>數(shù)字信號(hào)</b><b class='flag-5'>處理算法</b>的研究

    數(shù)字信號(hào)處理——理論、算法實(shí)現(xiàn)

    數(shù)字信號(hào)處理——理論、算法實(shí)現(xiàn)說明。
    發(fā)表于 04-26 09:17 ?41次下載

    數(shù)字信號(hào)處理算法電子版資源下載

    數(shù)字信號(hào)處理算法電子版資源下載
    發(fā)表于 07-18 10:12 ?0次下載

    數(shù)字信號(hào)處理器的常見故障

    數(shù)字信號(hào)處理器是一種專門用于數(shù)字信號(hào)處理的微處理器。它能夠高效地執(zhí)行數(shù)字信號(hào)
    的頭像 發(fā)表于 05-31 11:53 ?2852次閱讀