論文地址:基於隱馬爾科夫模型的電話語音頻帶擴展html
博客做者:凌逆戰git
博客地址:http://www.javashuo.com/article/p-egavuycs-r.html算法
本文提出了一種從lowpass-bandlimited(低通帶限)語音中恢復寬帶語音的算法。窄帶輸入信號被分類爲有限數量的語音,關於寬帶頻譜包絡的信息取自預先訓練的碼本。在碼本搜索算法中,採用了一種基於隱馬爾可夫模型的統計方法,該方法考慮了帶限語音的不一樣特徵,使均方偏差準則最小化。新算法只須要一個寬帶碼本,本質上保證了系統在基帶的透明性。加強後的語音比輸入語音的帶寬大得多,並且沒有引入使人討厭的artifacts(僞影)。app
在目前的公共電話系統中,傳輸語音的帶寬被限制在300 Hz到3.4 kHz的頻率範圍內。這致使了典型的電話語音一般是單薄和低沉的。然而,近年來,咱們發現人們對語音通訊系統的質量要求愈來愈高,不只要求高的可懂度,還要求高的主觀質量,例如在免提電話或電話會議應用中。這種趨勢反映在正在進行的寬帶語音編解碼器的標準化上。ide
真正的寬帶語音通訊須要加強的語音編解碼器和提升的比特率,所以須要修改傳輸鏈路。所以,出於經濟緣由,帶寬限制在將來不太可能改變。另外一種得到更高帶寬的方法是僅利用帶限語音來推斷傳輸鏈路接收端語音信號中缺失的低頻和高頻成分。函數
這種語音信號的帶寬擴展只有基於語音產生過程的模型時纔是可行的。寬帶源模型的參數能夠從帶限語音中估計出來。這些參數能夠與源模型結合使用來估計和添加缺失的頻率。工具
本文只討論帶寬向更高頻率的擴展,即假設輸入信號只包含低於3.4 kHz的頻率(這個頻段將在下文中定義爲基帶)。經過增長信號份量,它將擴展到頻率高達7khz。測試
根據語音產生過程的自迴歸(AR)模型,將提出的帶寬擴展算法分爲兩個任務,這兩個任務在必定程度上是相互獨立的:語音信號的頻譜包絡線的擴展和激勵信號的擴展[1]。算法框圖如圖1所示。優化
圖1 帶寬擴展算法的塊圖和主信號流spa
若是輸入信號$s_{nb}(k')$採樣頻率爲$f_{a'}=8kHz$,則算法的第一步是一個low-pass interpolation(低通插值濾波器)。算法其他部分以$f_a = 16khz$的採樣率處理輸入信號。然而,信號$s_{nb}(k)$仍然只包含3.4 kHz如下的信號份量。進一步的處理是以20 ms的幀大小逐幀進行的。在下面,幀索引將由變量$m$表示。
使用窄帶輸入信號和預先訓練的碼本,計算當前語音幀的寬帶譜包絡的估計值(參見第3節)。而後從碼本中提取描述該譜包絡的AR濾波器係數$\hat{C}$,並將其用於FIR濾波器$H_1(z)$中以估計窄帶激勵信號$\hat{x}_{nb}$。因爲對於無聲幀,該激勵信號的基帶能夠假定爲近似白色,而對於有聲幀,該激勵信號的基帶分別由振幅相等的諧波組成,所以其帶寬能夠很是簡單地擴展(請參見第4節)。最終將擴展的激勵信號$\hat{x}_{wb}(k)$饋入全極點合成濾波器$H_S(z)$,從而建立加強的輸出信號$\hat{s}_{wb}(k)$。
與以往的語音信號帶寬擴展算法(如[1, 2, 3])不一樣,所提出的算法不須要幾個窄碼本和寬帶碼本的組合。它只利用一個單一的寬帶碼本。所以,用於分析濾波器和合成濾波器的AR係數是相同的,並且這兩個濾波器的傳遞函數是互逆的
$$公式1:H_s(z)=\frac{1}{H_1(z)}$$
因爲這一特性,系統基帶信號份量的透明性能夠獲得保證——這足以確保在殘餘信號擴展期間激勵信號的基帶不被修改。
如前一節所述,語音信號的頻譜包絡的擴展基於寬帶碼本。在該碼本中,存儲了表明典型語音頻譜包絡的幾組AR係數(在下文中,第$i$組AR係數將由$C_i$表示。 碼本條目的總數爲$I$)。使用足夠大的寬語音語音訓練數據集和經常使用的LBG算法[4]對碼本進行訓練,從而最大程度地減小Itakuro距離測度(請參見[l])。儘管使用寬帶語音材料對碼本進行訓練能夠確保在碼本中包含正確的表明不一樣語音的聲音,可是這也帶來了挑戰,即對於輸入信號的分類,即對輸入信號的分類只有帶限信號可用。
碼本搜索方法的基礎是語音生成過程的隱馬爾可夫模型(HMM)。 HMM的剛好一個狀態$S_i$被分配給碼本的每一個條目$C_i$。 進一步假設源的狀態僅在輸入信號的兩個幀之間發生變化。 注意,若是寬帶語音可用,則在模型意義上能夠計算出真實狀態序列。
若是隻知道窄帶語音,則經過如下步驟執行分類:首先,從窄帶語音中提取有限數量的特徵。將這些提取的特徵與語音產生過程的統計模型進行比較。而後將當前的語音幀劃分爲訓練好的語音或直接估計AR係數。
對於每一個信號幀,從bandlimited(帶限)信號中提取一個$N$維特徵向量$x(m)$。該向量由8個倒譜系數$c_1...c_8$,歸一化幀能量$E_n$和[5]中定義的梯度指數$d_n$組成
$$公式2:
d_{n}=\frac{\sum_{k=2}^{K} \Delta \psi(k)\left|s_{n b}(k)-s_{n b}(k-1)\right|}{\sqrt{\frac{1}{K} \sum_{k=1}^{K} s_{n b}^{2}(k)}}
$$
式中$K$爲每幀採樣數,變量$\phi(k)$表示梯度$c_{nb}(k)-s_{nb}(k-1)$的標記,即$\psi (k)\in \{-1,1\}$,$\triangle \psi(k)=\frac{1}{2}|\psi(k)-\psi(k-1)|$。
倒譜系數包含窄帶信號的頻譜包絡的形狀信息,而其餘兩個量取決於語音激勵的性質。此外,以上十個主要特徵隨時間的導數都包含在特徵向量中,使得該向量$x(m)$的維數爲$N = 20$。
對於隱馬爾可夫模型的每一個可能狀態$S_i$,語音產生過程產生的特徵$x$表現出不一樣的統計特性。爲了描述這些性質,咱們使用了由如下三部分組成的統計模型。
因爲特徵向量x的維度較高,這些機率密度函數(probability density function,pdf)$p(x|S_i)$由高斯混合模型(GMMS)建模:每一個pdf被近似爲$L$個高斯pdf的和。
$$公式3:
p\left(\boldsymbol{x} | S_{i}\right) \approx \sum_{l=1}^{L} P_{i l} \mathcal{N}\left(\boldsymbol{x} ; \mu_{i l}, \Sigma_{i l}\right)
$$
在這個方程中,$N(x;\mu_{il},\sum_{il})$表示具備平均矢量$\mu_{il}$和方差矩陣$\sum_{il}$的GMM的第$l$個N維高斯分佈。每一個高斯分佈都由一個係數$P_{il}$加權,$\sum_{l=1}^LP_{il}=1$。
GMMs的訓練,即$P_{il}$、$\mu_{il}$和$\sum_{il}$,能夠用指望最大化(EM)算法(例如[ 6 ])來進行。這裏用LBG算法[4]對訓練數據進行聚類來肯定。
對於隱馬爾可夫模型的每一個狀態,必須使用完整訓練材料的子集來訓練一個不一樣的GMM,對於該GMM,其真實狀態等於當前訓練的狀態。
標量值$\pi_i$描述了HMM駐留在狀態$S_i$中而不包含特徵向量$x$或前後狀態的機率。
該機率能夠經過計算訓練材料的真實狀態序列和評估狀態$S_i$的出現次數與訓練集中的語音幀總數之間的比率來估計。經過碼本存儲所獲得的機率值,使得實際的帶寬擴展算法之後能夠經過表查找來訪問這些先驗狀態機率。
變量$a_{ij}$描述了從狀態$S_j$轉換到狀態$S_i$的機率。做爲初始狀態機率$\pi_i$,能夠將轉移機率存儲在如今爲二維的表中。在訓練過程當中,在瞭解了真實狀態序列的狀況下,將該表中的每一個條目估計爲從$S_j$到$S_i$的特定轉換的發生次數與$S_j$狀態的總髮生次數之間的比率。
碼本搜索算法的目標是計算寬帶AR係數的估計值$\hat{C}$,使到真實係數C的距離最小。
對於估計規則的推導,將輔助變量$\alpha_i(m)$定義爲部分觀測序列$X(m)=\{x(0),x(1),...,x(m)\}$和狀態$S_i(m)$在m幀時刻
$$公式4:\alpha_i(m)=P(S_i(m),X(m))$$
該輔助變量能夠用聯合機率$\alpha_i(m-1)$在m-1時刻的遞歸形式表示,觀察機率$p(x(m)|S_i(m))$爲
$$公式5:\alpha_i(m)=(\sum_{j=1}^I\alpha_j(m-1)a_{ij})p(x(m)|S_i(m))$$
因爲前一個觀測向量在第一幀是未知的,因此$\alpha_i(0)$的初始值必須由初始狀態機率$\pi_i$計算
$$公式6:\alpha_i(0)\pi_ip(x(0)|S_i)$$
MMSE準則的目標是最小化估計AR係數$\hat{C}$與真實係數$C$之間的均方偏差,從而使如下代價函數最小化
$$公式7:
\mathcal{R}_{\mathrm{MSE}}(\hat{\boldsymbol{C}} | \boldsymbol{X})=\iint(\hat{\boldsymbol{C}}-\boldsymbol{C})^{T}(\hat{\boldsymbol{C}}-\boldsymbol{C}) p(\boldsymbol{C} | \boldsymbol{X}) d \boldsymbol{C}
$$
經過對損失函數的導數求根,能夠找到這個優化問題的一個解
$$公式8:
\hat{C}_{\text {natst }}=\iint \boldsymbol{C} p(\boldsymbol{C} | \boldsymbol{X}) d \boldsymbol{C}
$$
因爲咱們沒有條件機率$p(C|X)$的顯式模型,這個量必須以狀態機率的形式間接表示
$$公式9:
\hat{C}_{\text {hass }}=\iint \boldsymbol{C}\left[\sum_{i=1}^{I} p\left(\boldsymbol{C} | S_{i}\right) P\left(S_{i} | \boldsymbol{X}\right)\right] d \boldsymbol{C}
$$
$$公式10:
=\sum_{i=1}^{I} P\left(S_{i} | \boldsymbol{X}\right) \underbrace{\iint \boldsymbol{C} p\left(\boldsymbol{C} | S_{i}\right) d \boldsymbol{C}}_{\mathcal{E}\left\{\boldsymbol{C} | S_{i}\right\}=\boldsymbol{C}_{i}}
$$
如圖所示,在狀態$S_i$出現的狀況下,方程10右側的積分獲得C的指望值,即對應的碼本向量$C_i$。應用貝葉斯規則,代入輔助變量$\alpha_i$,獲得以下估計
$$公式11:
\hat{C}_{\text {mats } E}=\frac{\sum_{i=1}^{I} C_{i} \alpha_{i}(m)}{\sum_{i=1}^{I} \alpha_{i}(m)}
$$
因爲$p(C|X)$是經過狀態機率間接建模的,所以該估計器不能利用條件機率$p(C|S_i)$。能夠經過直接建模和利用$p(C|X)$來設計一個更好的MMSE估計器,但這不是一項簡單的任務。另外,能夠在碼本向量$C_i$的訓練過程當中考慮$p(C|S_i)$的知識。
因爲窄帶激勵信號$\hat{x}_{nb}(k)$在base-band(基頻)上近似爲白色,所以計算寬頻帶激勵信號的公式爲
$$公式12:
\hat{x}_{w b}(k)=\left\{\begin{array}{ll}
{2 \hat{x}_{n b}(k)} & {; k=0, \pm 2, \pm 4 \ldots} \\
{0} & {; \text { else }}
\end{array}\right.
$$
這種操做致使了功率譜的摺疊。所以,在$\hat{x}_{wb}(k)$中存在3.4到4.6 kHz的頻譜間隙。另外,高頻區域的諧波結構與低頻份量不匹配。然而,在合成濾波器$H_S(z)$後,這些影響幾乎聽不見。
爲了評估所提出的算法,訓練了幾個不一樣尺寸的碼本。在聆聽算法的最佳輸出時,即在已知true state sequence(真實狀態序列)的狀況下,發現對於大於I = 64的碼本,加強信號與原始寬帶語音幾乎沒法區分。即便是很是小的I = 3條目的codebook,也能夠得到可接受的結果。
訓練數據由截止頻率爲3.4 kHz的低通濾波器對寬帶語音進行濾波獲得。它由幾位男女演講者講了大約10分鐘的語音平衡的乾淨的話術組成。
在許多非正式的和比較的聽力測試中,所描述的算法產生了良好的結果——顯著地擴展了帶寬。偶爾會出現聲音僞影,,主要出如今[s]或[f]等清音摩擦音中,這是由碼本搜索算法錯誤分類形成的。然而,算法中先驗知識的使用越多,此類僞影的出現頻率就越低。
該方法可以將低通帶限語音的帶寬擴展到最高7kHz的頻率範圍。結果證實,在低頻區域有足夠的信息能夠成功地估計高頻成分的缺失,可是,對於這種估計,除了頻譜包絡以外,還應該利用窄帶語音的更多特徵。爲此目的,提出的統計模型,是一個適當的工具。
[1] H. Carl, 「Untersuchung verschiedener Methoden der Sprachcodierung und eine Anwendung zur BandbreitenvegroBerung von Schmalband-Sprachsignalen」. Dissertation.Ruhr-Universitat Bochum, 1994[2] J. Epps, W. H. Holmes, 「A New Technique for Wideband Enhancement of Coded Narrowband Speech」. IEEE Workshop on Speech Coding. Porvoo, Finland, 1999[3] N. Enbom, W. B. Kleijn, 「Bandwidth Expansion of Speech Based on Vector Quantization of the Me1 Frequency Cepstral Coefficients」. IEEE Workshop on Speech Coding, Porvoo,Finland, 1999[4] Y. Linde, A. Buzo, R. M. Gray, 「An Algorithm for Vector Quantizer Design」. IEEE Trans. on Communications, January 1980[5] J. Paulus, 「Codierung breitbandiger Sprachsignale bei niedriger Datenrate」. Dissertation, RWTH Aachen, 1997[6] S. V. Vaseghi, 「Advanced Signal Processing and Digital Noise Reduction」. Wiley, Teubner, 1996