新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 采用DSP內(nèi)核技術(shù)進(jìn)行語音壓縮開發(fā)

采用DSP內(nèi)核技術(shù)進(jìn)行語音壓縮開發(fā)

——
作者:南京解放軍理工大學(xué)氣象學(xué)院大氣探測系(211101) 翟東力 王曉蕾 時間:2007-01-26 來源:《電子查詢網(wǎng)》 收藏


隨著儀器儀表人機(jī)界面越來越趨于人性化,語音識別的需求不斷增長,語音處理技術(shù)發(fā)展迅速,各種處理算法層出不窮,為大容量的語音應(yīng)用提供了愈加靈活的技術(shù)手段。然而,語音數(shù)據(jù)的壓縮比越高,數(shù)據(jù)回放算法所要求的計算能力也越強(qiáng)。目前,大多數(shù)高壓縮比的語音壓縮數(shù)據(jù)生成必須采用專用的語音開發(fā)工具和開發(fā)版權(quán),這給國內(nèi)的小規(guī)模用戶造成了一定的困難。在8k的采樣速率下,同樣是使用4兆位的flash芯片來存儲數(shù)據(jù),不同的語音算法所能提供的回放時間有很大差異。例如,采用adpcm(自適應(yīng)增量脈沖編碼)算法只可提供128秒的回放時間,而采用ti的lpc(線性預(yù)測編碼)算法卻可得到50分鐘的回放時間。在某一工程項(xiàng)目中,我們需要開發(fā)一種回放時間長達(dá)200分鐘的低成本手持語音設(shè)備,由于使用了dsp內(nèi)核芯片,在較短的時間內(nèi)完成了開發(fā)工作,達(dá)到了預(yù)先提出的性能指標(biāo)。

本文引用地址:http://butianyuan.cn/article/21071.htm

1 語音算法與芯片特點(diǎn)

在本項(xiàng)目中,我們選擇了dsp集團(tuán)的語音壓縮最新算法triple rate coder,其壓縮比達(dá)到了46:1,且音質(zhì)良好,mos指標(biāo)達(dá)到了3.98。

該算法的基本思想是:首先將語音分為若干小段,由于語音信號的譜變化是一個緩變量,因此在每一小段內(nèi)信號是平穩(wěn)變化的。然后用一個數(shù)字濾波器和一個激勵函數(shù)來表示這一段時域波形的離散采樣序列。在實(shí)際算法中是采用了一個十階的線性預(yù)測濾波器,計算時還將每一幀分為4個子幀,每一子幀的濾波器系數(shù)矢量由上一幀和本幀數(shù)據(jù)計算得到,而最后一子幀的濾波器系數(shù)矢量則由矢量分解預(yù)測法得到;激勵函數(shù)采用的是偽隨機(jī)多脈沖激勵函數(shù),由最大似然算法得到。對每一幀計算得到濾波器系數(shù)矢量和函數(shù)生成元后,將這些系數(shù)再壓縮打包就得到了最后的語音壓縮數(shù)據(jù)。當(dāng)對語音壓縮數(shù)據(jù)進(jìn)行解壓時,首先將打包的數(shù)據(jù)展開,然后建立起線性預(yù)測濾波器,將重新生成的偽隨機(jī)多脈沖激勵函數(shù)輸入濾波器,這樣在濾波器的輸出端就可得到被恢復(fù)的語音信號序列了。

該算法的實(shí)時運(yùn)算需要22mips以上的運(yùn)算速度,為此dsp集團(tuán)將dsp內(nèi)核和算法代碼集成在d6571系列芯片內(nèi),以滿足除pc用戶以外的更廣泛應(yīng)用。d6571原理框圖如圖1所示,其本身可直接外掛并管理4兆位的flash,8k采樣速率時在2.8kb的數(shù)據(jù)率下可提供25分鐘的回放時間。該芯片具備工業(yè)標(biāo)準(zhǔn)的編解碼器接口,可直接與串行pcm接口的音頻編解碼芯片相連,如美國國家半導(dǎo)體的tp3054或韓國三星半導(dǎo)體的ks8620。d6571可外接兩片音頻編解碼芯片,上電后可用設(shè)置命令對外接音頻編解碼芯片的工作模式進(jìn)行設(shè)置。例如:設(shè)置外接芯片的時鐘是外同步還是自同步;設(shè)置外接芯片處于輸出方式還是輸入方式等。

根據(jù)實(shí)際開發(fā)經(jīng)驗(yàn),我們認(rèn)為d6571芯片與其它公司所提供的某些dsp內(nèi)核芯片相比,其最大的優(yōu)點(diǎn)是幾乎不需要任何開發(fā)工具或軟件就可使用。因?yàn)樵撔酒臄?shù)據(jù)是雙向的,既可由上位機(jī)將壓縮后的語音數(shù)據(jù)通過它解壓轉(zhuǎn)變成語音,也可輸入語音通過它進(jìn)行實(shí)時壓縮后傳送給上位機(jī)。這就大大方便了長回放時間語音開發(fā)用戶的使用。更何況目前許多語音壓縮芯片對語音數(shù)據(jù)的管理是不公開的,例如:某些數(shù)字錄音電話的語音壓縮芯片。

2 系統(tǒng)構(gòu)成

與語音處理有關(guān)的系統(tǒng)構(gòu)成如圖2所示。

語音數(shù)據(jù)存放在一片32兆位的flash中,采用三星的k29w3200,這是一種8位并行接口的閃存,并行接口有利于提高代碼效率和滿足實(shí)時性要求。

在語音數(shù)據(jù)的壓縮和回放過程中,d6571和flash之間的數(shù)據(jù)吞吐均通過上位機(jī)進(jìn)行。上位機(jī)采用89c52。系統(tǒng)還有64×64的點(diǎn)陣液晶模塊acm6464等外圍設(shè)備。所有的設(shè)備均使用一條公共的8位數(shù)據(jù)總線,即cpu的p0口;p2口的六根口線用于鍵盤管理;p3口的兩根口線作為兩條串口線;這樣用于外設(shè)管理的口線還剩余16根可用。系統(tǒng)實(shí)際使用了其中的14根線:與flash管理有關(guān)的使用6根,與d6571有關(guān)的使用4根,還有4根用于液晶顯示管理。

音頻編解碼接口芯片采用一片tp3054,tp3054工作所需的同步脈沖、采樣時鐘、數(shù)據(jù)信號等只需要與d6571的四根控制線相連即可得到。

3 系統(tǒng)開發(fā)

本系統(tǒng)的語音開發(fā)分為上載、數(shù)據(jù)合成及下載三個過程。上載是指獲得語音壓縮數(shù)據(jù);數(shù)據(jù)合成是指將全系統(tǒng)的數(shù)據(jù)按一定的結(jié)構(gòu)組織成一個文件;下載是指儀器裝配出廠時將文件燒錄到flash中。這三個過程均通過pc機(jī)進(jìn)行。由于系統(tǒng)板上mcu的串行信號直接輸出的是ttl電平,因此,本系統(tǒng)的語音開發(fā)唯一需要另外制作的硬件就是使用一片max232來完成與pc機(jī)之間的電平轉(zhuǎn)換。

d6571具有16位寬度的總線,但也允許以分時方式使用8位總線,這時上位機(jī)須用hl信號表示送上總線的是高8位還是低8位;而當(dāng)d6571主動將數(shù)據(jù)送上總線時,會發(fā)出ack信號通知上位機(jī)讀取數(shù)據(jù)。hrd和hwr則是讀和寫的控制線。由于triple rate coder算法是按30毫秒分幀采樣,然后再進(jìn)行分析壓縮的,因此無論是讀取壓縮數(shù)據(jù)還是回送壓縮數(shù)據(jù),均必須在一幀之內(nèi)完成,否則d6571會自行進(jìn)入休眠狀態(tài)。向d6571輸送語音數(shù)據(jù)的過程如下:首先送出解壓控制命令,然后接收一個回送狀態(tài)字,狀態(tài)字中包含了當(dāng)前幀所需要的字節(jié)數(shù),上位機(jī)就連續(xù)送出規(guī)定數(shù)目的數(shù)據(jù),待一幀處理完畢后,d6571會繼續(xù)送出狀態(tài)字。如此循環(huán)就可連續(xù)回放出語音了。而利用d6571進(jìn)行語音壓縮的數(shù)據(jù)處理過程正好相反,狀態(tài)字中包含的是當(dāng)前幀壓縮所得到的字節(jié)數(shù),上位機(jī)就應(yīng)連續(xù)接收規(guī)定數(shù)目的數(shù)據(jù)。

上載時,首先要得到的是各個語音段的壓縮數(shù)據(jù)。作為準(zhǔn)備工作,先用pc機(jī)的錄音機(jī)工具將我們所需的語音錄制成wav文件。然后對mcu和pc機(jī)分別編寫共同配合工作的兩段程序來完成以下功能:pc機(jī)通過聲卡播放聲音給d6571;89c52控制d6571進(jìn)行語音壓縮并讀回壓縮數(shù)據(jù),然后通過串口線回送給pc機(jī),pc機(jī)則將每段的壓縮數(shù)據(jù)存盤。

由于每段語音播放時均要有一定的中文點(diǎn)陣字符顯示,數(shù)據(jù)合成的任務(wù)就是要將每段數(shù)據(jù)加上索引和字符點(diǎn)陣數(shù)據(jù)后再合成為一個完整的近32兆位的二進(jìn)制文件。文件形成時為了使數(shù)據(jù)定位和讀出編程方便,數(shù)據(jù)塊以flash的頁為單位,一頁為528字節(jié)。

下載工作則較簡單,在設(shè)備出廠前直接使用系統(tǒng)89c52的串口將數(shù)據(jù)合成形成的文件下載到閃存中即可。

d6571的壓縮率極高,使用和開發(fā)也比較方便。因此盡管本系統(tǒng)的語音容量長達(dá)200分鐘,但系統(tǒng)整體設(shè)計十分簡潔、經(jīng)濟(jì),幾乎不需調(diào)試。主要開發(fā)工作是mcu和pc機(jī)的一些程序開發(fā)使用c51和vb編程,開發(fā)速度也比較快。

由于d6571的控制命令很豐富,系統(tǒng)用戶界面的軟件是很容易編寫的。例如,由于該芯片具有30階的音量控制命令,我們未添任何硬件就為設(shè)備增加了數(shù)字音量控制功能。d6571的控制命令還包含自動增益控制、變速回放、數(shù)字濾波器等更加高級的命令,因此,它幾乎可應(yīng)用于任何語音場合。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉