LPC 10e綜合器程式分析

2021-06-08 20:25:45 字數 2586 閱讀 9947

當前幀插值運算需要用到前幀的後半幀的引數值,所以在修改程式值,這段程式需要修改。

由於每幀語音只傳輸一組引數,考慮一幀之內可能有不止乙個基音週期,因此要對接收數值進行由幀塊到基音塊的轉換和插值。

因此引數插值程式需要解決兩個問題:(1)基音塊的確定;(2)對各基音塊如何插值。

引數插值的原則:

1)對數面積比引數值每幀插值兩次;

2)rms引數值在對數域進行基音同步插值;

3)基音引數值用基音同步的線性插值;

4)在濁音向清音過渡時對數面積比不插值。

**係數、增益、基音週期、清/濁音等引數值每個基音週期(基音塊)更新一次,這個過程在幀塊到基音塊的轉換和插值中完成。

清音段由於沒有基音週期,這裡確定基因塊長度的方法是平均切分;濁音段由於有基音週期,因此確定基音塊是基於其基音週期的

需要處理的幀塊的長度為lsamp = lframe + jsamp(其中lframe為本幀幀長,在本程式中為180個樣點,jsamp為前一幀中未處理的樣點)。 幀塊到基音塊的轉換所用到的關鍵引數是幀的清/濁音,即由ivoico(前一幀的後半幀voice值), voice(1)(當前幀的前半幀的值), 及 voice(2)( 當前幀的後半幀的值)這三個引數決定。ivoico voice(1) voice(2)的八種組合決定著語音幀的四種狀態:

1)清音(000)

以pitch = 45為步長劃分基音塊,引數rc, rms, ivuv為本幀的引數值,而未做插值運算。ipito=45,ivoico = 0,rmso 及rco為本幀的值。

2)清音 —> 濁音(001, 011/010)

清音與濁音的轉換處再延時45個樣點都作清音處理,即濁音段中前lframe / 4 =  45個樣點需要當作清音處理,清音段,rc及rms不插值,且rms及rc的值是前幀相應的值。濁音段rc不插值,其值為本幀rc,rms對數域插值。ipito = 濁音段的pitch。

對於011/010,第1第2基音塊由nl=45(nl即為濁音段中的樣點放到清音段中處理的樣點數)確定,其對應的rc,rms,ivuv都由前一幀引數決定。在[nl+1, lsamp]中,以pitch為步長確定本幀中其它基音塊。nout = 2 + (lsamp – (nl + 1)) / pitch。在非第1第2基音塊中,ivuv = 1 ipitch = pitch,rc為本幀rc值,rms插值計算。

簡言之,清音段的基音塊引數由前一幀引數決定,濁音段的基音塊引數由當前幀插值決定。

3)濁音 —> 清音(110, 100/101)

濁音與清音的轉換處再延時45個樣點都作濁音處理,即清音段中前lframe / 4 =  45個樣點需要當作濁音處理,因此程式中while語句迴圈兩次,分別進行濁音段處理和清音段處理。濁音段,rc不插值,為前幀值,rms插值計算;清音段,rc和rms都不插值,都為本幀值。ipito=清音段的pitch。

110      

對於100/101,濁音段的範圍是取(jsamp(前幀中未處理的點) + 45),ivuv

(基音塊的清濁音判決) = 1, ipiti(基因塊的基音值) = ipito(前幀基音值),rc為前幀rc值。剩餘的點放到清音段處理,在清音段中,ipiti(基因塊的基音值) = (本幀中未處理的樣點數 / 2),ivuv(基音塊的清濁音判決) = 0,rc為本幀rc值。在兩段資料中分別進行rms和rc的對數域插值運算,但濁音段rc插值後為rco,即前幀rc值,清音段rc插值後為當前幀rc值。

4)濁音(111)

只有在這種情況才需要對pitch進行線性插值運算,再以插值後的pitch值(線性增加)為步長劃分基音塊。各基音塊的ivuv = 1,rc及rms需要在對數域插值。ipito為插值後最後乙個pitch值,而不一定是本幀pitch值了。rc及rms保持不變。

圖1圖示假設sjamp = 0, 若jsamp != 0,只要作相應偏移即可。

1)是如何確定乙個輸入幀(由54bit引數決定)的基音塊的?(2007-11-9)

答:由pitch值決定。

2)基因塊中的各引數值是如何確定的?(2007-11-9)

答:由3個半幀的voice值確定清濁音段範圍,具體見圖1。過渡段rc不插值。pitch的確定原則是在清音段,對分清音段長求得pitch;在濁音段,pitch即為濁音段的pitch值。

在pitsyn__()中,ivoico,ipito,rmso,rco用來儲存前乙個窗的後半部分的引數值,在我們修改程式中(幀移90),由於是交錯讀取編碼資料,因此我們需要用到前第二個窗的引數,這裡需要修改,即ivoico,ipito,rmso,rco值有變化。

3)解碼器輸入和輸出的關係。

答:延時一窗輸出。

解碼器輸入為編碼後的54-bit資料(為和編碼器分析統一,認為此資料為(af-2)中的引數),輸出為(af-3)引數合成後和部分(af-2)合成後的180個樣點(因為54-bit資料在轉換成基因塊時,若直接輸出可能小於180個16-bit資料,但是輸出確是180個16-bit的資料,所以這裡要延時乙個窗輸出是有道理的)。

松下bcg10e電池

這種高品質的更換松下地區小型,bcg10e電池將執行在最佳的 非常正確的方式。它與過壓安全,短路和過流保護。它是堅固和福祉,因為它是建立在高品質松下地區小型,bcg10e數位相機電池部件和一流的worksmanship的。這一地區小型工程松下 bcg10e電池質量認證以及德國tuv認證,rohs和行...

10大綜合佈線常見錯誤

通常情況下,大家都會認為增加線路數量會給現有系統帶來幫助。梯形機架的增加以及隨之而來基於機架的線路管理等工作確實會導致運營成本上公升。但也可以讓日常維護工作變得非常簡單。需要注意到,線路管理工作並不會因為專案最終安全完成而自動終止,當越來越多的線路被新增進來時,現實情況也會隨之改變。因此,我們要堅持...

進度日誌10 (綜合運用題目)

題目1 輸入三個整數,輸出最大和最小數 答案 pragma warning disable 4996 include void main else if max c else if min c min c printf max d nmin d max,min 執行結果 題目2 計算器程式,使用者輸...