音声の振幅スペクトル系列から位相スペクトル系列を深層学習で直接推定するときarctan(atan2)を経由するのも悪くないねという話

はじめに

音声の位相スペクトル系列を振幅スペクトル系列から復元する手法はいくつも提案されており,再現実装を試みた記事をこれまで書いてきた.

特に位相スペクトルの差分特徴を深層学習(DNN)により推定し,そこから位相スペクトルを復元するMasuyama氏らの手法は注目に値する. その手法のモチベーションのひとつには,位相スペクトルをDNNで直接推定することの難しさがあった.例えば,波形のわずかな時間シフトに対して位相スペクトルは値が大きく変動するという特徴である.振幅スペクトルの値は時間シフトでほとんど変わらないことから,位相スペクトル推定の困難さが増すこともよく了解できる.あくまでも時間方向・周波数方向の差分特徴量の推定にDNNを用い,位相スペクトル自体は後段のアルゴリズムに任せるというMasuyama氏らの方針は合理的でもあった.

さて最近の研究を少し追ってみると,音声合成や音声強調の文脈で,位相スペクトルをDNNにより直接推定する手法を複数確認している(DNNの入力は振幅スペクトル):

なかでも位相スペクトルを推定するために,仮想的な実部・虚部をDNNが出力し,arctan (atan2) 経由で推定する方法(Chin-Hui Leeらのグループ,Zhen-Hua Lingらのグループ)に興味を惹かれた.位相スペクトルを直接DNNの出力から得る手法だと復元音声の音質があまり良くないという「先入観」が筆者にあったのだが,先の論文を見るにそのようなDNNでも高品質な音声が復元できたらしい.つまり位相スペクトルの推定精度が十分に高くなった結果が報告されている.

そこで本記事では,DNNに基づく位相スペクトル推定において,arctan (atan2) を経由させた場合にどれほどの音質が達成できるのかを具体的に検証し,その結果を報告する. 特定の先行手法を再現実装するわけではない.

実装

以下のリポジトリに置いた.Enjoy!

github.com

図1にアーキテクチャ全体を示す.図2から図4には構成要素を示す.便宜上,入力側からPreNet,MiddleNet,PostNetと名前をつけた.

図1: アーキテクチャ全体

図2: PreNetのアーキテクチャ

図3: MiddleNetのアーキテクチャ

図4: PostNetのアーキテクチャ

ネットワークアーキテクチャはconv1dとresidual connectionを基本にしている.活性化関数にはGELUを用いた.あまり凝ったアーキテクチャにするのは本意ではないが,後段のresidual block(PostNet)にGRUを差し込むのは実際に有効だった.GRUの数が多い分,訓練に時間が取られるのはネックだが.

損失関数にはvon-Mises DNNで使われたcosine distance lossおよび瞬時周波数・群遅延の正則化項を加えたものを採用した.正則化項に重み係数は導入しておらず,単純に足し合わせただけである.

評価実験

JSUTコーパスのbasic5000を訓練データに,onomatopee300をテストデータに用いた.客観評価指標にESTOI, (wideband) PESQ,LSC (log-spectral convergence)を採用した.

実験条件

訓練の基本的な設定は以下の通りである.オプティマイザはRAdamであり, decoupled_weight_decay を Trueとしてweight_decay (重み減衰の強さ)を設定した.

項目 設定
ミニバッチサイズ 64
エポック数 1000
オプティマイザ RAdam
学習率 0.001
勾配クリッピングしきい値 10.0
重み減衰の強さ 0.1
学習率スケジューラ linear warmup つき
cosine annlealing (半周期)
warm up のエポック数 5
warm up 開始時の学習率 0.000001
annealing の終端での学習率 0.00001

今回はbasic5000の各音声クリップを1.0秒ごとに事前に分割した.分割により生じた1.0秒未満の端数は訓練に利用しない.最終的に24085個の音声クリップに分割された.その他の細かい設定は上記リポジトリのconfig.pyを参考にしてほしい.ちなみにネットワークのパラメータ数は5.7Mであった(5,715,842).

冒頭に示した記事より "RPU","wRPU"(重み付きRPU),"PGHI"のスコアを比較手法として引用する.

実験結果

図5:客観評価指標の箱ひげ図

図5に各評価指標の箱ひげ図を示す.arctanを経由する手法は"ATAN"で示されている.まずATANはいずれの指標においてもRPUのスコアを大きく上回っており,一定以上の音質を達成できたことが示された.ESTOIについて,wRPUに比べて大きく下がっているものの,PGHI程度のスコアは得られている.続いてPESQではwRPUに匹敵するスコアを達成できた(すごい).最後にLSCでもwRPUを上回る収束を示しているが,PGHIには及ばなかった.以上より,少なくとも客観評価指標のうえでは高品質な音声を復元できたと言えるだろう.

考察

学習用・評価用データの準備のために,STFTの複素スペクトルから位相スペクトルを抽出する時点でatan2を使っている(numpyのangleも最終的にはatan2).そこでニューラルネットによる推定も同じatan2で揃えるのはある意味で自然とも言える.さてatan2はどの象限でも数値的に安定して偏角を計算できる点で優れている.ナイーブに割り算してarctanを計算するのではうまくいかない.実際ちょっと試したところ,損失関数の値が安定して減らなかった.そのほか,位相のラッピングにより戻り値の範囲が(-π, π]に限定される点にも注目したい.値の取りうる範囲が重要というならば,tanhやsigmoidを適当にスケーリングすればatan2を代用できる気もするが,少し試してみた感じではこちらもうまくいかなかった.この点が最終的な推定精度に与える影響はさらに精査する必要があるだろう.

参考まで,推定された位相スペクトルから復元した音声を示す.この音声に関する各手法の評価スコアも付記する.

手法 評価用音声 スコア
自然音声
N/A
RPU
ESTOI=0.981
PESQ=3.534
LSC=-13.50 [dB]
wRPU
ESTOI=0.998
PESQ=4.268
LSC=-18.22 [dB]
PGHI
ESTOI=0.992
PESQ=4.120
LSC=-23.84 [dB]
ATAN
ESTOI=0.989
PESQ=4.330
LSC=-19.27 [dB]

ATANでは位相スペクトルの推定誤差に伴った「ノイズ」が復元音声に混入していることが分かる.このノイズはフレームシフトの時間間隔すなわち0.008秒の間隔で発生していることが確認できている.本記事のATANは絶対的な位相(波形の絶対位置)の推定精度が低いのだが,群遅延つまり位相の周波数ビン間の関係は推定精度が高いようである.位相ズレに伴うノイズが入る分,音声の明瞭度を評価するESTOIは低く留まった.その一方で群遅延の推定精度向上によりフレーム内の波形包絡がきれいに出る.つまり音色の再現性が高いことを意味しており,裏を返せばスペクトルの歪みは小さい.それゆえPESQが高くなったと説明できる.ATANは訓練時に瞬時周波数と群遅延に関する正則化項を損失関数に加えただけで,群遅延自体の分布をexplicitにモデル化していないのだが,このような結果が得られたのは興味深い.

最近の先行研究たちが絶対的な位相の推定精度の問題を明示的に取り上げた様子は見られなかった.あくまでも最終的な復元音声のスコアに興味があるようだ.手法のデモ音声を聞いてみると先述のノイズが入った音声はなかったので(例えばここ URL),彼らの用いたネットワークアーキテクチャや損失関数が暗黙的に絶対的位相の推定精度を向上させていたのだろう.位相スペクトルをうまく推定しつつ高品質な音声が復元できているならば,わざわざ位相推定まわりのマニアックな面倒ごとを掘り下げる必要もないというわけである.

絶対的な位相の推定精度向上に向けて,現状のATANのアーキテクチャをベースにしたとき,どのような工夫を入れればよいのかはno ideaである.本記事の実験では音声サンプルを1秒に区切ってミニバッチを構成したが,これを2秒や3秒などもう少し長くしたうえでdilated convやattentionの仕組みを入れて,時間的により広い範囲のスペクトルを効果的に拾いながら特徴抽出する仕組みが必要なのかもしれない.根本的にアーキテクチャを変えるにせよ,先行研究で採用されたアーキテクチャの構成要素や損失関数の試行錯誤は避けられない.Zhen-Hua Lingらのグループが使っているanti-wrapping lossの導入は興味深く,先行研究と条件を揃えるという意味でも検討の価値はある.

JSUTコーパスのbasic5000では訓練データ量として少ないという可能性ももちろん考えられるので,もう少し規模の大きいデータセットを使った実験と検証もまた必要だろう.特に訓練データに多数の話者を含む「不特定話者モデル」による検証は避けられない.またデータ量不足を補うためのデータ拡張も本実験ではまったく施しておらず,その効果は未検証である.少なくともランダムにフレーム開始位置をずらしてSTFTする形式のデータ拡張は適用してもよいだろう.

おわりに

位相スペクトルを推定するときにはarctanatan2)を経由するとうまくいく可能性が高い,という実験結果が得られた.本記事で採用したアーキテクチャは絶対的な位相の推定にまだ課題を残しており,研究の余地は依然として多く残されているともいえる.

Ablation studyを本来しっかりやらねばならないが,本記事は論文ではないのでかなりサボってしまった.特にATANとアーキテクチャ(PreNet, MiddleNet, PostNet)を揃えたうえで,最終層でatan2を使わずにDNNの出力を推定結果として用いる手法(いわゆるvon-Mises DNN式)でどれくらい推定がうまく行くのかはきちんと確かめておきたい.これが次の位相復元シリーズのネタになるだろう.