3.3.1 參數量比較
本次實驗中所設置的參數量如圖3.7所示,圖中單位M代表106。在原始的論文設置 中,參數量大小的比較為 WaveNet >WaveRNN >FFTNet >Parallel WaveGAN。 在 本次實驗中所使用到的參數量中,WaveNet所使用參數量設置和原始提出文章不 相同,是根據我們所能使用訓練資源有關,在原始的實驗設置中WaveNet的參數 總量是最大的,但在本實驗中WaveNet的總參數量小於WaveRNN。 因此本次實驗 中,參數量的比較為 WaveRNN >WaveNet >FFTNet >Parallel WaveGAN
3.3.2 產生音檔速度比較
以下實驗使用的CPU為Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,GPU為NVIDIA GeForce GTX 1080 Ti 總共測試檔案25個,檔案音長分佈如圖3.8,橫軸為音檔長 度(秒),縱軸為個數。其中測試檔案的取樣率為22,050赫茲,換算成各檔案所含數
圖 3.7: 參數量比較圖
值個數的分佈圖如圖3.9,橫軸為數值點個數,縱軸為個數。
圖 3.8: 測試檔案音長分佈圖
而聲碼器最終生成的是數值點,故我們以下討論的單位為每秒可生出多少個 數值點。 若模型每秒產生的數值點個數大於音頻取樣率,即可達到即時生成的 效果。 在本測試實驗中25音檔加起來總共有3,812,693個數值點,而每個模型在
圖 3.9: 測試檔案數值個數分佈圖
僅使用CPU和使用CPU+GPU所花費的秒數如表3.2。不過這顯然受到程式碼撰寫 的方式影響,且可以透過硬體加速的方式來做改善。本次測試中Griffin-Lim演算 法使用的迭代次數為100次,實際經驗中100次的迭代和更多次數的迭代來說其 音色人耳已分不出差別,故以此作為一個參考基準,且Griffin-Lim演算法無法使 用GPU來做加速,因此CPU+GPU欄位並無記錄。
我們透過總數值點個數和時間關係可以畫出相對平均生成速度,其中僅使 用CPU產生音檔平均生成速度為圖3.10,其中特別在計算Griffin-Lim演算法所需花 費的時間,因為Griffin-Lim不能使用在梅爾時頻譜上面,因此我們使用相同傅立 葉點數的結果做一個參考值。
在原始論文中,生成速度的比較為Parallel WaveGAN >>WaveRNN >FFT-Net >Wave>FFT-Net, 在 本 次 實 驗 中 因 為 參 數 量 和 實 作 方 式 的 關 係 , 因 此 本 實 驗 在CPU生成平均速度為Parallel WaveGAN >>WaveRNN >WaveNet >FFTNet。但是 仍可看到趨勢上WaveNet和FFTNet是在同一個數量級,而WaveRNN的生成速度 是WaveNet和FFTNet的10倍以上,而兩個非自回歸(Non-autoregressive)架構的方法
CPU CPU + GPU WaveNet 19,596 sec 26,131 sec WaveRNN 2,018 sec 1,737 sec
FFTNet 26,528 sec 10,047 sec Parallel
WaveGAN
162 sec 4.54 sec
Griffin-Lim Algorithm
127 sec N/A
表 3.2: 各模型在生成25個測試音檔花費總時間
又是WaveRNN的10倍以上,並且由於Parallel WaveGAN和Griffin Lim演算法每秒 生成的數值點個數較原始音頻取樣率22,050Hz還高,因此可以做到即時生成。在 測試實驗中,WaveNet CPU比GPU還快的原因猜測是因為在Python和PyTorch套件 上CPU多線層優化比較好,而且不斷地將記憶體的內容和GPU記憶體內容搬運需 要花費大量的時間,但這可以透過將程式碼以C++等較底層的程式語言優化,使 得效率更加提升。
從以上實驗可以得知,以生成速率來說非自回歸(Non-autoregressive)的模型生
圖 3.10: CPU產生速率圖
圖 3.11: GPU產生速率圖
成效率遠大於自回歸(Autoregressive)模型。