論文地址:基於隱馬爾科夫模型的電話語音頻帶擴展
博客作者:凌逆戰
博客地址:https://www.cnblogs.com/LXP-Never/p/12151866.html
摘要
本文提出了一種從lowpass-bandlimited(低通帶限)語音中恢復寬帶語音的算法。窄帶輸入信號被分類為有限數量的語音,關於寬帶頻譜包絡的信息取自預先訓練的碼本。在碼本搜索算法中,采用了一種基於隱馬爾可夫模型的統計方法,該方法考慮了帶限語音的不同特征,使均方誤差准則最小化。新算法只需要一個寬帶碼本,本質上保證了系統在基帶的透明性。增強后的語音比輸入語音的帶寬大得多,而且沒有引入令人討厭的artifacts(偽影)。
1 引言
在目前的公共電話系統中,傳輸語音的帶寬被限制在300 Hz到3.4 kHz的頻率范圍內。這導致了典型的電話語音通常是單薄和低沉的。然而,近年來,我們發現人們對語音通信系統的質量要求越來越高,不僅要求高的可懂度,還要求高的主觀質量,例如在免提電話或電話會議應用中。這種趨勢反映在正在進行的寬帶語音編解碼器的標准化上。
真正的寬帶語音通信需要增強的語音編解碼器和提高的比特率,因此需要修改傳輸鏈路。因此,出於經濟原因,帶寬限制在未來不太可能改變。另一種獲得更高帶寬的方法是僅利用帶限語音來推斷傳輸鏈路接收端語音信號中缺失的低頻和高頻成分。
這種語音信號的帶寬擴展只有基於語音產生過程的模型時才是可行的。寬帶源模型的參數可以從帶限語音中估計出來。這些參數可以與源模型結合使用來估計和添加缺失的頻率。
本文只討論帶寬向更高頻率的擴展,即假設輸入信號只包含低於3.4 kHz的頻率(這個頻段將在下文中定義為基帶)。通過增加信號分量,它將擴展到頻率高達7khz。
2 算法
根據語音產生過程的自回歸(AR)模型,將提出的帶寬擴展算法分為兩個任務,這兩個任務在一定程度上是相互獨立的:語音信號的頻譜包絡線的擴展和激勵信號的擴展[1]。算法框圖如圖1所示。
圖1 帶寬擴展算法的塊圖和主信號流
如果輸入信號$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)}$$
由於這一特性,系統基帶信號分量的透明性可以得到保證——這足以確保在殘余信號擴展期間激勵信號的基帶不被修改。
3 頻譜包絡
如前一節所述,語音信號的頻譜包絡的擴展基於寬帶碼本。在該碼本中,存儲了代表典型語音頻譜包絡的幾組AR系數(在下文中,第$i$組AR系數將由$C_i$表示。 碼本條目的總數為$I$)。使用足夠大的寬語音語音訓練數據集和常用的LBG算法[4]對碼本進行訓練,從而最大程度地減少Itakuro距離測度(請參見[l])。盡管使用寬帶語音材料對碼本進行訓練可以確保在碼本中包含正確的代表不同語音的聲音,但是這也帶來了挑戰,即對於輸入信號的分類,即對輸入信號的分類只有帶限信號可用。
碼本搜索方法的基礎是語音生成過程的隱馬爾可夫模型(HMM)。 HMM的恰好一個狀態$S_i$被分配給碼本的每個條目$C_i$。 進一步假設源的狀態僅在輸入信號的兩個幀之間發生變化。 注意,如果寬帶語音可用,則在模型意義上可以計算出真實狀態序列。
如果只知道窄帶語音,則通過以下步驟執行分類:首先,從窄帶語音中提取有限數量的特征。將這些提取的特征與語音產生過程的統計模型進行比較。然后將當前的語音幀划分為訓練好的語音或直接估計AR系數。
3.1 特征
對於每個信號幀,從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$。
3.2 統計模型
對於隱馬爾可夫模型的每個可能狀態$S_i$,語音產生過程產生的特征$x$表現出不同的統計特性。為了描述這些性質,我們使用了由以下三部分組成的統計模型。
3.2.1 觀察概率$p(x|S_i)$
由於特征向量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,其真實狀態等於當前訓練的狀態。
3.2.2 初始狀態概率$\pi_i=P(S_i)$
標量值$\pi_i$描述了HMM駐留在狀態$S_i$中而不包含特征向量$x$或先后狀態的概率。
該概率可以通過計算訓練材料的真實狀態序列和評估狀態$S_i$的出現次數與訓練集中的語音幀總數之間的比率來估計。通過碼本存儲所得到的概率值,使得實際的帶寬擴展算法以后可以通過表查找來訪問這些先驗狀態概率。
3.2.3 轉移概率$a_{ij}=P(S_i(m+1)|S_j(m))$
變量$a_{ij}$描述了從狀態$S_j$轉換到狀態$S_i$的概率。作為初始狀態概率$\pi_i$,可以將轉移概率存儲在現在為二維的表中。在訓練過程中,在了解了真實狀態序列的情況下,將該表中的每個條目估計為從$S_j$到$S_i$的特定轉換的發生次數與$S_j$狀態的總發生次數之間的比率。
3.3 估計寬帶AR系數
碼本搜索算法的目標是計算寬帶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)$的知識。
4 剩余信號
由於窄帶激勵信號$\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)$后,這些影響幾乎聽不見。
5 評估
為了評估所提出的算法,訓練了幾個不同尺寸的碼本。在聆聽算法的最佳輸出時,即在已知true state sequence(真實狀態序列)的情況下,發現對於大於I = 64的碼本,增強信號與原始寬帶語音幾乎無法區分。即使是非常小的I = 3條目的codebook,也可以獲得可接受的結果。
訓練數據由截止頻率為3.4 kHz的低通濾波器對寬帶語音進行濾波得到。它由幾位男女演講者講了大約10分鍾的語音平衡的干凈的話術組成。
在許多非正式的和比較的聽力測試中,所描述的算法產生了良好的結果——顯著地擴展了帶寬。偶爾會出現聲音偽影,,主要出現在[s]或[f]等清音摩擦音中,這是由碼本搜索算法錯誤分類造成的。然而,算法中先驗知識的使用越多,此類偽影的出現頻率就越低。
6 總結
該方法能夠將低通帶限語音的帶寬擴展到最高7kHz的頻率范圍。結果證明,在低頻區域有足夠的信息可以成功地估計高頻成分的缺失,但是,對於這種估計,除了頻譜包絡之外,還應該利用窄帶語音的更多特征。為此目的,提出的統計模型,是一個適當的工具。
7 參考文獻
[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