[2020] 語音生成 (壹) Quasi-Periodic 語音訊號生成模型

Yi-Chiao Wu (吳宜樵)
13 min readAug 1, 2020

這篇文章將介紹我們團隊提出的 QPNetQPPWG 語音生成模型 ,以及其核心的 pitch-dependent dilated convolution neural network (PDCNN) 和 quasi-periodic (QP) structure 模組 .如有興趣可參考影片或是英文(English)版本.

語音聲碼器 (Categoria of Vocoder)

在上一篇文章中 ([2020] 語音生成 (零): 語音聲碼器, RNN 和 CNN 語音訊號生成模型),我們總結目前主流的語音聲碼器 (vocoder) 可以分為兩大類,1. 基於聲源濾波模型 (source-filter model) 的聲碼器,其中包含激勵訊號生成 (excitation generation) 以及頻譜濾波 (spectral filtering) 兩個子模組.當生成語音時,聲碼器的輸入為語音特徵,輸出為語音波形;2. 基於單一類神經網路的語音生成模型,輸入可以是語音或文字特徵,而輸出同樣為語音波形.

雖然近期的單一類神經網路的語音生成模型 (例:WaveNet [A. Oord+, 2016]),在自然語音的生成上表現非常突出,然而由於其純 data-driven 的特性,且模型缺少對於語音的 prior 知識,造成這些模型缺乏對各語音成份的控制能力.因此我們團隊提出一動態調適的模型,可依據輸入不同的基頻特徵 (fundamental frequency, F0) 調整類神經網路架構.藉由這樣的方式為語音生成模型引入音高的資訊,加強其對音高的控制能力.這篇文章將介紹其中的核心模組,pitch-dependent dilated convolution neural network (PDCNN) 和 quasi-periodic (QP) structure.並介紹我們團隊基於 WaveNet 以及 parallel WaveGAN (PWG) [R. Yamamoto+, 2020] 模型,分別提出的採用自迴歸機制 (autoregressive, AR) 的 QPNet 和採用非自迴歸機制 (non-AR) 的 QPPWG

關鍵字 — Neural vocoder, WaveNet, parallel WaveGAN, pitch-dependent dilated convolution, quasi-periodic structure

單一類神經網路語音生成模型的弱點

語音訊號為一準週期 (quasi-periodic) 訊號.其中包含了具有長時間關聯性的週期成份,以及具有短時間關聯性的非週期成份.

周期 (Periodic) 與 非週期 (aperiodic) 訊號

低效的語音建模 (Inefficient speech modeling)

因此在單一固定架構,且模型不具有許多關於語音訊號 prior 知識的情況下,去同時 model 兩種成份是沒效率的.以下圖為例,在固定長度的感知域 (receptive field) 內,同樣的取樣點數及密度,對於完整地擷取非週期訊號是必要的,然而對週期訊號而言則是過取樣了 (oversampling,多取樣到的點並沒有帶給模型更多的資訊).

週期訊號過取樣 (Oversampling)

有限的音高控制能力 (Limited pitch controllability)

此外由於是單一類神經網路直接 model 完整地語音訊號,生成模型並沒有分別去 model 語音訊號的單一成份,因此即使想藉由局部地改變輸入的語音特徵,以控制語音的特定成份,依然會因為模型缺乏相關的知識而失敗.以本篇重點音高為例,當我們只改變輸入語音特徵的 F0 時,WaveNet 或 PWG 通常難以生成品質佳的語音,或是生成語音的音高與我們輸入的 F0 不匹配.

Quasi-Periodic 語音生成模型

PDCNN 和 QP Structure

CNN/dilated CNN (DCNN) 主要的弱點在於其 kernel 固定的取樣幾何架構.以 kernel 大小為 2 的一維 CNN 為例,卷積 (convolution) 運算如下式表示

y 是 CNN 的 feature map,i 表示輸入,o 則表示輸出.W^(c) 和 W^(p) 分別為現在 (current) 訊號點,以及過去 (previous) 訊號點的類神經網路權重矩陣 (需學習的權重).t 是時間索引,d 是 dilation size.對於原本的 CNN而言,d 設為 1,代表著每個時間點的卷積運算,皆是取現在時間點的輸入以及上一個時間點的輸入.而對於 DCNN 而言,d 則設為一特定常數,代表著每個時間點的卷積運算,皆是取現在時間點的輸入以及之前特定時間點的輸入.然而這樣的設計使得 CNN/DCNN 失去針對不同的輸入,決定取值不同時間點的彈性.既然語音訊號是一準週期訊號,且其週期隨著時間改變,我們根據此特性提出了 PDCNN 模組.每個時間點 PDCNN 的dilaztion size d’ 皆會隨時當時的 F0 改變,進而達到根據當前訊號的週期性,去更有效率地做卷積運算的目的.

Pitch-dependent dilated convolution neural network

由於直接去改動 CNN 架構以實現動態改變 dilation size 是相當困難的,因此我們實作時採取分離 kernel 以及重新排列輸入的feature map 的方式,去達成動態改變 dilation size 的目的.如下圖所示,一個 2×1 CNN 的輸出可以等同於兩個 1×1 CNNs (用於計算當前時間點輸入的 CNN^(c),以及用於計算過去時間點輸入的 CNN^(p)) 輸出的總和.因此藉由依造 F0 所算出的 dilation size,去重新排列 CNN^(p) 的輸入的 feature map,再將CNN^(c) 與 CNN^(p) 的輸出相加,即可實現 PDCNN 中的依據每個時間點的 F0,去改變那個時間點 CNN 運算的 dilaztion size.

PDCNN實現技巧:分離 kernel 以及重新排列輸入的 feature map

透過這樣的設計,對於每個時間點而言,類神經網路皆可以根據當下的 F0 去得到相對應的感知域大小.如下圖所示,即使訊號 (a) 與 (b) 的頻率不同,但因為 PDCNN 根據他們的 F0 去改變了其卷積取樣點 (sampling grid) 與點之間的間隔距離,使得他們的感知域都同樣涵蓋了兩個週期的訊號.

根據基頻調適的感知域大小

然而由於語音同時包含了週期與非週期的成份,我們提出了一個 QP structure 模組,以讓模型可以同時 model 這兩種成份.QP structure 模組堆疊了兩個子模組,fixed macroblock 和 adaptive macroblock.在 fixed macroblock 中.我們調用數層的 DCNN 去 model 具有短時間關聯性的非週期成份.而在 adaptive macroblock 中,我們調用數層的 PDCNN 去 model 具有長時間關聯性的週期成份,且 adaptive macroblock 模型架構會隨著當前訊號點的 F0 改變.

QPNet

首先,我們將 QP structure 應用於 WaveNet vocoder [A. Tamamori+, 2017] ,而提出的 QPNet 與 WaveNet 主要的不同點在於我們將部分的 fixed block (內含 DCNN) 用 adaptive block (內含 PDCNN) 取代.藉由 QP structure 引入語音準週期性的知識後,即使輸入的 F0 不包含於訓練語料中 F0 的範圍,QPNet 依然大幅提升生成語音的音高準確度.此外由於更有效率地拓展感知域,QPNet 的模型大小只有 WaveNet 的一半,即可達到差不多的音質與較高的音高準確度.然而採用自迴歸的機制,以及依然過大的運算量,使得 QPNet 生成語音的速度只提升了一倍,依然無法實現實時生成.

QPNet 語音生成模型 (右下角方塊為單一 residual block 放大圖)

QPPWG

為了實現實時語音生成,我們接著將 QP structure 應用於採用非自迴歸機制的 PWG 模型.由於 PWG 的分辨器 (discriminator) 以及 multi-STFT 模組,有效地輔助 PWG 生成器 (generator) 的訓練,在我們提出的 QPPWG 中沿用了這兩個模組.主要的改善在於為 PWG 的生成器引入語音準週期性的知識.即使 PWG的模型已經非常小 (只有 WaveNet 的 3%),我們提出的 QPPWG 依然進一步降低約 30% 的模型大小,同時保有差不多的語音品質以及較高的音高控制力.

QPPWG 語音生成模型 (右下角方塊為單一 residual block 放大圖)

另一方面,QPPWG 與 QPNet 不同處在於其採用非自迴歸機制,輸入除了語音特徵外還多了白雜訊,輸出直接為語音訊號點 (WaveNet 跟 QPNet 的輸出為語音訊號點的機率分布),以及只有 5% 的模型大小.根據我們的實驗結果,提出的 QP structure 不論是應用在採用自迴歸機制的 WaveNet 或是採用非自迴歸機制的 PWG,皆能在降低 30–50% 模型大小的情況下,達到差不多的音質,以及改善模型的音高控制力.

探討

QP Structure 視覺化理解

因為 PWG/QPPWG 皆直接輸出語音波形,我們可以很簡單地分解模型,一窺其內部語音生成的機制.如下圖所示,我們畫出 skip connection 累積的輸出.可以發現一個有著 20 層 residual block 的PWG,每一層皆同時針對語音的週期及非週期成份產生部分貢獻.然而當我們觀察一個前 10 層為 adaptive block 後 10 層為 fixed block 的 QPPWG的累積輸出時,可以發現前 10 層主要在 model 類似激勵訊號的語音準週期成份,而後 10 層則在 model 類似頻譜包絡線 (spectral envelope) 的成份.

另一方面,如果 QPPWG 的組成順序改為前 10 層為 fixed block 後10 層為 adaptive block,根據累積輸出的結果,可以發現變成前 10 層在 model 類似頻譜包絡線的成份,後 10 層在 model 類似激勵訊號的語音準週期成份.這視覺化的結果證實了我們對 QP structure 的假設,adaptive blocks 主要在 model 有著長時間關聯性的基頻相關的語音成份,而 fixed blocks 主要在 model 有著短時間關聯性的頻譜相關的語音成份.

PWG 累積輸出訊號頻譜圖
QPPWG (adaptive → fixed) 累積輸出訊號頻譜圖
QPPWG (fixed → adaptive) skip connection 累積輸出訊號頻譜圖

QPPWG 和 NSF 模型比較

雖然 QPPWG 為基於單一類神經網路的語音生成模型,然而其堆疊兩模組的架構非常類似於聲源濾波模型.其 adaptive blocks 可類比於激勵訊號生成模型,而 fixed blocks 則類比於頻譜濾波器.與同樣採用非自迴歸機制以及 DCNN 的neural source-filter (NSF [X. Wang+, 2019]) 模型相比,則可以發現 QPPWG 與 NSF 主要不同處在於,QPPWG 的激勵訊號生成模組是用類神經網路實現.

QPPWG 和 NSF 的比較

PDCNN 和 Deformable CNN 的機制比較

讓模型動態去調整其感興趣的區塊,動態調適模型注意力的機制並不是一個全新概念.Deformable CNN [J. Dai+, 2017] 模型是一個經典範例,且其在物體偵測 (Object detection) 領域取得非常顯著成果.如下圖所示,以一個有著 3 × 3 kernel 的 CNN 為例,取樣點 (sampling grid,藍框處) 的幾何形狀是固定的.當我們希望單一 kernel 可以覆蓋較大區域時,我們通常會使用 DCNN 在 kernel 取樣點間增加了固定大小的間隔.雖然覆蓋區域確實變大了,但因為整體的幾何形狀依然是固定的,所以連我們不感興趣的部分都被包含了進來.因此 Deformable CNN 採用讓類神經網路自己去學習,根據當時的輸入訊號去改變其 kernel 取樣點的方式,讓類神經網路只專注在重要的區域,以達到更有效率地擷取空間上的資訊.

CNN, DCNN, 和 deformable CNN

Deformable CNN 的概念以及實現方式與 PDCNN 非常相似,兩者皆是藉由改變輸入 feature map 排序的方式,達成 kernel 取樣點變形的目的.主要的差別在於,Deformable CNN 是利用類神經網路去產生 feature map 的新排列方式,而 PDCNN 則是根據當時輸入的 F0 以及生成語音的取樣頻率 (Fs) 去計算出新的排列方式.因此 PDCNN 可說是屬於 Deformable CNN 的一個特例.此外,Deformable CNN 是每一層重新排列一次 feature map.然而 PDCNN 則是在每一次 kernel 取值時皆會改變 feature map 排列方式,這也是我們必須採用分離 kernel 的原因.

PDCNN 與 deformable CNN 比較圖

結論

我們所提出的 PDCNN 是個實現簡單,額外運算量低,複雜度低的模組,且其可以很簡單地整合進任何的 CNN 模型.而 QP structure 則實現了類神經網路架構的動態調適,且其類似於聲源濾波模型架構,大大地提昇了整個類神經網路模型的可控制性及可解釋性.相比於原本的 WaveNet 和 PWG 模型,我們提出的 QPNetQPPWG 提升了音高的控制性,降低了模型大小,同時保持差不多的生成語音音質.

參考資料

Demo

https://bigpon.github.io/QuasiPeriodicWaveNet_demo/

https://bigpon.github.io/QuasiPeriodicParallelWaveGAN_demo/

Source Code

https://github.com/bigpon/QPNet

https://github.com/bigpon/QPPWG

Paper

https://arxiv.org/abs/2007.05663

https://arxiv.org/abs/2007.12955

--

--