專利名稱:聲碼器特殊應(yīng)用集成電路的制作方法
I.發(fā)明領(lǐng)域本發(fā)明涉及話音處理。本發(fā)明尤其涉及一種在特殊應(yīng)用集成電路(application specific integrated circuits,簡稱為ASIC)中實現(xiàn)聲碼器的新的、改進(jìn)的方法和裝置。
II.相關(guān)技術(shù)的描述采用數(shù)字技術(shù)來傳輸聲音已經(jīng)相當(dāng)普遍,特別是在長距離數(shù)字無線電話中應(yīng)用更是普遍。若單單采用取樣和數(shù)字化處理來傳送話音,需要每秒64千比特(Kbps)的數(shù)據(jù)速率來獲得普通模擬電話的語音質(zhì)量。然而,如果采用話音分析,隨后再進(jìn)行恰當(dāng)編碼、傳輸,并在接收器處合成,就可以大大減小數(shù)據(jù)速率。在發(fā)射機(jī)處進(jìn)行話音分析和編碼,而在接收機(jī)處進(jìn)行合成的裝置稱為聲碼器。
近年來數(shù)字蜂窩電話標(biāo)準(zhǔn)和系統(tǒng)的發(fā)展大大刺激了對這些聲碼器的需要。對更有效地采用已有傳輸帶寬并在接收機(jī)處更精確地再現(xiàn)源話音的先進(jìn)聲碼器算法的要求增加了執(zhí)行這些更復(fù)雜聲碼器算法所需的、具有更大運(yùn)算能力的處理器的需要。
聲碼器利用話音中的長時間和短時間冗余,需要進(jìn)行大量數(shù)值運(yùn)算。這些運(yùn)算包括長序列卷積、矩陣求逆、長序列相關(guān)等。這些實時進(jìn)行的、在話音傳輸中不引入不可承受的編譯碼延遲的運(yùn)算需要強(qiáng)有力的計算資源。
出現(xiàn)數(shù)字信號處理器(DSP)在能夠進(jìn)行聲碼器算法的實時實現(xiàn)方面是一個重要因素。DSP在進(jìn)行聲碼器算法的公用算術(shù)運(yùn)算中具有很高的效率。DSP的進(jìn)展使其運(yùn)算能力增加到每秒四千萬條指令以上的速率。
用作典型目的聲碼器算法是可變速率編碼激勵線性預(yù)測(vari-able rate code excited linear prediction,簡稱為CELP)算法。這種算法詳見1993年1月14日申請的、申請?zhí)枮?8/004,484的共同待批的專利申請,其標(biāo)題為“可變速率聲碼器(Variable Rate Vocoder)”該專利的申請權(quán)已轉(zhuǎn)讓給本發(fā)明的受讓人。上述專利申請中的內(nèi)容在此引述供參考。
下表I是一個對單個20毫秒話音幀采用典型DSP來實施典型聲碼器算法的編碼部分的運(yùn)行時間輪廓。因為典型聲碼器算法的編碼部分比起譯碼部分需要多得多的處理,所以表I中只詳細(xì)列出了編碼處理的詳細(xì)情況。表I中涉及的DSP的時鐘頻率是40MHz。視運(yùn)算不同,在一個或多個時鐘周期內(nèi)進(jìn)行算術(shù)運(yùn)算和其他運(yùn)算。第一縱列代表典型聲碼算法的主要運(yùn)算。第二縱列代表用典型的DSP來完成聲碼器算法的每一特定運(yùn)算所需的時鐘周期數(shù)。第三縱列代表該特定運(yùn)算點所需的總處理的百分比。典型的聲碼器算法要求所有運(yùn)算在20毫秒內(nèi)進(jìn)行才能實時實施該算法。這就對所選擇的實施該算法的DSP提出一個要求,即DSP能夠以所要求的、在20毫秒幀內(nèi)完成所要求處理的時鐘速率(或更高)進(jìn)行運(yùn)算。對表I所描述的典型DSP來說,這就將時鐘數(shù)限制為800,000。
表I
從表I可以看出,基音搜尋和碼書搜尋在聲碼器算法的編碼部分處理時間中占75%以上。因為大多數(shù)計算負(fù)荷集中在這兩個搜尋算法內(nèi),所以設(shè)計進(jìn)行聲碼處理的有效ASIC的主要目標(biāo)在于減少進(jìn)行這兩種運(yùn)算所需要的時鐘周期數(shù)。
本發(fā)明的方法和裝置大大減少了進(jìn)行這些搜尋運(yùn)算所必須的指令周期數(shù)。本發(fā)明還提供了對聲碼器算法具有特定意義的進(jìn)行更為有效的運(yùn)算的優(yōu)化方法和裝置。本發(fā)明的方法和裝置并非僅限于典型的聲碼處理運(yùn)算,或者僅用來進(jìn)行話音編碼或譯碼??梢灶A(yù)計本方法和裝置可以用于任何采用數(shù)字信號處理算法的系統(tǒng)(如回聲消除器和信道均衡器)。
發(fā)明概述本發(fā)明是一種用來實施聲碼器算法的新的改進(jìn)的方法和裝置。
本文中描述的本發(fā)明典型實施例是一種在前述共同待批的專利申請中詳述過的可變速率CELP算法的ASIC實現(xiàn)。本發(fā)明的特征同樣適用于任何一種線性預(yù)測編碼(LPC)算法。本發(fā)明引入了一種減少了的時鐘周期數(shù)和降低了的功耗來實施聲碼器算法的優(yōu)化結(jié)構(gòu)。其最終的優(yōu)化目標(biāo)在于使功耗降低到最小。使實現(xiàn)該算法所需的時鐘數(shù)減少與減少時鐘速率一樣直接和間接地降低功耗,也是一個人們所關(guān)心的問題。其直接效果是由于互補(bǔ)式金屬氧化物半導(dǎo)體(CMOS)器件的功耗和時鐘速率之間的關(guān)系。其間接效果在于CMOS器件中功耗和電壓之間的平方律關(guān)系,以及通過降低時鐘速率可降低電壓的能力。聲碼器ASIC的效率是每一時鐘周期所完成的處理量的量度。提高效率將減少完成該算法所需的時鐘周期總數(shù)。
提高聲碼器算法實施中的效率的第一種技術(shù)是一種專門DSP核心結(jié)構(gòu)。該典型實施例的DSP核心通過提供三個隨機(jī)存取存儲器(RAM)元件來提高存儲器吞吐量。三個RAM元件中的每一個有一個專門的存儲地址發(fā)生單元。將存儲器一分為三使得能夠通過在一個周期中提供運(yùn)算數(shù)、計算結(jié)果并存儲結(jié)果來有效地執(zhí)行諸如遞歸卷積之類的運(yùn)算。取運(yùn)算數(shù)、計算結(jié)果以及存儲結(jié)果是通過流水線獲取的,從而在3個周期中進(jìn)行完整的一個結(jié)果的遞歸卷積,但每一周期產(chǎn)生一個新的結(jié)果。一分為三的存儲器還減少了聲碼器算法中用于其他運(yùn)算的時鐘周期需求。遞歸卷積的有效執(zhí)行在聲碼器算法中提供了最有效的節(jié)約。
提高聲碼器算法實施中的效率的第二種技術(shù)是向DSP核心提供一個分立的從屬處理器,稱為最小化處理器,最小化處理器進(jìn)行相關(guān)運(yùn)算,計算均方誤差(SME),并在DSP核心提供給它的數(shù)據(jù)中尋找最小MSE。該最小化處理器與DSP核心一起分享運(yùn)算量大的相關(guān)運(yùn)算和最小化任務(wù)。最小化處理器配備有一個控制元件,該控制元件監(jiān)督最小化處理器的運(yùn)行,并在某些條件下能削減MSE最小化任務(wù)的運(yùn)行。這些條件是那些由于數(shù)學(xué)約束繼續(xù)搜尋無法提供一個低于當(dāng)前最小MSE的MSE。削減MSE最小化任務(wù)的方法稱為最小化處理器的節(jié)能模式。
提供典型實施例中聲碼器算法實施的效率的第三種方法是提供有效進(jìn)行塊歸一化的專門硬件。在聲碼器算法的計算中,需要在計算中保持可能的最高水平的精度。通過提供專用硬件,可以在聲碼器算法中與其他運(yùn)算同時進(jìn)行塊歸一化,減少實施聲碼器算法所需的指令周期數(shù)。
圖面說明在參照附圖作了詳細(xì)說明以后,本發(fā)明的特征、目的和優(yōu)點將變得更為清楚。圖中,相同的標(biāo)號文字在所有圖中的函意相同。
圖1是本發(fā)明裝置的方框圖;圖2是本發(fā)明運(yùn)行的功能描述;圖3是本發(fā)明典型編碼運(yùn)行的流程圖;圖4a—d是一組不同速率下聲碼器位分配以及每一速率使用的基音和碼書子幀數(shù)的圖;圖5a—d是本發(fā)明DSP核心典型實施例的方框圖;圖6a—b是本發(fā)明最小化處理器典型實施例的方框圖;圖7描述的是本發(fā)明的典型實施例中實施的基音搜尋運(yùn)行;圖8是本發(fā)明典型實施例的基音搜尋操作流程圖;圖9是本發(fā)明典型實施例中實施的碼書搜尋操作;圖10是本發(fā)明典型實施例的碼書搜尋操作流程圖;圖11是本發(fā)明的典型實施例的聲碼處理運(yùn)行中,使通信鏈路一端處的編碼器和另一端處的譯碼器的濾波器存儲器保持相同的編碼器的譯碼器方框圖;圖12是本發(fā)明典型實施例的譯碼器方框圖。
最佳實施例的詳細(xì)描述下面參照附圖,圖1和圖5a—d中描述的DSP核心4是圍繞三重分區(qū)的隨機(jī)存取存儲器RAM(RAM A104、RAM B122和RAMC182)、只讀存儲器ROM(ROM E114)以及一有效算術(shù)邏輯裝置ALU(ALU143)而設(shè)計的。三重分區(qū)的RAM提供了更有效的ALU利用,并在單個RAM所能取得的基礎(chǔ)上增大了RAM的帶寬。專用ROM(ROM E114)提供16位的常數(shù)。RAM分區(qū)(parti-tion)RAM A104、RAM B122和RAM C182以及ROM(ROM E114)把數(shù)據(jù)提供給ALU143。RAM C182從ALU143接受并向ALU143提供32位數(shù)據(jù),而RAM A104和RAM B122接受并提供16位數(shù)據(jù),高效率地進(jìn)行16位運(yùn)算數(shù)的計算以及32位結(jié)果的存儲。
每一分區(qū)有一專用地址產(chǎn)生單元。RAM A104有地址單元A102,RAM B122有地址單元B120,RAM C182有地址單元186,而ROM E114有地址單元E112。每一地址單元由寄存器、多路復(fù)用器和加法器/減法器元件(未圖示)組成。在一個時鐘周期中,DSP核心4可以進(jìn)行三次存儲器操作、三次地址更新、一次算術(shù)運(yùn)算(例如相乘一累加一歸一),以及一次至最小化處理器6的數(shù)據(jù)移送。
指令ROM、ROM I194存儲控制DSP核心4執(zhí)行序列的指令。存儲在ROM I194中的指令序列描述將由DSP核心4實施的處理功能。ROM I194有一個專用地址產(chǎn)生單元,IP計數(shù)器和棧(stack)196。
RAM地址產(chǎn)生單元或寄存器文件、地址單元A102、地址單元B120和地址單元C186提供相應(yīng)RAM操作的地址和數(shù)據(jù)。數(shù)據(jù)可以從一些寄存器文件元件移送到同一地址單元中的另一些寄存器文件元件,或移送至各RAM。典型的實施例中,地址單元A102通過多路復(fù)用器106將數(shù)據(jù)提供至RAM A104,地址單元B120通過多路復(fù)用器124將數(shù)據(jù)提供至RAM B122,地址單元C186通過多路復(fù)用器將數(shù)據(jù)提供至RAM C182。
寄存器文件元件從同一地址單元中的其他寄存器文件元件接收直接數(shù)據(jù)、IMM(如圖5a—d中描述的那樣),或從RAM接受數(shù)據(jù)。所以,在所有情況下,術(shù)語“直接數(shù)據(jù)”指的是指令譯碼器192提供的數(shù)據(jù)。本典型實施例中,RAM A104通過多路復(fù)用器將數(shù)據(jù)提供至地址單元A102,RAM B122通過多路復(fù)用器118將數(shù)據(jù)提供至地址單元B120,RAM C182通過多路復(fù)用器184將數(shù)據(jù)提供至地址單元C186。每一地址單元通過內(nèi)部配置的加法器/減法器(未圖示)提供自動算后增量和算后減量。本典型實施例中,地址單元B120提供自動模尋址和兩個專用寄存器文件元件(未圖示),用作直接存儲器存取(DMA)的指針。
地址單元E112優(yōu)化用于系數(shù)檢索。它包含通過多路復(fù)用器110接受直接數(shù)據(jù)的基址寄存器以及通過多路復(fù)用器110接受直接數(shù)據(jù)或者通過多路復(fù)用器168和110從一累加器(C0REG164或C1REG166)接受數(shù)據(jù)的偏移寄存器(offset register)。該偏移寄存器通過一內(nèi)部加法器/減法器(未圖示),提供自動算后增量和算后減量。
IP計數(shù)器和存儲棧196包含實施尋址ROM I194功能的地址指針。地址序列是由指令譯碼器192來控制的。地址數(shù)據(jù)或者是在IP計數(shù)器和存儲棧196內(nèi)移送,或者接受為直接數(shù)據(jù)。
數(shù)據(jù)可以從RAM A104、RAM B122或RAM C182移送到ALU143的寄存器中。數(shù)據(jù)也可以從累加器(C0REG164或C1REG166)移送到RAM A104、RAM B122或RAM C182。數(shù)據(jù)可以從OREG162移送到RAM C182。
RAM A104通過多路復(fù)用器106從地址單元A102接受數(shù)據(jù)。RAM A104還通過多路復(fù)用器168和106從累加器(C0REG164或C1REG166)接受數(shù)據(jù)。RAM B122通過多路復(fù)用器124從地址單元B120接受數(shù)據(jù)。RAM B122還通過多路復(fù)用器168和124從累加器(C0REG164或C1REG166)接受數(shù)據(jù)。RAM B122還通過多路復(fù)用器124從DMA_INPUT(如圖5a—d中所示的那樣)或從INREG128接受數(shù)據(jù)。RAMC182通過多路復(fù)用器180從地址單元C186接受數(shù)據(jù)。RAMC還通過多路復(fù)用器168和180從累加器(C0REG164或C1REG166)接受數(shù)據(jù)。RAM A104通過多路復(fù)用器100將數(shù)據(jù)提供至地址單元A102,并通過多路復(fù)用器108將數(shù)據(jù)提供至AREG130。RAM B122通過多路復(fù)用器118將數(shù)據(jù)提供給地址單元B120,將數(shù)據(jù)提供給RAMB_DOUT(如圖5a—d所示),通過多路復(fù)用器126將數(shù)據(jù)提供給SREG136,通過多路復(fù)用器116將數(shù)據(jù)提供至BREG134,通過多路復(fù)用器158將數(shù)據(jù)提供至DREG156。
AREG130通過多路復(fù)用器108從ROM E114接受數(shù)據(jù),或從RAM A104接受數(shù)據(jù)。BREG134通過多路復(fù)用器116接受直接數(shù)據(jù),從ROME114接通數(shù)據(jù),或從RAM B122接受數(shù)據(jù)。BREG134還通過多路復(fù)用器168和116從累加器(C0REG164或C1REG166)接受數(shù)據(jù)。
C0REG164和C1REG166通過多路復(fù)用器148,從RAM C182,從加法器146,從邏輯“與”元件144,或從邏輯“或”元件142接受數(shù)據(jù)。
移位變址寄存器(shift index register)SREG136通過多路復(fù)用器126接受直接數(shù)據(jù)或從RAM B122接受數(shù)據(jù)。
ALU143進(jìn)行乘、加、減、相乘—累加、乘—加、乘—減、舍入、增量、清零、求反、以及邏輯“與”、“或”和“倒相”運(yùn)算。AREG130和BREG134到乘法器132的輸入進(jìn)行選通(選通未圖示),通過確保僅當(dāng)進(jìn)行相乘時才使輸入改變來減少乘法器132的功耗。ALU143出于效率考慮提供兩個36-位累加器(C0REG164和C1REG166),并提供兩個桶形移位器(barrel shifter)即桶形移位器140和桶形移位器150用于規(guī)范化。向左或向右直至16作移位是由桶形移位器140和桶形移位器150給出的。移位指數(shù)或者是通過直接數(shù)據(jù),或者是通過多路復(fù)用器149而由專用移位變址寄存器SREG136來指定的。移位變址寄存器SREG136與桶形移位器140和150、按位邏輯“或”元件160和OREG162用來將進(jìn)行塊規(guī)范化中的開銷降到最小。ALU143根據(jù)C0REG164和/或C1REG166的算術(shù)和邏輯狀態(tài),將狀態(tài)提供至指令譯碼器192,從而允許進(jìn)行條件轉(zhuǎn)移。例如,本實施例中,比較C0REG164和C1RE中值的符號以提供符號改變時的條件轉(zhuǎn)移。轉(zhuǎn)移發(fā)生在直接數(shù)據(jù)提供至IP計數(shù)器和存儲棧196時。自動檢測累加器上溢和下溢并自動進(jìn)行飽和操作,按照二的補(bǔ)碼算術(shù),在上溢時給出十六進(jìn)制值0×7FFFFFFF,下溢時給出十六進(jìn)制值0×80000001。
指令執(zhí)行順序是取指令、譯碼、執(zhí)行。地址值是由IP計數(shù)器和存儲棧196提供至指令ROM I194的,其對此作出響應(yīng)將一指令提供至指令譯碼器192。指令譯碼器192響應(yīng)于該輸入指令,對該指令進(jìn)行譯碼,并將控制信號提供至DSP核心4內(nèi)的恰當(dāng)元件以執(zhí)行該指令。
專用循環(huán)計數(shù)器和存儲棧190與IP計數(shù)器和存儲棧196提供低開銷嵌套子程序調(diào)用(low overhead nested subroutine calls)和嵌套循環(huán)。在單個指令循環(huán)期間是不允許取指令的,這可降低功耗。循環(huán)計數(shù)器和存儲棧190通過多路復(fù)用器188接受直接數(shù)據(jù),執(zhí)行固定長度的循環(huán)。循環(huán)計數(shù)器和存儲棧190還通過多路復(fù)用器168和188從累加器(C0REG164 C1REG166)接受數(shù)據(jù),執(zhí)行可變長度的循環(huán)。ROM I194內(nèi)的256字靜態(tài)指令超高速緩沖存儲器(未圖示)提供用于最常執(zhí)行的循環(huán)和子程序的低功率取指令。一“等待”指令禁止取指令以及指令譯碼而等待某一事件,以降低功耗。所說的事件可以包括DMA轉(zhuǎn)移、來自PCM接口2的定時選通或一外部事件。
外部數(shù)據(jù)和控制通過PORT_INPUT(端口輸入,如圖5a—d中所示)和DMA_INPUT(DMA輸入)從PCM接口2和條件轉(zhuǎn)移指令中使用的靜態(tài)測試位提供至DSP核心。數(shù)據(jù)是由DSP核心4通過CREG(如圖5a—d,6a—b所示)以及RAMB_DOUT從外部提供的。通過熟知的周期竊用(cycle stealing)來進(jìn)行DSP核心4和PCM接口2之間的DMA。來自C0REG164或C1REG166的數(shù)據(jù)是通過多路復(fù)用器168與來自指令譯碼器192的OUTREG_EN(如圖5a—d,6a—b所示)信號一起提供的。一起作用的OUTREG_EN信號表示存在提供至最小化處理器6的有效CREG數(shù)據(jù)。
如圖6a—b中所示的最小化處理器6用來幫助基音和碼書搜尋中的計算量大的部分。為了實施最小化,最小化處理器6從DSP核心4接收一感性加權(quán)的(perceptually weighted)輸入話音取樣序列、一組增益值和一組合成的話音取樣序列。最小化處理器6計算合成話音的自相關(guān)性以及合成話音和感性加權(quán)的輸入話音之間的互相關(guān)性。根據(jù)這些相關(guān)性,確定合成話音和輸入話音之間的均方差(MSE)的相對量度,作為合成話音增益和指數(shù)的函數(shù)。最小化處理器6報告產(chǎn)生的最小MSE的指數(shù)和增益。當(dāng)不可能再進(jìn)一步最小化時,節(jié)能特性使MSE計算中斷。最小化處理器6通過CREG、I/O端口以及專用DSP核心指令與DSP通信。
最小化處理器6的運(yùn)行是由控制器220來確定的??刂破?20包含一跟蹤當(dāng)前指數(shù)值的計算器、保持最佳基音或碼書搜尋結(jié)果的寄存器、存取RAM×212的地址發(fā)生電路以及輸入/輸出電路。另外,控制元件220還負(fù)責(zé)控制多路復(fù)用器224、234、230和246上的選擇信號,以及使鎖存器210、214、226、228、236、238、244和250工作??刂?20還監(jiān)測最小化處理器6中元件內(nèi)的各值,控制在某些預(yù)定搜尋終斷條件下削減搜尋的節(jié)能方式,并控制循環(huán)緩沖器259中增益值的循環(huán)。
另外,控制元件220還負(fù)責(zé)輸入/輸出操作??刂圃?20負(fù)責(zé)通過輸入端口12將最小化結(jié)果提供至DSP核心(即在其各次搜尋中確定的最佳基音延遲和基音增益或者最佳碼書指數(shù)和碼書增益)。OUTREG_EN信號被提供至控制元件220,以指示輸入到鎖存器210的數(shù)據(jù)是有效的,并存在于累加器輸出信號CREG處??刂圃?20響應(yīng)于此,產(chǎn)生一允許信號,并將該允許信號提供至鎖存器210,來接收數(shù)據(jù)。
OUTPORT_EN(如圖5a—d,6a—b所示)以及PORT_ADD(如圖5a—d,6a—b所示)信號從DSP核心4提供至控制元件220。PORT_ADD信號將一地址提供至最小化處理器6。當(dāng)PORT_ADD值指定用作最小化處理器6的數(shù)據(jù),并且OUTPORT_EN表示一有效PORT_ADD值時,最小化處理器6將從CREG接受數(shù)據(jù)。如上所述,向最小化處理器6提供控制和數(shù)據(jù)。
圖1是本發(fā)明結(jié)構(gòu)的典型方框圖。PCM接口2將脈沖編碼調(diào)制(PCM)話音取樣數(shù)據(jù)提供至一編譯碼器(未圖示)以及從該編譯碼器接收PCM話音取樣數(shù)據(jù),所述的PCM話音取樣數(shù)據(jù)在本實施例中是以μ-律或A-律壓縮擴(kuò)展的取樣數(shù)據(jù)或線性取樣數(shù)據(jù)。PCM接口2從時鐘發(fā)生器10接收定時信息,并從微處理器接口8接收數(shù)據(jù)和控制信息。
PCM接口2將它從編譯碼器(未圖示)接收的PCM話音取樣數(shù)據(jù)提供至DSP核心4,進(jìn)行編碼。PCM接口2從DSP核心4接收隨后提供至編譯碼器(未圖示)的PCM話音取樣數(shù)據(jù)。PCM數(shù)據(jù)是通過DMA在DSP核心4和PCM接口2之間傳送的。PCM接口根據(jù)從編譯碼器(未圖示)接收到的取樣值的定時,將定時信息提供至?xí)r鐘發(fā)生器10。
DSP核心4將數(shù)據(jù)和控制信息提供至其協(xié)處理器(co-proces-sor)即最小化處理器6。DSP核心4還將數(shù)據(jù)提供至輸出端口14,并從輸入端口12接收數(shù)據(jù)。DSP核心4從時鐘發(fā)生器10接收計時信息。DSP核心4還能夠提供外部地址信息,并接收外部指令和數(shù)據(jù)。
最小化處理器6從時鐘發(fā)生器10接收定時信息,并從DSP核心4接收數(shù)據(jù)和控制。最小化處理器6通過輸入端口12將最小化過程的結(jié)果提供至DSP核心4。
時鐘發(fā)生器10將定時信息提供至所有其他塊。時鐘發(fā)生器10接收外部時鐘信號,并從微處理器接口8和PCM接口2接收定時信息。
聯(lián)合測試動作組(JTAG)接口16提供測試ASIC功能的能力。JTAG接口16接收外部數(shù)據(jù)和控制信息,并提供外部數(shù)據(jù)。
輸出端口14從DSP核心4接收數(shù)據(jù),并將該數(shù)據(jù)提供至微處理機(jī)接口8,還可以將數(shù)據(jù)提供至外部裝置(未圖示)。
輸入端口12從微處理器接口8和最小化微處理器6接收數(shù)據(jù),并將該數(shù)據(jù)提供至DSP核心4。輸入端口12還可以從外部裝置(未圖示)接收數(shù)據(jù),并將該數(shù)據(jù)提供至微處理器接口8。
微處理器接口8從微處理器(未圖示)接收數(shù)據(jù)和控制信息,并將數(shù)據(jù)和控制信息提供至微處理機(jī)(未圖示)。該信息也提供至其他塊。
本發(fā)明的典型實施例中,聲碼器ASIC執(zhí)行可變速率CELP算法,該算法在申請日為1993年1月14日、申請?zhí)枮?8/004,484、標(biāo)題為“可變速率聲碼器”的、轉(zhuǎn)讓給本發(fā)明受讓人的共同待批的美國專利申請文獻(xiàn)中有詳述。
圖2描述了ASIC中的主要功能。參見圖2,待編碼的抽樣值通過PCM接口30從一編譯碼器(未圖示)提供至聲碼器ASIC。這些取樣值隨后被提供至將μ-律或A-律取樣值轉(zhuǎn)換成線性取樣值的脫壓縮擴(kuò)展元件(decompanding element)32。以線性格式提供的取樣值無變化地通過脫壓縮擴(kuò)展元件32。線性取樣值提供給發(fā)送音頻處理元件34,發(fā)送音頻處理元件34功能上含有話音控制開關(guān)(voiceoperated switch,簡稱為VOX)36、音頻均衡元件(andio equalizationelement)38,QCELP編碼元件40以及雙音多頻(DTMF)檢測元件41。發(fā)送音頻處理單元34隨后通過微處理機(jī)接口42將編碼話音包(ercoded speech packet)提供至ASIC外部的微處理器(未圖示)。
編碼話音包由微處理器(未圖示)通過微處理機(jī)接口42提供至接收音頻處理元件44,在此它們被譯碼成話音取樣值。接收音頻處理元件44功能上包含QCELP譯碼元件46、音頻均衡器48和DTMF發(fā)生元件47。譯碼取樣值被提供至壓縮擴(kuò)展元件50,它將線性取樣值轉(zhuǎn)換成μ-律或A-律格式或不變地將線性取樣值傳送到PCM接口30。ASIC通過PCM接口30將譯碼取樣值提供到ASIC外部的編譯碼器(未圖示)。
圖2中脫壓縮擴(kuò)展元件32進(jìn)行的脫壓縮擴(kuò)展運(yùn)算以及圖2中壓縮擴(kuò)展元件50進(jìn)行的壓縮擴(kuò)展運(yùn)算是由圖5a—d中描述的DSP核心4來實施的。圖2中發(fā)送音頻處理元件34描述的發(fā)送音頻處理運(yùn)算是由圖6a—b中描述的DSP核心4以及最小化處理器6來實施的。圖2中描述為接收音頻處理元件44的接收音頻處理運(yùn)算是由圖5a—d中描述的DSP核心4來實施的。
本實施例中,以8位μ-律或8位A-律格式從編譯碼器(未圖示)提供的取樣值被轉(zhuǎn)換成14位線性格式。μ律和線性之間的關(guān)系如方程1所示2Y=-1s(33+2M)2N-33 (1)式中,Y為線性值(-4015.5至4015.5),N為指數(shù)(0至7),M為一數(shù)值(0至15),S為一符號(0表示正,1表示負(fù))。A律和線性之間的關(guān)系如方程2和3所示2Y=-1s(1+2M)22Y 對于N=0 (2)2Y=-1s(33+2M)2N對于N=1,…,7 (3)式中,Y為線性值(-4032至4032),N、M和S如上所述。
參見圖5a—d,借助于查閱存儲在ROME114內(nèi)的表,通過圖2中的PCM接口30提供的取樣值被轉(zhuǎn)換成線性格式。在一種較佳實施例中,采用一半大小的128×14μ-律至線性和A-律至線性查表來進(jìn)行轉(zhuǎn)換。這種較佳實施例利用了具有如下式(4)所示性能的全大小的轉(zhuǎn)換表。
ROM(n+128)=-ROM(n)0≤n≤127) (4)在計算自相關(guān)系數(shù)和LPC系數(shù)之前需要從輸入話音信號中去除所有DC成分。DC組塊運(yùn)行(DC blocking operation)是通過從當(dāng)前窗口(current window)中的每一輸入取樣中減去一低通濾波的話音取樣平均值(DC偏置)在DSP核心4中完成的。即,當(dāng)前幀的DC偏置是當(dāng)前幀和前一幀的取樣平均的加權(quán)平均。DC偏置的計算如等式(5)所示DC_偏置=a(平均(前一幀))+(1-a)平均(當(dāng)前幀) (5)式中,對于本實施例a=0.75。低通濾波是為了防止在幀邊界處出現(xiàn)大的不連續(xù)。這一操作是在DSP核心4中,采用ROME114提供的插值因子a在一個RAM元件(即RAM A104、RAM B122或RAMC182)中存儲當(dāng)前幀和前一幀的取樣平均來進(jìn)行的。相加是由加法器146完成的,相乘是由乘法器132來完成的??梢栽谖⑻幚砥骺刂葡聛碓试S和禁止組塊功能。
不帶DC的輸入話音信號S(n)隨后被加窗,來減小將話音序列斬波成固定長度幀的影響。本實施例中采用Hamming窗口函數(shù)。對于幀長度LA=160,根據(jù)等式(6)計算加窗的話音Sw(n)SW(n)=S(n+60)WH(n),0≤n≤LA-1(6)式中,Hamming窗口由等式(7)和(8)定義。
WH(n)=0.54-0.46cos[2πn/(LA-1)],0≤n≤LA-1 (7)=0, 其它(8)在一種較佳實施例中,因為WH(n)是一個偶對稱函數(shù),所以80個系數(shù)的查尋表(Hamming窗口系數(shù)數(shù)量的一半)被存儲在ROME114中。加窗可以通過多路復(fù)用器108,按照地址單元E112提供的地址值,從ROM E114提供窗口系數(shù)至AREG130。AREG130將該數(shù)據(jù)提供至乘法器132的第一輸入。話音取樣S(n+60)由RAMB122提供至BREG134。BREG134將該值提供至乘法器132的第二輸入。乘法器132的輸出是加窗的話音取樣,通過多路復(fù)用器168被提供至C0REG164,并隨后被提供至RAM C182。
塊歸一化過程由兩個功能部分組成歸一化因子的判定和所要數(shù)據(jù)的歸一化。本實施例中,數(shù)據(jù)以二的補(bǔ)碼表示被存儲起來。按照上式(7)計算加窗的取樣值。根據(jù)從ROM I194得到的歸一化指令DETNORM,C0REG164中產(chǎn)生的加窗取樣值要經(jīng)歷下述過程。如果C0REG164中的值為負(fù),則反相元件152將該數(shù)的二進(jìn)制數(shù)字反相并將該位反相值傳送到加法器146的第一輸入。通過多路復(fù)用器137和138使加法器146的第二輸入為零。隨后,加法器146通過它的進(jìn)位輸入(未圖示)加一至位反相值。如果C0REG 164中的值為正,則該值通過多路復(fù)用器168和154被傳送,反相元件152和加法器146不受影響。這一過程的目的在于計算C0REG164的絕對值。該絕對值隨后被提供至按位邏輯或元件160的第一輸入。按位邏輯或元件160的第二輸入由OREG162提供。上述絕對值計算由下面的等式8a—c所示。
OREG新=(ABS(C0REG))OR(OREG老) (8)其中,ABS(C0REG)=C0REG,C0REG≥0 (8b)=-C0REG,C0REG<0 (8c)如果歸一化所要的數(shù)據(jù)在C1REG166內(nèi),則用一DETNORM指令同樣在C1REG166上進(jìn)行等式8a—c中描述的運(yùn)算。OREG162在歸一化運(yùn)行開始時清零。該過程對所有加窗取樣值(所要的數(shù)據(jù))重復(fù),從而在運(yùn)算結(jié)束時,OREG162中存儲的值代表所有加窗取樣值絕對值的按位邏輯或。由于OREG162中的值大于或等于加窗取樣值塊中的最大數(shù)值,所以根據(jù)OREG162中設(shè)定的最有效位,可確定一比例因子。OREG162中的值通過多路復(fù)用器168傳送到RAMC182。該值隨后被裝載到C0REG164內(nèi)。歸一化因子是通過計數(shù)所需的C0REG164中值的左移位或右移位數(shù)來確定的,從而由該值形成的加窗數(shù)據(jù)的移位會為后續(xù)的運(yùn)算而提供具有要求峰值數(shù)值的值。該比例因子也稱為歸一化因子。因為歸一化是通過移位來進(jìn)行的,所以歸一化因子是數(shù)值2的冪。
為了盡可能以最高精度保持加窗取樣值,所要的值被一歸一化因子相乘,從而最大值占據(jù)后續(xù)運(yùn)算中給出的最大位值。因為歸一化因子是數(shù)值2的冪,所以所要的數(shù)據(jù)的歸一化可以通過簡單地由歸一化因子指定的移位數(shù)來獲得。歸一化因子由RAM B122通過多路復(fù)用器126提供給SREG136。加窗取樣值隨后通過多路復(fù)用器158從RAM C182提供至DREG156。DREG156隨后通過多路復(fù)用器154和禁止工作的反相器152將這些值提供至桶形移位器150,數(shù)據(jù)值在這里在通過多路復(fù)用器149,按照由SREG136提供至桶形移位器的歸一化因子移位。桶形移位器150的輸出通過禁止的加法器元件146和多路復(fù)用器148傳送至C0REG164。歸一化并加窗的取樣值隨后通過多路復(fù)用器168傳送,并通過多路復(fù)用器124和180分別提供至RAM B122和RAM C182。這就在RAM中形成兩套歸一并加窗的取樣值,使自相關(guān)系數(shù)的后續(xù)計算更為有效。
P+1個自相關(guān)系數(shù)R(k)的計算是按等式9進(jìn)行的R(k)=Σm=0LA-1-KSW(m)Sw(m+k),0≤K≤P----(9)]]>其中,P為編碼器中共振峰預(yù)測濾波器(formant prediction filter)的階數(shù)。本實施例中,P=10。歸一并加窗的取樣值SW(m)通過多路復(fù)用器116和BREG134由RAM B122提供給乘法器132的第一輸入。延遲了的歸一并加窗的取樣值SW(m+k)通過多路復(fù)用器148和C1REG166、RAM A104和AREG130由RAM C182提供至乘法器132的第二輸入。每個R(k)是LA-K個值的累加。對于每個R(k)的第一次迭代,乘法器132的輸出通過多路復(fù)用器138和桶形移位器140提供至累回器C0REG164以及加法器146的第一輸入。多路復(fù)用器154通過禁止的桶形移位器150將零提供至加法器146的第二輸入。對于后續(xù)迭代,乘法器132的輸出通過多路復(fù)用器138和桶形移位器140提供至加法器146的第一輸入0加法器146的第二輸入是通過多路復(fù)用器168和154、禁止的倒相元件152和桶形移位器150,以C0REG164的輸出提供的。對于每一R(k),重復(fù)這一過程。
自相關(guān)系數(shù)中沒有一個大于R(0)。本實施例中,在計算了R(0)以后,也就確定了歸一化因子。該歸一化因子隨后被運(yùn)用于已經(jīng)計算的R(0)以及其余自相關(guān)系數(shù)。這一階段上的自相關(guān)系數(shù)的歸一化使LPC的后續(xù)計算的精度最大。
現(xiàn)在來說明圖3的方框62,計算LPC系數(shù)來去除話音取樣值中的短時相關(guān)冗余。
具有階數(shù)P的共振峰預(yù)測濾波器具有如下式(10)所述的傳遞函數(shù)A(Z)。A(Z)=1-Σi=1PaiZ-1,P=10----(10)]]>每一LPC系數(shù)ai是根據(jù)歸一化并加窗的輸入話音的自相關(guān)值來計算的。本實施例中采用稱為Durbin遞歸(見L.R.Rabiner和R.W.Schafer的“話音信號的數(shù)字處理(Digital Processing of Speech Sig-nals)”,Prentice—Hall,1978)的有效迭代方法來計算LPC系數(shù)。該迭代方法由下列等式(11)至(17)所述。
E(0)=R(0),i=1 (11)Ki=[R(i)-Σj=1i-1aj(i-1)R(i-j)]/E(i-1)----(12)]]>ai(1)=Ki(13)aj(i)=aj(i-1)-Kiai-j(i-1),i≤j≤i-1(14)E(i)=(1-Ki2)E(i-1)(15)如果i<P,則遞增i并繼續(xù)至12 (16)最后的LPC系數(shù)值為aj′=aj(P),1≤j≤p (17)Durbin迭代算法僅適用于輸入信號具有零平均值的時候,這要求在進(jìn)行前述的自相關(guān)計算前去掉所有的DC偏置。
本實施例中,采用15Hz的帶寬擴(kuò)展來確保共振峰預(yù)測濾波器的穩(wěn)定性。這可以通過徑向向內(nèi)的共振峰合成濾波器的極點的標(biāo)度來完成。帶寬擴(kuò)展是通過按照等式(18)對LPC系數(shù)的標(biāo)度來完成的。
ai=βiai′,1≤i≤P (18)本實施例中,β=0.9883。對于1≤i≤p的十個帶寬擴(kuò)展系數(shù)βi被存儲在ROM E114中提供的查尋表中。方框62的功能是在DSP核心4內(nèi)實現(xiàn)的。
現(xiàn)在來說明圖3中的方框64,它確定話音數(shù)據(jù)當(dāng)前幀的編碼速率。速率的判定是根據(jù)每一幀中的話音活動量測定來進(jìn)行的。話音活動量回過來又是按照前述的幀能量R(0)來測定的。為了確定i幀的編碼速率,將幀能量與等式(19)至(21)所定義的三個閾值進(jìn)行比較T1(Bi)=-(5.54463·10-6)Bi2+(4.047152)Bi+362 (19)T2(Bi)=-(1.529733·10-6)Bi2+(8.750045)Bi+1136(20)T3=(Bi)=-3(3.957050·10-6)Bi2+(18.899622)Bi+3347(21)式中i幀的背景噪聲電平Bi按等式(22)對每一幀進(jìn)行更新。
Bi=min[Ri-1(0),160000,max[1.00547Bi-1,Bi-1+1]] (22)如果幀能量低于所有三個閾值,則速率為八分之一;如果幀能量在T1(Bi)和T2(Bi)之間,則速率為四分之一;如果幀能量在T2(Bi)和T3(Bi)之間,則速率為二分之一;如果幀能量高于T3(Bi),則為全速率。除非當(dāng)速率由微處理機(jī)(未圖示)通過微處理機(jī)接口8被強(qiáng)制到某一特定速率,否則數(shù)據(jù)速率可以被提高至任一速率,但降低則不能超過每幀一個臺階(例如二分之一速率至四分之一速率)。在DSP核心4中,與這些閾值相關(guān)的系數(shù)在ROM E114中的查詢表中給出。
在實施例中還給出分?jǐn)?shù)速率算法,從而使最大平均速率可以由微處理機(jī)(未圖示)通過微處理機(jī)接口8來限制。給定一速率限定因子S,可以通過限定連續(xù)全速率幀數(shù)來將聲碼器的最大平均速率限定在(2S+1)/[2(S+1)]。方框64的功能是在DSP核心4中實施的。
下面描述圖3中的方框66,帶寬展寬的LPC系數(shù)被轉(zhuǎn)換成線譜對(LSP)頻率(見Soong和Juang的“線譜對(LSP)和話音數(shù)據(jù)壓縮(Line Spectrum Pair(LSP)and Speech Data Compression)”,I-CASSP,1984)。LSP頻率已經(jīng)表明具有更好的傳輸存儲特性,并且比起LPC系數(shù)可以更有效地進(jìn)行編碼。表示十個LPC系數(shù)的LSP頻率是等式23和24中所述多項式的十個根P′(ω)=cos5(2πω)+P1′cos4(2πω)+…P4′cos(2πω)+0.5P5′(23)Q′(ω)=cos5(2πω)+q1′cos4(2πω)+…+q4′cos(πω)0.5P5′ (24)式中,按照等式(25)至(27)在DSP核心4中計算1≤i≤5的Pi′和qi′P0′=q0′=1(25)Pi′=-ai-a11-i-Pi-11≤i≤5 (26)qi′=-ai+a11-i+q′i-11≤i≤5 (27)P′(ω)的根是通過假定在每一π/32弧度內(nèi)最多有一個根來求得的。在從0到π弧度的每一π/32弧度處估算P′(ω)。在任一π/32區(qū)間內(nèi)存在一個根使得函數(shù)P′(ω)在該區(qū)間上改變符號。
如果求得了一個根,則進(jìn)行對半檢索,來隔離π/256范圍內(nèi)的根。對半檢索包含在當(dāng)前區(qū)間的中心處估算P′(ω),從而確定哪半個區(qū)間包含該根。當(dāng)前區(qū)間隨后變窄,以僅包含求得的包含該根的那半個區(qū)間。繼續(xù)這一過程,直至該根被隔離到π/256大小的區(qū)間內(nèi)。隨后進(jìn)行線性插入,來估算π/256弧度區(qū)間內(nèi)根的位置。
LSP頻率的有序性確保Q′(ω)的一個根位于P′(ω)的每一對根之間。Q′(ω)的第五個根位于P′(ω)的第五個根和π弧度之間。上述對半檢索在P′(ω)的每一對根之間以及P′(ω)的第五.個根和π弧度之間進(jìn)行,以確定Q′(ω)的根。
因為對半檢索一直進(jìn)行到將根的位置隔離在π/256大小的區(qū)間內(nèi),所以需要將256個余弦值等間距地排列在0和π之間。這些余弦值被存儲在ROM E114的查詢表中。為了求得P′(ω)和Q′(ω)的根,分別需要最大值為48和30次函數(shù)估算。這些函數(shù)估算是在將LPC系數(shù)轉(zhuǎn)換成LSP頻率中計算量最大的部分。方框66的功能是在DSP核心4中實施的。
下面描述圖3中的方框68,對LSP頻率進(jìn)行量化。每一LSP頻率位于相應(yīng)偏置值的中心附近。在量化之前,從每一相關(guān)LSP頻率中減去這一偏置,來減小量化所需的位數(shù)。該偏置是以下述等式(28)來計算的。
Biasi=0.5i/(P+1)=(0.45)i(28)在該偏置從LSP頻率中減去以后,用一微分(differential)脈沖編碼調(diào)制(DPCM)量化器來量化LSP頻率。采用DPCM量化器是因為LSP頻率隨時間緩慢變化,對LSP頻率中變化的量化減小了直接對LSP頻率進(jìn)行量化所需的位數(shù)。在DSP核心4中,LSP頻率偏置值存儲在ROM E114中的查詢表中。所用的量化位數(shù)以及量化間隔大小是正被量化的10個LSP頻率的函數(shù),也是編碼速率的函數(shù)。量化位數(shù),以及間隔大小按每一編碼速率、每一LSP頻率存儲在ROME114中的查詢表中。上述的查詢表見表II中所示的那樣。例如,用4位以及0.025的間隔大小對全速率下的LSP頻率ω1進(jìn)行量化。
表II
在量化和插值以后,進(jìn)行測試,以確保在考慮了量化的影響以后使共振峰濾波器保持穩(wěn)定。LSP頻率必須以至少80Hz的間隔分開,從而確保合成共振峰濾波器的穩(wěn)定。如果任何一個LSP頻率與相鄰LSP頻率的分開小于80Hz,則再進(jìn)行帶寬擴(kuò)展。方框68的功能是在DSP核心4內(nèi)實現(xiàn)的。
現(xiàn)在描述圖3中方框70,LSP頻率經(jīng)下述等式(29)所述的低通濾波來減小量化影響
其中,在本實施例中,對于全速率SM=0,對于二分之一速率SM=0.125。對于四分之一和八分之速率,如果四分之一或八分之一速率的連續(xù)幀數(shù)小于10,則SM=0.125和SM=0.9。
對于每一基音子幀,LSP頻率。除了八分之一速率以外,基音子幀的插值LSP頻率用作相應(yīng)的碼書子幀對。按照下述等式30插值LSP頻率
式中,按每一速率、每一基音子幀和碼書子幀,將權(quán)重αω存儲在ROM E114的查詢表中。上述查詢表見表III所示。例如對基音子幀1和碼書子幀1和2來說,在全速率下αω為0.75。
表III
插值的LSP頻率再轉(zhuǎn)換回到用于基音及碼書搜尋的LPC系數(shù)。如下述等式31—33所示根據(jù)PA(Z)和QA(Z)來計算LPC系數(shù)。
A(Z)=[PA(Z)+QA(Z)]/2 (31)其中,PA(Z)=(1+Z-1)Πj=15[1-2Z-1cos(2πω2j-1)+Z-2]----(32)]]>QA(Z)=(1-Z-1)Πj=15[1-2Z-1cos(2πω2j)+Z-2]---(33)]]>
本實施例中,在DSP核心4內(nèi)估算臺勞(Taylor)級數(shù)展開,來計算PA(Z)和QA(Z)中的余弦值。臺勞級數(shù)展開提供了比起前述尋根搜索中所采用的更為精確的余弦值。PA(Z)和QA(Z)的值是通過對上述等式32—33中的二次多項式進(jìn)行卷積來計算的。方框70的功能是在DSP核心4中實現(xiàn)的。
現(xiàn)在描述圖3的方框圖72,通過合成基音搜尋運(yùn)算來進(jìn)行綜合分析。這一窮盡搜尋過程可由方框72—74組成的循環(huán)來說明。本實施例中,除了八分之一速率以外,全部在基音子幀上進(jìn)行基音預(yù)測。圖7中描述的基音編碼器采用合成-分析方法來確定基音預(yù)測參數(shù)(即基音滯后L以及基音增益b)。選擇的參數(shù)是那些使采用基音預(yù)測參數(shù)產(chǎn)生的感性加權(quán)輸入話音和合成話音之間的MSE最小的參數(shù)。
本發(fā)明較佳實施例中,在圖7描述的基音預(yù)測參數(shù)的抽取中采用隱含的感性加權(quán)。圖7中,具有下述等式(34)所示響應(yīng)的感性加權(quán)濾波器是以濾波器320和濾波器324的串聯(lián)來實施的。ω(Z)=A(Z)A(Z/ξ)----(34)]]>隱含的感性加權(quán)通過再次使用作為開路(34)共振峰殘留(open loopformant residual)的濾波器320的輸出來減小感性加權(quán)濾波的計算復(fù)雜性。將等式(34)的濾波分成兩個部分的運(yùn)算消除了基音搜尋中的一個濾波運(yùn)算。
輸入話音取樣值S(n)通過共振峰預(yù)測濾波器320,其系數(shù)是從前面描述的圖3中方框70的LSP插值和LSP至LPC轉(zhuǎn)換產(chǎn)生的LPC系數(shù)。共振峰預(yù)測濾波器320的輸出是開路共振峰殘留P0(n)。開路共振峰殘留P0(n)通過具有用等式35所述的傳遞函數(shù)加權(quán)共振峰合成濾波器324。
加權(quán)共振峰合成濾波器324的輸出是感性加權(quán)話音X(n)。從加權(quán)共振峰合成濾波器324的輸出中減去加權(quán)共振峰合成濾波器324的輸出零輸入響應(yīng)(ZIR),來去除初始濾波器或加權(quán)共振峰合成濾波器324的濾波器存儲的影響。加權(quán)共振峰合成濾波器324的ZIR計算是在ZIR元件328中計算的。ZIR即aZIR(n)是在加法器326中從感性加權(quán)話音X(n)中減去的。在每一基音子幀的開頭處,ZIR元件328和加權(quán)共振峰合成濾波器324的濾波器存儲是相同的。
在基音搜尋中,假定碼書向量對于開路共振峰殘留中當(dāng)前子幀的貢獻(xiàn)為零。基音搜尋是采用前述開路共振峰殘留P0(n)以及閉路共振峰殘留Pc(n)來進(jìn)行的。閉路共振峰殘留是先前基音子幀中基音合成濾波器322中重新構(gòu)筑的取樣值?;艉铣蔀V波器322的傳遞函數(shù)見下述等式(3b)1P(Z)=1(1-bZ-L)---(36)]]>式中的基音滯后L以及基音增益b是在先前基音子幀的基音搜尋過程中計算的?;艉铣蔀V波器322的輸入為激勵矢量Cb(n),它是通過將指數(shù)為I的碼書項(codebock entry)Cb(I)以及先前碼書子幀的碼書搜尋過程期間計算的碼書增益G相乘而產(chǎn)生的。這樣產(chǎn)生的共振峰殘留稱為閉路共振峰殘留。
本實施例中,PC(n)由143個閉路重建樣本組成。搜尋從大開環(huán)搜尋移到大閉環(huán)搜尋,搜尋一基音子幀長度的窗口。對于長度為LP的基音子幀,n在-Lmax=-143和LP-17之間變化。本實施例中,對于全速率,LP=40;對于二分之一速率,LP=80;對于四分之一速率,LP=160。本實施例中,取樣值PC(n)和Po(n)如多路復(fù)用器332所示的那樣相鄰存儲在一起,使得PC(n)和Po(n)值可以作為長度為LP+143的單一一塊取樣值順序存取。取樣值存儲在RAM B122中。
共振峰殘留P(n)是由PC(n)和Po(n)構(gòu)成的,并通過具有下述等式(37)所示傳遞函數(shù)的加權(quán)共振峰合成濾波器330。 加權(quán)共振峰合成濾波器330對于基音滯后L的每一值,用來產(chǎn)生LP個加權(quán)的合成話音取樣值的序列YL(n)。加權(quán)合成話音序列YL(n)以及加權(quán)話音序列XP(n)被提供至最小化處理器334。因為已經(jīng)減去了加權(quán)共振峰合成濾波器324的初始狀態(tài)的影響,所以僅必須計算加權(quán)共振峰合成濾波器330的脈沖響應(yīng)。YL(n)的計算必須用加權(quán)共振峰合成濾波器330的脈中響應(yīng)h(n)和P(n)內(nèi)的恰當(dāng)子序列作卷積,來獲取基音滯后L的加權(quán)合成話音取樣值YL(n)。
卷積是如圖5a—d所示在DSP內(nèi)核4內(nèi)以遞歸方式來進(jìn)行的。從L=17到L=143,對于每一基音滯后值計算一組YL(n)值。加權(quán)共振峰合成濾波器330的脈沖響應(yīng)h(n)被截取至本實施例中的前二十個取樣值,并存儲在RAM A104內(nèi)。共振峰殘留P(n)被存儲在RAM B122內(nèi)。第一個基音滯后L=17的卷積是以下述等式(38)所示的非遞歸方式來進(jìn)行的Y17(n)=h(n)*P17(n)=Σi=019h(i)P17(n-i),0≤n≤LP----(38)]]>式中LP為基音子幀長度。
計算第一序列Yn(n)并存儲在RAM C142中。以下述等式39—41,遞歸地計算基音滯后L=18至L=143的后續(xù)序列YL(n)YL(n)=h(0)P(-L)n=0 (39)YL(n)=Y(jié)L-1(n-1)+h(n)P(-L)1≤n<20,17<L≤143 (40)YL(n)=Y(jié)L-1(n-1) 20≤n<LP(41)注意下述等式(42)中所示的關(guān)系。
PL(n)=P(n-L)=PL-1(n-1)
17<L≤143,0≤n<LP(42)將RAM分成三個分區(qū),每一分區(qū)具有一個專用尋址單元以控制裝入和存儲操作來使遞歸卷積的效率最佳化。這稱為三重分區(qū)RAM。用等式40計算卷積值,隨后就可以每一時鐘周期產(chǎn)生一個結(jié)果。例如,在一個脈沖周期內(nèi),計算Y18(10),存儲Y18(9),取Y17(10)和h(10)。這樣,上述等式(40)就可以每一周期產(chǎn)生一個結(jié)果。上述等式(41)也可以每一周期產(chǎn)生一個結(jié)果。例如,在一個周期中,計算Y18(24),取Y17(24),并存儲Y18(23)。
能夠運(yùn)算等式(40)和(41)而無需在基音滯后更新之間將先前計算的加權(quán)合成話音取樣值YL-1(n-1)移送到同一源RAM需要一稱為乒乓過程(其中源RAM和目的RAM在每一滯后更新之間交換)的存儲策略和硬件能力。當(dāng)計算偶數(shù)基音滯后值的YL(n)時,YL-1(n-1)值是從三個RAM中的第一個中取出的,結(jié)果被存儲在三個RAM中的第二個內(nèi)。當(dāng)計算奇數(shù)基音滯后值的YL(n)時,YL-1(n-1)值是從三個RAM中的第二個取出的,結(jié)果存儲在三個RAM中的第一個內(nèi)。這一乒乓過程無需在每一基音滯后更新之間,將新計算的YL(n)值移送到同一RAM,以及從同一RAM移送出先前計算的YL-1(n-1)。
圖8是本實施例中基音搜尋的卷積部分(初始非遞歸和遞歸卷積)的執(zhí)行流程圖。方框350中,基音滯后L初始化至其最低值,本實施例中,該最低值為17。樣本號n和濾波器指數(shù)m被設(shè)置為零,Y17(n)的值被設(shè)置為零。方框352至360構(gòu)成以非遞歸方式進(jìn)行計算的初始卷積循環(huán)。L=17的初始卷積計算是按照下述等式(43)來進(jìn)行的。Y17(n)=Σi=019h(i)P17(n-i),0≤n<LP------(43)]]>初始卷積的計算采用固定長度的循環(huán)來減小計算的復(fù)雜性。以這種方式可以避免在內(nèi)循環(huán)(方框356—360)中建立可變長度循環(huán)結(jié)構(gòu)所需的開銷。每一Y17(n)值在計算后被傳送至最小化處理器334。
方框352測試樣品指數(shù)n。如果n等于基音子幀長度LP,則完成了初始卷積,流程進(jìn)行到方框362。如果在方框352中,n小于基音子幀長度,則流程進(jìn)行到方框356。方框356測試指數(shù)m。如果m等于濾波器脈沖響應(yīng)長度(在本實施例中為20),則完成了當(dāng)前迭代,流程進(jìn)行到方框354,此處m被設(shè)置為0,n遞增1。流程隨后回到方框352。如果在方框356處m小于脈沖響應(yīng)長度,則流程進(jìn)行到360,此處累計部分和。流程繼續(xù)進(jìn)行到358處,指數(shù)m遞增1,并且流程再進(jìn)行到方框356。
由方框352至360形成的初始卷積循環(huán)中進(jìn)行的運(yùn)算是在DSP內(nèi)核4中進(jìn)行的,該處配置了恰當(dāng)?shù)牧魉€,使得可以如方框360所示每一時鐘周期完成乘積的累加。下面的運(yùn)算描述在一個時鐘周期中在DSP內(nèi)核4中發(fā)生的運(yùn)算流水線。濾波器響應(yīng)值h(m+1)是從RAM A104取出的,并被提供至AREG130。共振峰殘留值p(n-17)是從RAM B122取出的,并被提供至BREG134。C0REG164中的部分和Y17(n+m-1)通過多路復(fù)用器168和180被提供至RAMC182。部分和Y17(n+m+1)是由RAM C182通過多路復(fù)用器158提供至DRE G156。ARE G130和BREG134中的值h(m)和p(n-17)分別被提供至乘法器132。乘法器132的輸出通過多路復(fù)用器138被提供至桶形移位器140,按照通過多路復(fù)用器149由SREG1-36提供的比例值使該值歸一化。SRE G136中的值是使p(n-17)序列歸一化所需的值。因為在桶形移位器140中進(jìn)行歸一化之前保持了乘積的精確性,所以將歸一化因子作用于p(n-17)和h(m)的乘積獲取了使p(n-17)歸一化的相同效果。歸一化值被提供至加法器146的第一輸出。部分和Y17(n+m)是通過多路復(fù)用器154、禁止的反相器152和桶形移位器150由DREG156提供至加法器146的第二輸入的。加法器146的輸出是通過多路復(fù)用器148提供至C0REG164的。當(dāng)指數(shù)n達(dá)到方框352中所允許的最大值時,就完成了初始卷積,RAM C182中出現(xiàn)的部分和現(xiàn)在就是卷積的最后結(jié)果。
當(dāng)初始卷積完成時,流程進(jìn)行到方框362,對余下的基音滯后值的計算進(jìn)行遞歸卷積。
在方框362中,樣品指數(shù)n被設(shè)定為零,基音滯后指數(shù)L遞增1。流程進(jìn)行到方框364。方框364測試L。如果L大于最大基音滯后值(在本實施例中為143),則流程進(jìn)行到方框366,基音搜尋運(yùn)算終止。如果L小于或等于143,則流程進(jìn)行到方框368。方框368控制前述的乒乓過程。在方框368中,測試L,以判斷它是偶數(shù)還是奇數(shù)。如果L是偶數(shù),則流程進(jìn)行到方框378(該運(yùn)算稱為第一種情況)。如果L為奇數(shù),則流程進(jìn)行到方框370(該運(yùn)算稱為第二種情況)。
第一種情況(基音滯后L為偶數(shù))在方框378中,YL(0)按照等式(39)進(jìn)行計算。地址單元A102將一地址值提供至RAM A104,其響應(yīng)于此通過多路復(fù)用器108將h(0)提供至ARE G130。在同一時鐘周期中,地址單元B120提供一地址值至RAM B122,其響應(yīng)于此通過多路復(fù)用器116將P(—L)提供至BRE G134。在下一時鐘周期中,AREG130提供h(0)、BREG134提供P(—L)至乘法器132,在此兩值相乘,其積通過多路復(fù)用器138提供至桶形移位器140。桶形移位器140按照SRE G136提供的值,通過多路復(fù)用器149,使該乘積歸一化,并將歸一化的乘積提供至加法器146的第一輸入。加法器146的第二輸入通過多路復(fù)用器154、禁止反相元件152和桶形移位器152被置零。加法器146的輸出通過多路復(fù)用器148而被提供至C0RE G164。在同一時鐘周期中,YL-1(0)和h(1)是分別從RAM B122和RAM A104取出的,并通過多路復(fù)用器158和108提供至DREG156和AREG130。
在方框380中,合成話音取樣指數(shù)n遞增1。在控制方框382中,如果合成話音取樣指數(shù)n小于20,則流程進(jìn)行到方框384。
在方框384中,按照等式(40),每一時鐘周期計算一個新的YL(n)值。使YL-1(n-1)和h(n)的值初始化而在方框384的第一次迭代之前所需的恰當(dāng)設(shè)置是在上述方框378中獲得的。為了存儲最終值YL(19),在方框384的最后迭代以后還需要有恰當(dāng)?shù)那宄?br>
在方框384的第一次迭代中,方框378內(nèi)計算的YL(0)是位于C0REG164內(nèi)的。C0REG164以從地址單元C186提供至RAMC182的地址值通過多路復(fù)用器168和180向RAM C182提供YL(0)。在被提供至RAC182的同時,YL(0)被提供至最小化處理器334。
在方框384中,在一個時鐘周期中進(jìn)行下述運(yùn)算。按照由地址單元B120提供的一個地址,通過多路復(fù)用器116和158,由RAMB122將YL-1)(n)值提供至DREG156。按照地址單元A102提供的地址,通過多路復(fù)用器108,由RAM A104將脈沖響應(yīng)值h(n+1)提供至AREG130。DREG156通過多路復(fù)用器154、禁止的反相器元件152和桶形移位器150,將YL-1(n-1)提供至加法器146的第一輸入。AREG130提供h(n)、BREG134提供P(—L)至乘法器132,在此兩值相乘,其乘積通過多路復(fù)用器138由乘法器132提供至桶形移位器140。桶形移位器140按照SREG136提供的值,對該乘積歸一化,并將該歸一化的乘積值提供至加法器146的第二輸入。加法器146的輸出通過多路復(fù)用器148提供至C0REG164。前面迭代中計算的C0REG164值通過多路復(fù)用器168和180被提供至用來存儲的RAM C182以及最小化處理器334。
在方框380中,合成話音樣品指數(shù)n遞增1。在控制方框382中,如果合成的話音取樣指數(shù)n等于20,則最終迭代中計算的YL(19)在流程進(jìn)行到方框390之前通過多路復(fù)用器168和124被提供至RAM B122,用來存儲在一循環(huán)緩沖器內(nèi),YL(19)還被提供至最小化處理器334。
第一種情況結(jié)束第二種情況(基音滯后L為奇數(shù)值)在方框370中,按照等式(39)計算YL(0)。地址單元A102將一地址值提供至RAM A104,其響應(yīng)于此通過多路復(fù)用器108將h(0)提供至ARE G130。在同一時鐘周期中,地址單元B120將一地址值提供至RAM B122,其響應(yīng)于此通過多路復(fù)用器116將P(—L)提供至BRE G134。在下一時鐘周期中,AREG130提供h(0)、BREG134提供P(—L)至乘法器132,在此兩值相乘,其乘積通過多路復(fù)用器138提供至桶形移位器140。桶形移位器140按照SREG136提供的值,通過多路復(fù)用器149使該乘積歸一化,并將該歸一化的乘積提供至加法器146的第一輸入。加法器146的第二輸入通過多路復(fù)用器154、禁止的反相元件152以及桶形移位器152而被置零。加法器146的輸出通過多路復(fù)用器148被提供至C0REG164。在同一時鐘周期中,YL-1(0)和h(1)分別是從RAM C和RAM A104取出的,并通過多路復(fù)用器158和108被提供至DREG156和AREG130。
在方框372中,合成的話音取樣指數(shù)n遞增1。在控制方框374中,如果合成的話音取樣指數(shù)n小于20,則流程進(jìn)行到方框376。
在方框376中,按照等式(40)按每一時鐘周期計算一個新的YL(n)值。為了使YL-1(n-1)和h(n)的值初始化,如上所述在方框370中獲取在方框376的第一次迭代之前所需的恰當(dāng)設(shè)置。為了存儲YL(19)的最終值,在方框376的最后迭代后還需要有恰當(dāng)?shù)那宄?br>
在方框376的第一次迭代中,方框370中計算的YL(0)是出現(xiàn)在C0REG164中的。C0REG164以從地址單元B120提供至RAMB122的地址值通過多路復(fù)用器168,提供YL(0)至用作存儲的RAM B122。在提供至RAM B122的同時,YL(0)還被提供至最小化處理器334。
在方框376中,在一個循環(huán)中進(jìn)行下述運(yùn)算。按照地址單元C186提供的地址,通過多路復(fù)用器158,由RAM C182將YL-1(n)值提供至DRE G156。按照地址單元A102提供的地址,通過多路復(fù)用器108,由RAM A104將脈沖響應(yīng)值h(n+1)提供至AREG130。DRE G156通過多路復(fù)用器154、禁止的反相器元件152以及桶形移位器150,將YL-1(n—1)提供至加法器146的第一輸入。ARE G130提供h(n)、BREG134提供P(—L)至乘法器132,在此兩值相乘,其乘積通過多路復(fù)用器138由乘法器132提供至桶形移位器140。桶形移位器140按照SRE G136提供的值,使該乘積值歸一化,并將該歸一化的乘積值提供至加法器146的第二輸入。加法器146的輸出通過多路復(fù)用器148的第二輸入。加法器146的輸出通過多路復(fù)用器148被提供至C0REG164。先前迭代中計算的C0REG164中的值通過多路復(fù)用器168和124被提供至用來存儲的RAM B122以及最小化處理器334。
在方框372中,合成的話音取樣指數(shù)n遞增1。在控制方框374中,如果合成的話音取樣指數(shù)n等于20,則最終迭代中計算的YL(19)在流程進(jìn)行到方框390之前通過多路復(fù)用器168和124被提供至RAM B122中,用來存儲在RAM B122中的循環(huán)緩沖器內(nèi),YL(19)還被提供至最小化處理器334。
第二種情況結(jié)束在方框390的第一次迭代之前,YL-1(19)是從RAM B122內(nèi)的循環(huán)緩沖器內(nèi)取出的,并被裝入BREG134內(nèi),YL-1(19)隨后從BREG134移送至C0RE G164。隨后,YL-1(20)被從RAM B122內(nèi)的循環(huán)緩沖器中取出并被裝入BREG134內(nèi)。
在方框390中,按照等式(41),按每一時鐘循環(huán)計算一個新的YL(n)。在一個時鐘周期中進(jìn)行下述運(yùn)算。YL-1(n-2)由BREG134提供至C0REG164。YL-1(n-3)被從RAM B122中的循環(huán)緩沖器內(nèi)取出,并被裝入BRE G134。C0REG164中的YL-1(n-1)被提供至最小化處理器334。在方框390的最后迭代以后,在RAM B122中循環(huán)緩沖器中消除YL-1(LP-2)。通過按每一基音滯后在循環(huán)緩沖器內(nèi)加入一元素,而按每一基音滯后從循環(huán)緩沖器去除一元素,循環(huán)緩沖器的大小被保持在LP-19。循環(huán)緩沖器的實施是通過地址單元B120中的特殊地址寄存器來完成的,它支配環(huán)繞點(地址取模操作),從而可以以循環(huán)方式自動對順序存儲器進(jìn)行尋址。
在方框386中,合成的話音取樣指數(shù)n遞增1。在控制方框388中,如果合成的話音取樣指數(shù)n小于LP,則流程再次進(jìn)行到方框390。如果合成的話音取樣指數(shù)n等于LP,則對于當(dāng)前基音滯后值已經(jīng)計算了所有的YL(n)值,并且流程回到方框362。
本合成的話音取樣值YL(n)的計算之前,長度為LP的感性加權(quán)話音取樣值序列被提供至最小化處理器334。正如前面描述過的那樣,在初始遞歸卷積計算期間,滯后值為L=17至L=143的LP長度的合成話音取樣值序列YL(n)被提供至最小化處理器334。合成的話音取樣值被順序地提供至最小化處理器334。最小化處理器334計算每一合成的話音取樣序列YL(n)的自相關(guān),每一合成的話音取樣序列YL(n)之間的互相關(guān),以及感性加權(quán)話音取樣序列XP(n)。根據(jù)這些相關(guān)值,最小化處理器334計算每一合成話音取樣序列YL(n)和感性加權(quán)話音取樣序列XP(n)之間的MSE相對值。對于每一基音滯后L,計算合成話音取樣序列的所有可能基音增益值b的MSE。最小化處理器334對所有基音滯后值L以及所有可能的基音增益值b求得最小MSE,并通過保持當(dāng)前基音滯后L和當(dāng)基音增益b來保持最小MSE值。相應(yīng)于最小MSE的基音滯后估算 和基音調(diào)增益估算指數(shù)也由最小化處理器334來保持。每一新的MSE值與保持在最小化處理器334內(nèi)的最小MSE比較。如果該新的MSE小于最小MSE,則該最小MSE被該新的MSE值取代,基音滯后估算 和基音增益估算指數(shù)被更新,以反映該新的最小MSE。保持在最小化處理器334內(nèi)的最小MSE和相應(yīng)的基音滯后估算 以及基音增益估算指數(shù)用基音子幀期間計算的第一負(fù)MSE值,在每一基音子幀被初始化。在所有的基音滯后值L以及所有的基音增益值b用完以后,基音滯后估算 以及基音增益估算指數(shù)將分別對于當(dāng)前基音子幀的最佳基音滯后指數(shù)和最佳基音增益指數(shù)。最小化處理器334將最佳基音滯后 以及最佳基音增益指數(shù)提供至DSP內(nèi)核4。最佳基音滯后 以及最佳基音增益指數(shù)是由感性加權(quán)的話音取樣值XP(n)和加權(quán)的合成話音取樣值YL(n)之間的最小MSE產(chǎn)生的。該MSE是如下式(44)至(46)所述,為基音滯后L和基音增益b的函數(shù)MSE(L1b)=Σn=0LP-1(XP(n)-bYL(n))2----(44)]]>=Σn=0LP-1(XP(n))2-2bΣn=0LP-1(XP(n)YL(n))+b2Σn=0LP-1(YL(n))2----(45)]]>=EXPXP-2bEXPYL+b2EYLYL(46)EXPXP是感性加權(quán)的話音取樣值XP(n)的自相關(guān)。EXPYY是感性加權(quán)的話音取樣值XP(n)和加權(quán)的合成話音取樣值YL(n)的互相關(guān)。EYLYL是加權(quán)的合成話音取樣YL(n)的自相關(guān)。
感性加權(quán)的話音高取樣值XP(n)的自相關(guān)EXPXP不是音調(diào)增益b的函數(shù)。EXPXP在每一基音子幀期間保持常數(shù),所以不會影響最佳基音滯后和最佳基音增益的選擇。等式(44)至(46)對基音滯后L和基音增益b的最小化等效于下述等式(47)的最小化MSE(L,b)=-2bEXPYL+b2EYLYL(47)最小化處理器334計算加權(quán)的合成話音取樣序列YL(n)的自相關(guān)EYLYL,以及感性的加權(quán)話音取樣值序列XP(n)和加權(quán)的合成話音取樣值序列YL(n)之間的互相關(guān)EXPYL。對于每一相關(guān)對(EXPYL,EYLYL),最小化處理器334對于一組基音增益b的值,按照上述等式(47),計算相對MSE。相關(guān)EXPYL和EYLYL的計算是同時在最小化處理器334內(nèi)進(jìn)行的計算相對MSE值;并在對于基音滯后L,作出有關(guān)MSE最小化的判定的同時對于基音滯后L+1,計算其相關(guān)值。
圖6a和6b描述的是最小化處理器334的典型實施例。感性加權(quán)的話音取樣值XP(n)是按照控制器220提供的地址由DSP內(nèi)核4提供至存鎖器210而存儲在RAM×212內(nèi)的。以間隔0.25而從b=0.25變化列b=2.0的標(biāo)稱基音增益值-2b通過多路復(fù)用器260由DSP內(nèi)核4提供,用來分別存儲在鎖存器264、268、272、276、280、284、288以及292內(nèi)。相應(yīng)的標(biāo)稱基音增益b2是通過多路復(fù)用器由DSP內(nèi)核4來提供的,用來分別存儲在鎖存器262、266、270、274、278、282、286和290。多路復(fù)用器260將這些值直接提供給鎖存器262。鎖存器262將這些值直接提供給鎖存器264。鎖存器276通過多路復(fù)用器294將值提供給鎖存器278。鎖存器290將這些值直接提供至鎖存器292,等等。通過鎖存器262至292以及多路復(fù)用器294的移位值使得這些值可以通過多路復(fù)用器260提供至循環(huán)緩沖器259內(nèi)的所有鎖存器。在存儲了感性加權(quán)的話音取樣值XP(n)以及-2b值和b2值以后,加權(quán)的合成話音取樣值序列YL(n)被提供至鎖存器210。加權(quán)的合成話音取樣值YL(n)由鎖存器210被提供至乘法器216的兩個輸入端,產(chǎn)生加權(quán)合成話音取樣值的平方(YL(n))2。鎖存器210還將加權(quán)合成話音取樣值YL(n)提供至乘法器218的第一輸入。RAM X212通過鎖存器214將感性加權(quán)話音取樣值XP(n)提供至乘法器212的第二輸入。乘法器218計算乘積值XP(n)YL(n)。分別由乘法器216和218按每一周期計算新的平方(YL(n))2和新的乘積XP(n)YL(n)。對于每一基音滯后L,取樣值指數(shù)n從0變化到LP-1。
加權(quán)的合成話音取樣值的平方(YL(n))2被提供至累加器221。乘積值X(n)被提供至累加器231。累加器221計算每一基音滯后L的LP個平方和。累加器231計算每一基音滯后L的LP個乘積值的和。
在每一新的基音滯后之前,通過多路復(fù)用器224將鎖存器226置零。累加器221隨后計算當(dāng)前基音滯后L的自相關(guān)EYLYL。在累加器221中,平方值(YL(n))2被提供至加法器222的第一輸入。其總和由鎖存器226提供至加法器222的第二輸入。新計算的總和由加法器222通過多路復(fù)用器224提供至鎖存器226,用于存儲。在對于基音滯后L的所有LP值累加以后,自相關(guān)EYLYL被提供至鎖存器228,用作存儲。
在每一新的基音滯后之前,通過多路復(fù)用器234,使鎖存器236置零。隨后對于當(dāng)前基音滯后L,累加器231計算互相關(guān)EXPYL。在累加器231中,乘積值XP(n)YL(n)被提供至加法器232的第一輸入。其總和由鎖存器236提供至加法器232的第二輸入。新計算的總和通過多路復(fù)用器234,由加法器232提供至鎖存器236,用作存儲。在對基音滯后L計算了所有LP個值以后,互相關(guān)EXPYL被提供至鎖存器238,供存儲。
隨后按照下述兩個周期的過程計算由等式(47)描述的MSE。
在兩個周期的第一個中,鎖存器238通過多路復(fù)用器230將感性加權(quán)的話音取樣值和加權(quán)的合成話音取樣值之間的互相關(guān)EXPYL提供至乘法器240的第一輸入。循環(huán)緩沖器259通過多路復(fù)用器296將標(biāo)稱的基音增益值-2b提供至乘法器240的第二輸入。乘積-2bEXPYL由乘法器240提供至加法器242的第一輸入。加法器242的第二輸入通過多路復(fù)用器246置零。加法器242的輸出被提供至鎖存器244,用作存儲。循環(huán)緩沖器259的鎖存器262至292中的值通過多路復(fù)用器294由提供鎖存器276的輸出至鎖存器278,并通過多路復(fù)用器260將鎖存器292的輸出提供至鎖存器262來循環(huán)移位。循環(huán)以后,鎖存器262、264、266、268、270、272、276、278、280、282、284、286、288、290和292分別含有先前包含在鎖存器292、262、264、266、268、270、272、274、276、278、280、282、284、286、288、290中的值。在基音搜尋中,循環(huán)緩沖器是由鎖存器262至292以及循環(huán)緩沖器259的多路復(fù)用器260和294組成的。通過循環(huán)移位循環(huán)緩沖器259中的值,鎖存器292分別在第一和第二周期中提供-2b和b2。
在兩個周期的第二個中,鎖存器228通過多路復(fù)用器230將加權(quán)的合成話音取樣值的自相關(guān)EYLYL提供給乘法器240的第一輸入。循環(huán)緩沖器259通過多路復(fù)用器296將標(biāo)度的基音增益值b2提供至乘法器240的第二輸入。其乘積b2EYLYL由乘法器240提供至加法器242的第一輸入。通過多路復(fù)用器246將鎖存器244的輸出-2bEXPYL提供給加法器242的第二輸入。加法器242將-2bEXPYL+b2EYLYL提供給鎖存器244,用作存儲。循環(huán)存儲器259的鎖存器262至292中的值隨后如上所述循環(huán)。
上述這兩個循環(huán)過程對標(biāo)稱的基音增益值的所有八對(-2b,b2)重復(fù)。在當(dāng)前MSE值、-2bEXPYL+b2EYLYL的計算以后的兩個周期中,用一對新的-2b和b2值計算一個新的MSE值。在鎖存器224用新的MSE值更新以前,對當(dāng)前基音子幀將當(dāng)前MSE值與鎖存器250內(nèi)存儲的當(dāng)前最小MSE比較。當(dāng)前MSE值-2bEXPYL+b2EYLYL由鎖存器244提供至減法器248的正輸入端。鎖存器250將當(dāng)前最小MSE值提供至減法器248的負(fù)輸入端??刂破?20監(jiān)測減法器248輸出的差值結(jié)果。如果差值為負(fù)數(shù),對于當(dāng)前基音子幀來說,該當(dāng)前MSE值是一新的最小MSE,并被存儲在鎖存器250內(nèi),在控制器220中更新相應(yīng)的基音滯后估算 和基音增益估算指數(shù)。如果差值是非負(fù)值,則當(dāng)前MSE值被忽略。
在每一基音子幀之前,DSP內(nèi)核4發(fā)出一指令至最小化處理器334,通知控制器220將有一個新的基音子幀。在接收到該指令以后,在控制器220中將當(dāng)前基音滯后和當(dāng)前基音增益指數(shù)設(shè)置為0。在每一新的加權(quán)合成話音取樣值序列被提供至最小化處理器334之前,DSP內(nèi)核4發(fā)出一多指令至最小化處理器334,通知控制器220將有一個新的加權(quán)合成話音取樣值序列。在接收到該指令以后,控制器220使當(dāng)前基音滯后和當(dāng)前基音增益的指數(shù)遞增1,對應(yīng)于基音滯后增量為1而基音增益增量為0.25。當(dāng)加權(quán)的合成話音取樣值的第一序列被提供至最小化處理器334時,當(dāng)前基音調(diào)滯后和當(dāng)前基音增益指數(shù)將等于1,對應(yīng)于基音滯后L=17和歸一化的基音增益b=0.25。同樣,在每一基音子幀之前,當(dāng)前基音滯后估算 和當(dāng)前基音增益估算指數(shù)被置于零,表示一無效基音滯后和基音增益。在每一基音子幀期間,控制器220將檢測鎖存器244中的第一負(fù)MSE。這一值被存儲在鎖存器250內(nèi),并且相應(yīng)的基音滯后估算 和基音增益估算指數(shù)在控制器220內(nèi)更新。這樣做是為了按每一基音子幀使鎖存器250內(nèi)的最小MAS被始化。如果在該基音子幀內(nèi)沒有產(chǎn)生負(fù)MSE值,則在該子幀結(jié)尾處,基音滯后估算 和基音增益估算指數(shù)為零。這些估算值將由控制器220提供至DSP內(nèi)核4。如果DSP內(nèi)核4接收到一個無效基音滯后估算值,最佳基音增益被設(shè)定為零=0,對應(yīng)于零MSE。當(dāng)基音濾波器的基音增益為零時,基音滯后沒有結(jié)果。如果DSP內(nèi)核4接收到一個有效基音滯后估算值 ,則該值被用作最佳基音滯后。對于基音增益估算指數(shù)1至8,使用的最佳基音增益將分別是0.25,0.5,0.75,1.0,1.25,1.5,1.75和2.0。
在基音搜尋中,等式(47)的MSE函數(shù)MSE(L,b)的性質(zhì)允許實現(xiàn)計算節(jié)約。當(dāng)判定在當(dāng)前基音滯后中計算的其余MSE值不會產(chǎn)生小于存儲在鎖存器250內(nèi)當(dāng)前最小MSE的一個MSE值時,就終斷當(dāng)前基音滯后的其余MSE計算。本實施例中,在最小化處理器334內(nèi)應(yīng)用了三種基音搜尋中節(jié)約計算的技術(shù)。MSE函數(shù)MSE(L,b)是b的二次函數(shù)。對于每一基音滯后值L構(gòu)成一個二次方程。所有這些二次方程通過原點b=0和MSE(L,b)=0?;粼鲆嬷礲=0包括在該組可能的增益值內(nèi),盡管該值不是在這基音搜尋運(yùn)算中明顯搜尋的。
第一種節(jié)約計算的方法包括當(dāng)EXPYL為負(fù)值時在當(dāng)前基音滯后的基音搜尋中去掉MSE值的計算。所有的基音增益值為正值,確保了零為每一子幀最小MSE的上限。EXPYL的負(fù)值將導(dǎo)致正的MSE值,并因此為次最佳(Sub—optimal)的。
第二種節(jié)約計算的方法包括根據(jù)MSE函數(shù)的二次特性,在當(dāng)前基音滯后的基音搜尋過程中省去其余MSE值的計算。MSE函數(shù)MSE(L,b)是對單調(diào)增加的基音增益值計算的。當(dāng)為當(dāng)前基音滯后計算出一正的MSE值時,省去為當(dāng)前基音滯后所做的所有其余MSE計算,因為所有其余的MSE值為正值。
第三種節(jié)約計算的方法包含根據(jù)MSE函數(shù)的二次性質(zhì),在當(dāng)前基音滯后的基音搜尋過程中省去其余MSE值的計算。MSE函數(shù)MSE(L,b)是對單調(diào)遞增的基音增益值計算的。當(dāng)在當(dāng)前基音滯后內(nèi),某一MSE值計算出來并未被判定為新的最小MSE,并且在此之前某一MSE值已被判定為新的最小MSE的時候,就中斷當(dāng)前基音滯后內(nèi)的所有其余MSE計算,因為剩余的MSE值不能小于新的最小MSE。上述三種節(jié)約計算的方法給出了最小化處理器334內(nèi)的有效的節(jié)約能源的方法。
在方框76內(nèi),基音值被量化。對于每一基音子幀,選擇的參數(shù)和 被轉(zhuǎn)換成傳輸編碼PGAIN和PLAG。最佳基音增益指數(shù)是一個1和8(含1和8)之間的整數(shù)。最佳基音滯后 是一個1和127(含1和127)之間的整數(shù)值。
PLAG的值依賴于和 。如果=0,則PLAG=0。否則PLAG 。所以,PLAG用七位來表示。如果=0,則PGAIN=0。否則PGAIN=-1。所以PGAIN用三位來表示。注意=0和=1都使PGAIN=0。這兩種情況是用PLAG的值來區(qū)分的,它在第一種情況下為零,在第二種情況中為非零。
除了八分之一速率以外,每一基音子幀包含兩個碼書子幀。對于每一個碼書子幀,最佳碼書指數(shù)和最佳碼書增益 是在方框80的碼書搜尋過程中確定的。對于八分之一速率,只決定一個碼書指數(shù)和一個碼書增益,碼書指數(shù)在傳輸前放棄。
參見圖9,在本實施例中,碼書400提供的激勵碼書(excitationcodebook)是由2M個碼向量組成的,這里M=7。
本實施例中,循環(huán)碼書是由下表IV中給出的128個值組成的。這些值是帶有符號的十進(jìn)制表示,并存儲在ROME114內(nèi)。
表IV
</P><p>用來選擇碼書向量指數(shù)I和碼書增益G的方法是一種類似于用作基音搜尋過程的合成-分析方法。選擇的碼書指數(shù)I和選擇的碼書增益 是在加權(quán)的合成話音YL(n)和感性的加權(quán)話音XC(n)(去除了基音估算值)之間,使等式(50)的均方差MSE(I,G)最小化的和 的允許值。參見圖9,加權(quán)話音XC(n)是如下所述產(chǎn)生的。這里用當(dāng)前子幀的基音搜尋中產(chǎn)生的同一感性加權(quán)話音X(n)。由于在八分之一速率時不存在基音搜尋,所以,X(n)是在該速率下的碼書搜尋中產(chǎn)生的。X(n)被提供至加法器410的第一輸入。采用在當(dāng)前子幀的基音搜尋中抽取的最佳基音滯后 和最佳基音增益和基音濾波器506的當(dāng)前狀態(tài)存儲值在ZIR元件406中計算基音合成濾波器506的ZIRPzir(n)。ZIR隨后通過加權(quán)合成濾波器408,從加法器410中的X(n)內(nèi)減去輸出Pazir(n)。加法器410的輸出XC(n)被歸一化,并被提供至最小化處理器412。
碼書向量CI(n)是由碼書400響應(yīng)于碼書指數(shù)I按照等式53來提供的。在本實施例中,采用當(dāng)前基音子幀的基音搜尋過程中已經(jīng)確定的加權(quán)合成濾波器404的脈沖響應(yīng)h(n)。然而在八分之一速率的情況下,h(n)是在加權(quán)合成濾波器404中的碼書搜尋中計算的。本實施例中,脈沖響應(yīng)h(n)被截取至前20個取樣值。
由于碼書的遞歸特性,在碼書搜尋中采用與基音搜尋中類似的遞歸卷積過程。卷積是用下述等式(52)來計算的。YI(n)=Σi=019h(i)CI(n-i),0≤I<128,0≤n<LC----(52)]]>指數(shù)I的碼書向量CI(n)是用下式(53)來定義的。 全卷積是按照等式54,對指數(shù)I=0來進(jìn)行的。輸出Y0(n)被存儲在RAM C182中。對于其余的指數(shù)I=1至I=127,卷積是如下式55—57以遞歸方式進(jìn)行的。Y0(n)=h(n)*C0(n)=Σi=019h(i)C0(n-i),0≤n<LC---(54)]]> 如同基音搜尋中那樣,遞歸卷積的碼書搜尋的性能是由三重分區(qū)的RAM和DSP內(nèi)核4中的ROM E114來最佳化的。
因此可以計算等式(56)中的卷積值,并按每一時鐘周期產(chǎn)生一個結(jié)果。例如,在一個周期中,計算Y18(10),存儲Y18(9),取得Y17(10),并取得h(10)。所以,上述等式(56)可以按每一時鐘周期產(chǎn)生一個結(jié)果。對于上述等式(57)也可以按每一時鐘周期產(chǎn)生一個結(jié)果。例如,在一個時鐘周期中,計算Y18(24),取得Y17(24),并存儲Y18(23)。
能夠進(jìn)行等式(56)和(57)的運(yùn)算,而無需在每一碼書指數(shù)更新之間將前面計算的加權(quán)合成話音取樣值YI-1(n-1)移送至同一源RAM,需要稱為乒乓過程的存儲策略和硬件能力。其中,在每一指數(shù)更新之間交換的源和目的RAM。當(dāng)計算偶數(shù)碼書數(shù)值的YI(n)時,從三個RAM中的第一個取得YI-1(n-1)值,其結(jié)果被存儲在三個RAM中的第二個內(nèi)。當(dāng)計算奇數(shù)碼書指數(shù)值的YI(n)時,從三個RAM的第二個內(nèi)取得YI-1(n-1)值,其結(jié)果存儲在三個RAM中的第一個內(nèi)。這一乒乓過程無需在每一碼書指數(shù)更新期間將先前計算的YI-1(n-1)值移送到同一RAM。
圖10是本實施例中碼書搜尋的遞歸卷積部分(初始非遞歸和遞歸卷積)執(zhí)行的流程圖。方框414中,碼書指數(shù)I被初始化至其最低值,本實施例中,該最低值為0。樣本號n和指數(shù)m被設(shè)定為零,Y0(n)的值被設(shè)定為零。方框416至424構(gòu)成以非遞歸方式計算的初始卷積循環(huán)。初始卷積的計算(此處I=0)是按等式(58)來進(jìn)行的。Y0(n)=Σi-019h(i)C0(n-i)0≤n<LC----(58)]]>初始卷積的計算采用固定長度的循環(huán),來減小計算的復(fù)雜性。采用這種方式,就避免了在等式(58)內(nèi)循環(huán)(方框320—324)中建立可變長度循環(huán)結(jié)構(gòu)所需的開銷。每一Y0(n)在其計算以后被傳送至最小化處理器412。
方框416測試樣本指數(shù)n。如果n等于碼書子幀長度LC,則第一卷積結(jié)束,流程進(jìn)行到方框426。如果在方框416中,n小于碼書子幀長度,則流程繼續(xù)進(jìn)行到方框420。方框420測試指數(shù)m。如果m等于濾波器脈沖響應(yīng)長度(本實施例中為20),則當(dāng)前迭代結(jié)束,流程進(jìn)行到方框418,這時m被設(shè)定為0,n遞增1。流程隨后回到方框416。如果在方框420中,m小于濾器脈沖響應(yīng)長度20,則程序進(jìn)行到方框424,累計部分和。流程進(jìn)行到方框422,此處m遞增1,流程進(jìn)行到方框420。
在DSP內(nèi)核4中,進(jìn)行由方框414至424形成的初始卷積循環(huán)中包含的運(yùn)算,其中給出恰當(dāng)?shù)牧魉€,使得可以如方框424中所示進(jìn)行乘積的累加。下面的運(yùn)算描述了一個時鐘周期中出現(xiàn)在DSP內(nèi)核4中的計算流水線。濾波器響應(yīng)值h(m+1)從RAM A104中取出,并被提供至AREG130。碼書向量值CI(n)從ROME114中取出,并被提供至BREG134。C0REG164內(nèi)的部分和Y0(n+m-1)通過多路復(fù)用器168和180被提供至RAM C182。部分積Y0(n+m+1)由RAM C182提供至DREG156。AREG130和BRE G134內(nèi)的值h(m)和CI(n)分別被提供至乘法器132。乘法器132的輸出通過多路復(fù)用器138和禁止的桶形移位器140提供至加法器146的第一輸入。部分和Y0(n+m)由DREG156通過多路復(fù)用器154、禁止的反相器152和禁止的桶形移位器150提供至加法器146的第二輸入。本實施例中,中心剪除的高斯碼書CI(n)大多數(shù)為零值。利用這一情況作為節(jié)能特性,DSP內(nèi)核4首先檢驗在方框424中,碼書向量是否為零。如果為零,則跳過上述通常在方框424內(nèi)進(jìn)行的相乘和相加步驟。這一過程清除了略占80%時間的相乘和相加運(yùn)算,從而節(jié)省了能源。加法器146的輸出通過多路復(fù)用器148被提供至C0REG164。C0REG中的該值隨后通過多路復(fù)用器168和180被提供至RAM C182。當(dāng)指數(shù)n達(dá)到方框416中的最大允許值時,初始卷積結(jié)束,RAM C182中的部分和現(xiàn)在就是卷積的結(jié)果。
當(dāng)初始卷積結(jié)束時,流程進(jìn)行到方框426,對剩余碼書指數(shù)值進(jìn)行遞歸卷積的計算。
在方框426中,樣本指數(shù)n被設(shè)定為零,碼書指數(shù)I遞增1。流程進(jìn)行到方框428。方框428測試I。如果I大于或等于128(在本實施例中128為最大碼書指數(shù)值),則流程進(jìn)行到方框430,在此碼書搜尋運(yùn)算終止。如果I小于或等于127,則流程進(jìn)行到方框432。方框432控制前面描述的乒乓運(yùn)算過程。在方框432,測試I,來確定它是偶數(shù)還是奇數(shù)。如果I是偶數(shù),則流程進(jìn)行到方框442(第一種情況所描述的運(yùn)算)。如果I為奇數(shù),則流程進(jìn)行到方框434(第二種情況描述的運(yùn)算)。第一種情況(碼書指數(shù)I為偶數(shù)值)在方框442中,按照等式55計算YI(0)。地址單元A102將一地址值提供至RAM A104,它響應(yīng)于此通過多路復(fù)用器108將h(0)提供至AREG130。在同一時鐘周期中,地址單元E112將一地址值提供至ROM E114,它響應(yīng)于此通過多路復(fù)用器116將CI(0)提供至BREG134。在下一個周期中,AREG130提供h(0)、BREG134提供CI(0)至乘法器132,在此,兩值相乘,其積通過多路復(fù)用器138以及禁止的桶形移位器140提供至加法器146的第一輸入。加法器146的第二輸入通過多路復(fù)用器154、禁止的反相器元件152以及桶形移位器152被置零。加法器146的輸出通過多路復(fù)用器148提供至C0REG164。同一時鐘周期內(nèi),YI-1和h(1)被分別從RAM B122和RAM-A104讀取,并通過多路復(fù)用器158和100被提供至DREG156和AREG130。
在方框444內(nèi),合成的話音樣品指數(shù)n遞增1。在控制方框446內(nèi),如果合成的話音樣品指數(shù)n小于20,則流程進(jìn)行到方框448。
在方框448中,按照等式(56)每一時鐘周期計算一個新的YI(n)。為了使YI-1(n-1)和h(n)的值初始化而在方框448的第一次疊代之前所需的恰當(dāng)設(shè)置是如上所述在方框442內(nèi)實現(xiàn)的。為了存儲YI(19)的最終值,在方框448的最后迭代后還需要恰當(dāng)?shù)那宄?br>
在方框448的第一次迭代中,方框442中計算的YI(0)出現(xiàn)在C0REG164內(nèi)。C0REG164通過多路復(fù)用器168和180,以從地址單元C186提供至RAM C182的地址值向用作存儲的RAM C182提供YI(0),YI(0)在被提供至RAM C182的同時還被提供至最小化處理器412。
在方框448內(nèi),在一個時鐘周期中進(jìn)行下述運(yùn)算。按照地址單元B120提供的地址,通過多路復(fù)用器116和158,由RAM B122將YI-1(n)提供至DRE G156。按照地址單元A102提供的地址,通過多路復(fù)用器108,由RAM A104將脈沖響應(yīng)值提供至AREG130。DREG156通過多路復(fù)用器154、禁止的反相器元件152以及桶形移位器150將YI-1(n-1)提供至加法器146的第一輸入。AREG130提供h(n)、BREG134提供CI(n)提供至乘法器132,在此兩值相乘,其乘積由乘法器132通過多路復(fù)用器138、通過禁止的桶形移位器140提供至加法器146的第二輸入。加法器146的輸出通過多路復(fù)用器148提供至C0REG164。C0REG164中在前一迭代中計算的值通過多路復(fù)用器168和180被提供至用作存儲的RAM C182以及最小化處理器412。
在控制方框446中,如果合成的話音樣品指數(shù)n等于20,則流程在進(jìn)行到方框454之前,最終迭代中計算的YI(19)通過多路復(fù)用器168和124被提供至RAM B122,用來存儲在循環(huán)緩沖器以及最小化處理器412內(nèi)。
第一種情況結(jié)束第二種情況(碼書指數(shù)I為奇數(shù)值)在方框434中,按照等式55計算II(0)。地址單元A102提供一地址值至RAMA104,其對此響應(yīng),通過多路復(fù)用器108將h(0)提供至AREG130。在同一時鐘周期中,地址單元E112將一地址值提供至ROME114,其響應(yīng)于此,通過多路復(fù)用器116將CI(0)提供至BREG134。在下一周期中,AREG130提供h(0)、BREG134提供CI(0)至乘法器132,在此兩值相乘,其積通過多路復(fù)用器138、通過禁止的桶形移位器140被提供至加法器146的第一輸入。加法器146的第二輸入通過多路復(fù)用器154、禁止的反相器元件152以及桶形移位器152被置零。加法器146的輸出通過多路復(fù)用器148被提供至C0REG164。在同一時鐘周期中,YI-1(0)和h(1)被分別從RAM C182和RAMA102中讀取,并通過多路復(fù)用器158和100被提供至DREG156和AREG130。
在方框436中,合成的話音樣品指數(shù)n遞增1。在控制方框438中,如果合成的話音樣品指數(shù)n小于20,則流程進(jìn)行到方框440。
在方框440中,按照等式(56)每一時鐘周期計算一個新的YI(n)值。為了使YI-1(n)和h(n)的值初始化,方框440的第一次迭代之前所需的恰當(dāng)設(shè)置是如上所述在方框434中實現(xiàn)的。為了存儲YI(19)的最終值,方框440的最終迭代后還需要恰當(dāng)?shù)那宄?br>
在方框440的第一次迭代中,方框434中計算的YI(0)出現(xiàn)在C0REG164中。C0REG164通過多路復(fù)用器168和180,以從地址單元B120提供至RAM B122的地址值向用作存儲的RAM B122提供YI(0),YI(0)在被提供至RAM B122的同時還被提供至最小化處理器412。
在方框440中,在一個時鐘周期中進(jìn)行下述運(yùn)算。按照地址單元C186提供的地址,通過多路復(fù)用器158,由RAM C182將YI-1(n)值提供至DREG156。按照地址單元A102提供的地址,通過多路復(fù)用器108,由RAM A104將脈沖響應(yīng)值h(n+1)提供至AREG130。DREG156通過多路復(fù)用器154、禁止的反相器元件152以及桶形移位器150,將YI-1(n-1)提供至加法器146的第一輸入。AREG130提供h(n)、BREG134提供CI(n)至乘法器132,在此兩值相乘,并且其積由乘法器132通過多路復(fù)用器138、桶形移位器140提供至加法器146的第二輸入。加法器146的輸出通過乘法器148提供至C0REG164。C0REG164中由前一迭代計算的值通過多路復(fù)用器168和124被提供至用作存儲的RAM B122以及最小化處理器412。
在方框436中,合成的話音樣品指數(shù)n遞增1。在控制方框438中,如果合成的話音樣品指數(shù)n等于20,則在流程進(jìn)行到方框454之前,在最后迭代中計算的YI(19)通過多路復(fù)用器168和124被提供至RAM B122,用來存儲在RAM B122中的循環(huán)緩沖器內(nèi),YI(19)還被提供至最小化處理器412。
第二種情況結(jié)束在方框454的第一次迭代之前,YI-1(19)是從RAM B122中的循環(huán)緩沖器內(nèi)取得并被裝入BREGB4內(nèi)的。YI-1(19)隨后從BREG134移送到C0REG164,隨后YI-1(20)被從RAM B122中的循環(huán)緩沖器內(nèi)取得,并被裝入BREG134內(nèi)。
在方框454內(nèi),按照等式(57),每一時鐘周期計算一個新的YI(n)。在一個時鐘周期中進(jìn)行下述運(yùn)算。YI-1(n-2)由BREG134提供至C0REG164。YI-1(n-3)是從RAM B122內(nèi)的循環(huán)緩沖器讀取并被裝入BREG134內(nèi)的。COREG164中的YI-1(n-1)提交給最小化處理器412。在方框454的最后迭代以后,從RAM B122中的循環(huán)緩沖器中刪除YI-1(LC-2)。對每一碼書指數(shù),在RAM B122內(nèi)的循環(huán)緩沖器中加進(jìn)并去掉一個元素,使循環(huán)緩沖器的大小保持在LC—19。
RAM B122中循環(huán)緩沖器的實施是由地址單元B120中的特殊地址寄存器來實現(xiàn)的,其支配環(huán)繞點(地址取模操作),從而以循環(huán)方式自動對順序存儲器尋址。
在方框450中,合成的話音取樣指數(shù)n遞增1。在控制方框452中,如果合成的話音取樣指數(shù)n小于LC,則流程進(jìn)行到方框454。如果合成的話音樣品指數(shù)n等于LC,則對于當(dāng)前碼書指數(shù)值I已計算了所有的YI(n)值,流程回到方框426。
在合成話音取樣值YI(n)的計算之前,長為LC的感性加權(quán)的話音取樣值序列XC(n)被提供至最小化處理器412。如前所述,對于碼書向量指數(shù)值I=0至I=127,長度為LC的合成話音取樣值序列YI(n)在初始和遞歸卷積計算期間被提供至最小化處理器412。合成的話音取樣值被順序地提供至最小化處理器412。最小化處理器412計算每一合成話音樣品序列的自相關(guān)以及每一合成話音取樣序列YI(n)和感性加權(quán)的話音取樣值序列XC(n)之間的互相關(guān)。根據(jù)這些相關(guān)值,最小化處理器412隨后計算每一合成話音取樣序列YI(n)和感性加權(quán)的話音取樣值序列XC(n)之間MSE的相對值。對于每一碼書向量指數(shù)I,對合成話音取樣序列的所有可能的碼書增益值G計算MSE。通過當(dāng)前碼書向量指數(shù)I和當(dāng)前碼書增益G的最小MSE值來保持最小MSE值,最小化處理器412在所有碼書向量指數(shù)值I和所有碼書增益值G中求得最小MSE。對應(yīng)于最小MSE的碼書向量指數(shù)估算以及碼書增益指數(shù)估算值 也由最小化處理器412保持。每一新的MSE值與最小化處理器412中保持的MSE比較。如果新的MSE小于最小MSE,則該最小MSE由新的MSE值取代,碼書向量指數(shù)估算值和碼書增益估算值指數(shù) 被更新,以反映該的最小MSE。最小化處理器412中保持的最小MSE以及相應(yīng)的碼書向量指數(shù)估算值和碼書增益估算指數(shù) 在每一用碼書子幀中計算的第一MSE值。在所有的碼書向量指數(shù)I和所有碼書增益值G用盡以后,碼書向量指數(shù)估算值和碼書增益估算指數(shù) 就將分別是當(dāng)前碼書子幀的最佳碼書向量指數(shù)和最佳碼書增益指數(shù)。最小化處理器412通過輸入口12提供最佳碼書向量指數(shù)以及最佳碼書增益指數(shù) 至DSP內(nèi)核4。最佳碼書向量指數(shù)和最佳碼書增益估算指數(shù) 是產(chǎn)生感性加權(quán)的話音取樣值XC(n)以及加權(quán)的合成話音取樣值YI(n)之間最小MSE的那些指數(shù)值。如下述等式(59)至(61)所述,MSE是碼書指數(shù)I和碼書增益G的函數(shù)。MSE(I,G)=Σn=0LC-1(XC(n)GY1(n))2---(59)]]>=Σn=0LC-1(XC(n))2-2GΣn=0LC-1(XC(n)YI(n))+]]>G2Σn=0LC-1(YI(n))2----(60)]]>=EXCXC-2GEXCYL+G2EYLYI(61)EXCXC是感性加權(quán)話音取樣值XC(n)的自相關(guān)。EXCYI是感性加權(quán)話音取樣值XC(n)和加權(quán)合成的話音取樣值YI(n)之間的互相關(guān)。EYIYI是感性加權(quán)的合成話音取樣值YI(n)的自相關(guān)。
感性加權(quán)的話音取樣值XC(n)的自相關(guān)EXCXC不是碼書增益G的函數(shù)。EXCXC在每一碼書子幀內(nèi)保持不變,所以不反映最佳碼書向量指數(shù)和最佳碼書增益的選擇。等式(59)至(61)對碼書向量指數(shù)I和碼書增益G的最小化與下述等式(62)的最小化等價。
MSE(I,G)=-2GEXCYI+G2EYIYI(62)最小化處理器計算加權(quán)合成話音取樣值序列YI(n)的自相關(guān)EYIYI以及加權(quán)的話音取樣值序列XC(n)和加權(quán)的合成話音取樣值序列YI(n)之間的互相關(guān)EXCYI。對于每一相關(guān)對(EXCYL,EYIYI),最小化處理器412按照上述等式(62),計算一組碼書增益G的相對MSE。相關(guān)值EXCYI和EYIYI的計算是同時在最小化處理器412內(nèi)進(jìn)行的。對于碼書向量指數(shù)I計算相對MSE值,并作出有關(guān)MSE最小值的判定,同時對碼書向量指數(shù)I+1,計算相關(guān)值。
圖6a和6b描述了一個最小化處理器412的典型實施例。感性加權(quán)的話音取樣值XC(n)由DSP內(nèi)核4提供至鎖存器210,用來按照控制器220提供的地址存儲在RAM X212中。兩組碼書增益值是由DSP內(nèi)核4提供至最小化處理器412的。一組用于正碼書增益值G,第二組用于負(fù)碼書增益值-G。在全速率和半速率中,標(biāo)稱碼書增益-2G,從G=-4.0dB至G=+8.0dB,以間隔+4.0dB通過多路復(fù)用器260由DSP內(nèi)核4提供,分別存儲在鎖存器292、288、284以及280內(nèi)。在四分之一速率以及八分之一速率下,標(biāo)稱碼書增益值-2G,從G=-4.0dB到G=-2.0dB,以間隔2.0dB,通過多路復(fù)用器260,由DSP內(nèi)核4提供,分別存儲在鎖存器292、288、284以及280內(nèi)。相應(yīng)的標(biāo)稱編碼簿增益值G2通過多路復(fù)用器260提供,分別存儲在鎖存器290、286、282以及278內(nèi)。在全速率以及二分之一速率下,標(biāo)稱碼書增益值2G從G=-4.0dB到G=+8.0dB以間隔+4.0dB通過多路復(fù)用器260提供,分別存儲在鎖存器276、272、268以及264內(nèi)。在四分之一速率和八分之一速率下標(biāo)稱碼書增益值2G從G=-4.0dB到G=2.0dB,以間隔+2.0dB,通過多路復(fù)用器260提供,分別存儲在鎖存器276、272、268和264內(nèi)。相應(yīng)的標(biāo)稱碼書增益值G2通過多路復(fù)用器260提供,分別存儲在鎖存器274、270、266和262內(nèi)。多路復(fù)用器260將值直接提供給鎖存器262。鎖存器262將值直接提供給鎖存器264。鎖存器276通過多路復(fù)用器294將值提供給鎖存器278。鎖存器290將值直接提供給鎖存器292,等等。通過鎖存器262至292以及多路復(fù)用器294的移位值使得這些值可以通過多路復(fù)用器260提供到循環(huán)緩沖器259內(nèi)的所有鎖存器。在碼書搜尋中,循環(huán)緩沖器259內(nèi)提供兩個循環(huán)緩沖器。在感性加權(quán)的話音取樣值XC(n)存儲和碼書增益值的存儲以后,加權(quán)合成的話音取樣值序列列YI(n)被提供至鎖存器210。加權(quán)合成的話音取樣值II(n)由鎖存器210提供至產(chǎn)生加權(quán)合成話音取樣值的平方(YI(n))2的乘法器216的兩個輸入端。鎖存器210還提供加權(quán)合成話音取樣值YI(n)至乘法器218的第一輸入端。RAM X212通過鎖存器214將感性加權(quán)的話音取樣值XC(n)提供至乘法器218的第二輸入端。乘法器218計算乘積值XC(n)YI(n)。每一周期新的平方(YI(n)2和新的乘積XC(n)YI(n)分別由乘法器216和218計算。取樣指數(shù)n按每一碼書向量指數(shù)值I從0變化到Lc-1。
加權(quán)合成的話音取樣值的平方(YI(n))2被提供至累加器221。乘積值XC(n)YI(n)被提供至累加器231。累加器221對每一碼書向量指數(shù)I計算LC平方和。累加器231對每一碼書向量指數(shù)I計算LC個乘積值的和。
在每一新的碼書向量指數(shù)之前,鎖存器226通過多路復(fù)用器224提供零。累加器221準(zhǔn)備計算當(dāng)前碼書向量指數(shù)I的自相關(guān)EYIYI。在累加器221中,平方(YI(n))2被提供至加法器222的第一輸入端。總和由鎖存器226提供至加法器222的第二輸入端。新計算的總和由加法器222通過多路復(fù)用器224提供至鎖存器226,用作存儲。在對碼書向量指數(shù)I的所有LC個值累加以后,自相關(guān)值EYIYI被提供至鎖存器228,供存儲。
在每一新的碼書向量指數(shù)之前,鎖存器236通過多路復(fù)用器234提供零。累加器231準(zhǔn)備計算當(dāng)前碼書向量指數(shù)I的互相關(guān)值EXCYI。在累加器231中,乘積值XC(n)YI(n)被提供至加法器232的第一輸入端。總和由鎖存器236提供至加法器232的第二輸入。新計算的總和由加法器232通過多路復(fù)用器234提供至鎖存器236,供存儲。在對碼書向量指數(shù)I的所有LC個值累加以后,互相關(guān)值EXCYI被提供至鎖存器238,供存儲。
等式(62)描述的MSE隨后在下述兩個周期的過程中計算。
在兩個周期的第一個中,鎖存器238通過多路復(fù)用器230將感性加權(quán)的話音取樣值和加權(quán)的合成話音取樣值之間的互相關(guān)值EXCYI提供至乘法器240的第一輸入端??刂破?20監(jiān)測鎖存器238提供的EXCYI。如果EXCYI是非負(fù)值,則鎖存器292通過多路復(fù)用器296將標(biāo)稱碼書增益值-2G提供至乘法器240的第二輸入端。乘積-2GEXCYI由乘法器240提供至加法器242的第一輸入。如果EXCYI是負(fù)值,則鎖存器276通過多路復(fù)用器296將標(biāo)稱碼書增益值2G提供至乘法器240的第二輸入。乘積2GEXCYI由乘法器240提供至加法器242的第一輸入。加法器242的第二輸入通過多路復(fù)用器246置零。加法器242的輸出被提供至鎖存器244,供存儲。EXCYI的符號存儲在控制器220內(nèi)。EXCYI的符號為1和0分別對應(yīng)于EXCYI的負(fù)值和非負(fù)值。鎖存器262至276的值通過多路復(fù)用器260,由提供鎖存器276的輸出至鎖存器262來循環(huán)移位。循環(huán)移位以后,鎖存器262、264、266、268、270、272、274以及276中分別包含以前存儲在鎖存器276、262、264、266、268、270、272以及274中的值。鎖存器278至292中的值通過多路復(fù)用器294,由提供鎖存器292中的值通過多路復(fù)用器294,由提供鎖存器292的輸出至鎖存器278來循環(huán)移位。循環(huán)移位以后,鎖存器278、280、282、284、286、288、290以及292、分別包含以前存儲在鎖存器292、278、280、282、284、286、288以及290中的值。一個循環(huán)緩沖器是由鎖存器262至276和多路復(fù)用器260組成的。第二個循環(huán)緩沖器是由鎖存器278至292以及多路復(fù)用器294組成的。通過循環(huán)移位循環(huán)緩沖器259中兩個循環(huán)緩沖器的第二個中的值,鎖存器292分別提供第一和第二周期中的-2G和G2。通過循環(huán)移位循環(huán)緩沖器259中兩個循環(huán)緩沖器的第二個中的值,鎖存器276分別提供第一和第二周期中的2G和G2。對于每一對相關(guān)和互相關(guān)值,只有一組碼書增益對是由循環(huán)緩沖259提供的。一組碼書增益對是由循環(huán)緩沖器262至276和多路復(fù)用器260組成的循環(huán)緩沖器為負(fù)值的EXCYI提供的。另一組碼書增益對是由鎖存器278至292和多路復(fù)用器294組成的循環(huán)緩沖器為非負(fù)值的EXCYI提供的。
在兩個周期的第二個中,鎖存器228通過多路復(fù)用器230將EYIYI提供至乘法器240的第一個輸入端。通過多路復(fù)用器296,鎖存器276和292分別對負(fù)值和非負(fù)值的EXCYI,將碼書增益值G2提供至乘法器240的第二輸入端。乘積G2EYIYI由乘法器240提供至加法器242的第一輸入端。加法器242的第二輸入端通過多路復(fù)用器246提供鎖存器244的輸出±2GEXCYI。加法器242提供±2GEXCYI+G2EYIYI至鎖存器244,供存儲。循環(huán)緩沖器259的鎖存器262至292中的值以上述方式循環(huán)移位。
上述兩周期的過程對于每一碼書指數(shù)I和所有四對碼書增益值(±2G,G2)重復(fù)。在當(dāng)前MSE值(±2GEXCYI+G2EYIYI)計算以后的兩個周期中,用下一對±2G和G2值計算一個新的MSE值。在鎖存器244用新的MSE值更新之前,當(dāng)前MSE值與存儲在鎖存器250中當(dāng)前碼書子幀的最小MES比較,當(dāng)前MSE值(±2GEXCYI+G2EYIYI)由鎖存器244提供至減法器248的正輸入端。鎖存器250將當(dāng)前最小MSE值提供至減法器248的負(fù)輸入端。控制器220監(jiān)測減法器248輸出的差值。如果差值為負(fù),則當(dāng)前MSE值為當(dāng)前碼書小幀的新的最小MSE,并被存儲在鎖存器250內(nèi),相應(yīng)的碼書向量指數(shù)估算和碼書增益估算指數(shù) 在控制器220內(nèi)更新。如果差值為非負(fù)值,則當(dāng)前MSE值被忽略。
在每一碼書子幀之前,DSP內(nèi)核4向最小化處理器412發(fā)出一條指令,通知控制器220以下有一個新的碼書子幀。在收到這條指令以后,當(dāng)前碼書向量指數(shù)和當(dāng)前碼書增益指數(shù)在控制器220中被設(shè)置為0。在每一新的加權(quán)合成話音取值值序列被提供至最小化處理器412之前,DSP內(nèi)核4發(fā)出一條指令給最小化處理器412,通知控制器220以下有一個加權(quán)合成話音取樣值的新序列。在收到這條指令以后,控制器使當(dāng)前碼書向量指數(shù)和當(dāng)前碼書增益指數(shù)遞增1,這對應(yīng)于碼書向量指數(shù)增量1和根據(jù)速率碼書增益增量2dB或4dB。當(dāng)加權(quán)合成的話音取樣值的第一序列被提供至最小化處理器412時,當(dāng)前碼書向量指數(shù)和當(dāng)前碼書增益指數(shù)等于1,這對應(yīng)于碼書指數(shù)向量為0以及根據(jù)速率不同碼書增益G=-8dB或G=-4dB。在每一碼書子幀內(nèi),第一個MSE值存儲在鎖存器250內(nèi),相應(yīng)的碼書向量指數(shù)估算值和碼書增益優(yōu)算指數(shù) 在控制器220內(nèi)更新。這樣做是為了對每一碼書子幀使鎖存器250內(nèi)的最小MSE初始化。相應(yīng)于最小MSE估算值的碼書向量指數(shù)和碼書增益指數(shù)將與相應(yīng)于最小MSE的互相關(guān)EXCYI的符號一起由控制器220提供至DSP內(nèi)核4。如果DSP內(nèi)核4接收到表示EXCYI符號的零值則它將把最佳碼書增益設(shè)定為G。如果DSP內(nèi)核4收到表示EXCYI符號的1值,則它將把最佳碼書增益設(shè)定為-G。DSP內(nèi)核4用控制器220提供的碼書向量指數(shù)估算值和碼書增益估算指數(shù)來確定最佳碼書向量和最佳碼書增益。對于全速率和半速率,分別對應(yīng)于碼書增益指數(shù) =1至 最佳碼書增益G為-4dB、0dB、+4dB和+8dB。對于四分之一和八分之一速率,對應(yīng)于碼書增益指數(shù) 至 ,最佳碼書增益G為-4dB、-2dB、0dB和+2dB。
在碼書搜尋中,等式(62)表示的MSE函數(shù)MSE(I,G)的性質(zhì)使得可以節(jié)約計算。當(dāng)判定出對當(dāng)前碼書向量計算剩下的MSE值無法產(chǎn)生小于鎖存器250中存儲的當(dāng)前最小MSE時,就可以停止對當(dāng)前碼書向量的其余MSE計算。本實施例中,在最小化處理器41 2中采用了三種碼書搜尋節(jié)約計算的技術(shù)。MSE函數(shù)MSE(I,G)是G的二次函數(shù)。對每一碼書向量指數(shù)I構(gòu)成一個二次方程。所有這些二次方程均通過原點G=0和MSE(I,G)=0。
第一種節(jié)約計算的方法包含根據(jù)EXCYI的符號,搜尋正碼書增益值或負(fù)碼書增益值。EXCYI的負(fù)值和負(fù)增益值將產(chǎn)生等式62中-2GEXCYI項的負(fù)值。EXCYI的正值和正增益值也將產(chǎn)生等式62中-2GEXCYI項的負(fù)值。因為等式(62)中G2EYIYI項總是正數(shù),-2GEXCYI項的負(fù)值將趨于使MSE最小。兩組碼書增益對被提供至循環(huán)緩沖器259,一個帶有正碼書增益值,第二個帶有負(fù)碼書增益值。以這種方式,對于每一碼書向量指數(shù)I,可以使用四對增益值來取代八對增益值。
第二種節(jié)約計算的方法包括根據(jù)MSE函數(shù)的二次特性,在當(dāng)前碼書向量的碼書搜尋過程中省略其余MSE值的計算。MSE函數(shù)MSE(IG)是按單調(diào)增加的碼書增益值計算的。當(dāng)為當(dāng)前碼書向量計算出一個正MSE值時,因為相應(yīng)的MSE值將大于當(dāng)前MSE值,所以為當(dāng)前碼書向量所有剩余MSE計算可以被省略。
第三種節(jié)省計算的方法包含根據(jù)MSE函數(shù)的二次特性,在當(dāng)前碼書指數(shù)向量的碼書搜尋過程中省去其余MSE值的計算。因為對單調(diào)增加的碼書增益值計算MSE(I,G),當(dāng)在當(dāng)前碼書向量內(nèi)計算出一個被判定為不是新的最小MSE的MSE值并且在當(dāng)前碼書向量前一個已經(jīng)計算的MSE被判定的是新的最小MSE的MSE值時,當(dāng)前碼書向量內(nèi)的其余MSE計算可以被省去。這是因為這些其余的MSE值不會小于新的最小MSE。上述三種節(jié)約計算的方法使最小化處理器412中的功耗大大減少。
在方框84內(nèi),碼書值被量化。方框86檢驗是否處理了所有的碼書子幀。如果還未處理完所有的碼書子幀,則流程回到方框80,如果所有的碼書子幀均已被處理,則流程進(jìn)行到方框88。方框88檢驗是否所有的基音子幀均已被處理。如果還未處理完所有的基音子幀,則流程程回到方框70,如果所有的基音子幀均已被處理,則流程進(jìn)行到方框90。
在方框90中,編碼結(jié)果被壓縮成一種特定格式。在全速率下,由微處理機(jī)(未圖示)讀取22字節(jié)的數(shù)據(jù)。半速率讀取10字節(jié),四分之一速率讀取5字節(jié),八分之一速率讀取2個字節(jié)。在全速率下產(chǎn)生11個奇偶檢驗位,提供全速率數(shù)據(jù)18個最重要位的糾錯和檢驗。
發(fā)射機(jī)處的編碼器必須保持接收機(jī)處譯碼器的狀態(tài),目的是為更新在基音和碼書搜尋過程中依次用作編碼器的濾波器存儲值。本實施例中,編碼器包含在每一碼書子幀后使用的譯碼器的版本(ver-sion)。
在DSP內(nèi)核4內(nèi)進(jìn)行下述譯碼操作用作編碼器的一部分。參見圖11,為當(dāng)前碼書子幀確定的最佳碼書向量指數(shù)和最佳碼書增益 被用來產(chǎn)生一個標(biāo)稱碼書向量Gd(n)。除了八分之一速率以外,碼書502配備有為當(dāng)前碼書子幀確定的最佳碼書指數(shù),并響應(yīng)于此,提供相應(yīng)的激勵向量至乘法器504的第一輸入端。在八分之一速率的情況下,偽隨機(jī)向量發(fā)生器500產(chǎn)生一個偽隨機(jī)序列作為Cd(n),并被提供至乘法器504的第一輸入端。為當(dāng)前碼書子幀確定的最佳碼書增益 被提供至乘法器504的第二輸入端。該序列是由接收機(jī)處譯碼器所使用的同樣偽隨機(jī)發(fā)生運(yùn)算產(chǎn)生的。
標(biāo)稱碼書向量Cd(n)被提供至產(chǎn)生共振峰殘留Pd(n)的基音合成濾波器506?;艉铣蔀V波之存儲值由生成話音的最后取樣產(chǎn)生的最終狀態(tài)初始化?;艉铣蔀V波器506采用為當(dāng)前基音子幀判定的最佳基音滯后 和最佳基音增益。對于八分之一速率,最佳基音增益被設(shè)定為0。保留基音合成濾波存儲值的最后狀態(tài),用來產(chǎn)生如上所述的下一基音調(diào)子幀的話音,以及用于后續(xù)基音搜尋和編碼器內(nèi)的譯碼操作。
加權(quán)共振峰合成濾波器508根據(jù)共振峰殘留Pd(n)產(chǎn)生輸出Yd(n)。這個濾波器由產(chǎn)生話音的最后取樣的最終狀態(tài)初始化。根據(jù)當(dāng)前子幀插值LSP值計算的LPC系數(shù)用作該濾波器的系數(shù)。該濾波器的最終狀態(tài)用來產(chǎn)生下一碼書子幀的話音,以及用于隨后的基音及碼書搜尋。
圖2中方框44和50所示的譯碼操作是在DSP內(nèi)核4內(nèi)進(jìn)行的。ASIC通過微處理機(jī)接口42從微處理機(jī)(未圖示)接收特定格式的數(shù)據(jù)包。DSP內(nèi)核4對該數(shù)據(jù)包中的數(shù)據(jù)譯碼,并用它來合成通過PCM接口2提供至一編譯碼器(未圖示)的話音取樣值。在DSP內(nèi)格4中,接收的數(shù)據(jù)包被拆開,來取得合成話音取樣值所需的數(shù)據(jù)。數(shù)據(jù)包括編碼速率LSP頻率、以及該速率下相應(yīng)子幀的基音和碼書參數(shù)。根據(jù)接收的數(shù)據(jù)包數(shù)據(jù)對話音取樣值的合成是在DSP內(nèi)核4內(nèi)進(jìn)行的,并示于圖12中。
參見圖12,相應(yīng)于當(dāng)前碼書子幀的最佳碼書向量指數(shù)和最佳碼書增益 被譯碼器用來產(chǎn)生標(biāo)稱編碼薄向量Cd(n)。除了八分之一速率之外,對應(yīng)于當(dāng)前碼書子幀的最佳碼書指數(shù)碼書522被提供。響應(yīng)于此,將相應(yīng)的激勵向量提供至乘法器524的第一輸入端。在八分之一速率的情況下,用于Cd(n)的偽隨機(jī)序列由偽隨機(jī)向量發(fā)生器520產(chǎn)生,并提供至乘法器524的第一輸入端。該序列由接收機(jī)處譯碼器使用的同一偽隨機(jī)發(fā)生操作來產(chǎn)生。相應(yīng)于當(dāng)前碼書子幀的最佳碼書增益值 被提供至乘法器524的第二輸入端。
標(biāo)稱碼書向量Cd(n)被提供至產(chǎn)生共振峰殘留Pd(n)的基音合成濾波器526基音合成濾波器存儲器由生成話音的最后取樣所產(chǎn)生的最后狀態(tài)初始化?;艉铣蔀V波器526使用相應(yīng)于當(dāng)前基音子幀的最佳基音滯后 和最佳基音增益。對于八分之一速率,最佳基音增益被設(shè)定為0?;艉铣蔀V波器的最終狀態(tài)被存儲起來,用來產(chǎn)生如上所述下一基音子幀的話音。
加權(quán)共振峰合成濾波器528根據(jù)共振峰殘留Pd(n)產(chǎn)生輸出Yd(n)。該濾波器由生成話音的最后取樣值產(chǎn)生的最終狀態(tài)初始化。根據(jù)當(dāng)前子幀的插值LSP值計算的LPC系數(shù)用作該濾波器的系數(shù)。濾波器的最終狀態(tài)被存儲起來,用來產(chǎn)生下一碼書子幀的話音。
被譯碼的話音Yd(n)被提供至在本實施例中稱為長期后置濾波器(long term post—filter)的后置濾波器530它是基于被譯碼的當(dāng)前子幀的LPC系數(shù)。后置濾波器530對重新構(gòu)筑的話音取樣Yd(n)進(jìn)行濾波,并將經(jīng)濾波的話音提供至增益控制器532。增益控制器532控制輸出話音Sd(n)的電平,并能夠進(jìn)行自動增益控制(AGC)。
前述本發(fā)明的描述使得本領(lǐng)域的任何技術(shù)人員能制作或使用本發(fā)明。本領(lǐng)域的技術(shù)人員還可以對這些實施例作各種改進(jìn),其基本原理還可以用于其他實施例,而無需借助一本發(fā)明的專業(yè)人員。所以,本發(fā)明并非僅限于上述實施例,而應(yīng)當(dāng)在本文所揭示的原理和新特征的最大范圍內(nèi)來理解本發(fā)明。
權(quán)利要求
1.一種聲碼器,其特征是,它包含DSP內(nèi)核裝置,用來進(jìn)行遞歸卷積計算,并提供所述遞歸卷積的結(jié)果;以及最小化處理器,用來接收所述遞歸卷積的所述結(jié)果,并按照所述遞歸卷積的所述結(jié)果,進(jìn)行最小化搜尋。
2.如權(quán)利要求1所述的裝置,其特征在于,所述DSP內(nèi)核裝置用來對一第一序列和一第二序列進(jìn)行遞歸卷積,所述DSP內(nèi)核包含計算裝置,用來進(jìn)行所述遞歸計算;第一隨機(jī)存取存儲裝置,用來存儲并提供所述第一序列;第二隨機(jī)存取存儲裝置,用來存儲并提供所述第二序列;以及第三隨機(jī)存取存儲裝置,用來存儲并提供附加順序數(shù)據(jù)。
3.如權(quán)利要求1所述的裝置,其特征在于,它還包含對數(shù)據(jù)序列進(jìn)行塊歸一化的裝置。
4.一種聲碼器,其特征在于,它包含一個具有一輸入端的DSP內(nèi)核,用來接收數(shù)字化的音頻數(shù)據(jù)和一輸出;以及一最小化處理器,所述最小化處理器具有一與所述DSP內(nèi)核輸出耦連的輸入以及一輸出。
5.如權(quán)利要求4所述的裝置,其特征在于,它還包含一數(shù)字化音頻接口,所述接口有一接收第一音頻數(shù)據(jù)的輸入和一輸出,所述DSP內(nèi)核輸入與所述數(shù)字化音頻接口輸出耦連。
6.如權(quán)利要求5所述的裝置,其特征在于,它還包含一微處理器接口,所述接口有一接收微處理機(jī)數(shù)據(jù)的輸入以及一輸出,所述數(shù)字化音頻接口具有一第二輸入端,所述數(shù)字化音頻接口第二輸入與所述微理機(jī)接口輸出耦連。
7.如權(quán)利要求4所述的裝置,其特征在于,它還包含一時鐘發(fā)生器,所述時鐘發(fā)生器具有接收時鐘信號的輸入以及一輸出,所述DSP內(nèi)核具有與所述時鐘發(fā)生器輸出耦連的第二輸入。
8.一種在第一序列和第二序列之間進(jìn)行遞歸卷積的方法,其特征在于,它包含下述步驟進(jìn)行初始卷積;測試一步長指數(shù)是否為偶數(shù);從一第一存儲器元件檢索所述第一序列;從一第二存儲器元件檢索所述第二序列;當(dāng)所述步長指數(shù)是偶數(shù)時,從第三存儲器元件檢索部分卷積結(jié)果;按照所述檢索到的第一序列、所述檢索到的第二序列以及所述檢索到的部分卷積結(jié)果進(jìn)行部分卷積;當(dāng)所述步長指數(shù)為偶數(shù)時,將所述部分卷積的結(jié)果存儲在所述第二存儲器元件內(nèi);當(dāng)所述步長指數(shù)為奇數(shù)時,從所述第二存儲器元件檢索部分卷積;按照所述檢索到的第一序列,所述檢索到的第二序列以及所述檢索到的部分卷積進(jìn)行部分卷積;以及當(dāng)所述步長指數(shù)為奇數(shù)時,將所述部分卷積的結(jié)果存儲在所述第三存儲器元件內(nèi)。
9.如權(quán)利要求8所述的方法,其特征在于,它還包含從一循環(huán)緩沖器檢索先前產(chǎn)生的卷積。
10.一種進(jìn)行塊歸一化的裝置,其特征在于,它包含數(shù)量判定裝置,用來接收一組值,并確定所述那組值的幅值,并提供相應(yīng)的幅值;或門裝置,用來接收所述幅值,接收部分或值,并提供下一部分或值;以及寄存器裝置,用來接收所述下一部分或值,提供所述部分或值,所述寄存器裝置中的最后值代表一歸一化因子。
11.如權(quán)利要求10所述的裝置,其特征在于,所述幅值判定裝置包含反相裝置,用來接收所述數(shù)值,并當(dāng)所述值為負(fù)值時選擇性地使所述數(shù)值的各位反相;以及求和裝置,當(dāng)所述數(shù)值為負(fù)值時,向所述有選擇的反相位上加上一個位。
12.如權(quán)利要求10所述的裝置,其特征在于,它還包含移位寄存器裝置,用來按照所述歸一化因子確定一移位歸一化值,并提供所述移位歸一化值;以及桶形移位器裝置,用來接收按照所述移位歸一值使第二組值移位的所述移位歸一化值。
全文摘要
本發(fā)明揭示了一種在特殊應(yīng)用集成電路(ASIC)中實現(xiàn)聲碼器的方法和裝置。該裝置包含一按照一減化了的指令組(RISC)結(jié)構(gòu)進(jìn)行計算的DSP內(nèi)核(4)。該電路還包含一特別設(shè)計的DSP的從屬處理器,稱為最小化處理器(b)。該裝置還包含一特別設(shè)計的塊歸一化電路。
文檔編號G10L19/02GK1123061SQ95190086
公開日1996年5月22日 申請日期1995年2月13日 優(yōu)先權(quán)日1994年2月16日
發(fā)明者張乾春, 蘭迪普·辛格, 查爾斯·E·坂牧, 蔡明昌, 普拉山特·坎泰克, J·G·麥克唐納 申請人:夸爾柯姆股份有限公司