iPALM-based mel-spectrogram inversionを活用してMFCCからの音声復元を試してみた

はじめに

前回記事の続きである.

tam5917.hatenablog.com

ところでlibrosa には mfcc_to_audio という関数が用意されている.

librosa.org

この関数はMFCC(音声認識では定番の特徴量)を音声に復元する機能を実装している.処理の具体的な中身は

  1. mfcc_to_mel (逆DCT→dBスケールからメルスケールへの変換)

  2. mel_to_audio

という2つの処理の連結であるから,mel_to_audio の部分を前回記事のiPALM-basedの復元手法やADMM-basedの復元手法に置き換えれば,音質向上が期待できる.

本記事では iPALM-basedの復元手法と mfcc_to_audio を比較し,その結果を報告するものである.

実装

以下に置いた.Enjoy!

前回記事で紹介した実装からの差分は,入力特徴量がMFCCとなることに伴った関数の引数の調整が主である. 参考までに mfcc_to_audio のデモストレーションスクリプトは以下の通り.

実験条件

実験の設定は以下の通り.ちなみに使用した音声は16kHzサンプリングの1発話音声である(『青い植木鉢』).

項目 設定
メルスペクトログラムの次数 128
MFCCの次数 16から128まで16刻み
FFTの窓長 1024
フレーム長 1024
ホップ長 256
分析窓 Hann窓
最適化のステップ数 500
iPALM ハイパパラメタ λ 10
iPALM ハイパパラメタ α 0.9

メルスペクトログラムの次数は128に設定した.これは mfcc_to_mel を実行するうえでターゲットとなるメル次数を設定する必要があったためで,メルスペクトログラムを活用する他のタスクでも標準的(むしろ,やや大きめ)な次数の設定である.

MFCCの抽出に際して,音声認識系タスクでは事前に音声データに対してプリエンファシスフィルタをかけるのが一般的だが,今回は認識が目的ではなく復元の様子を観察することが目的なので,当該フィルタ処理を省略した.

MFCCの次数は16から128まで16刻みで変えて実験した.MFCCでは通常128ほど次数を大きく設定することはない.MFCC自体がスペクトル包絡情報(= 対数パワースペクトルに対する低次のケプストラム成分)の取得を目的としたものであるから,大きな次数での分析・抽出はあまり行われない.13次元や20次元に設定する例をよく見かける.本実験では次数を上限の128まで順に大きくすることで,音質の変化を観察する目的があった.

MFCCの各次数ごとに10回試行して客観的評価指標(PESQ,ESTOI)のスコアを取得した.繰り返し試行したのは初期値のランダム性に伴ってスコアがブレるためである.

実験結果

PESQとESTOIの箱ひげ図を,図1と図2にそれぞれ示す.

図1:PESQ

図2:ESTOI

まず,いずれの次数においてもiPALM-basedの手法は mfcc_to_audio の音質を概ね上回っていることが確認できる. 次数16と32では音質の劣化が著しいことが見て取れるが,元のスペクトログラムからそれだけ情報を大幅に削っていると理解できる.次数48付近から音質が向上しはじめ,次数80付近で一旦サチる傾向が見られた.次数128では最も音質が良いが,これはメルスペクトログラムとMFCCの間で情報がほぼ落ちていないと解釈できる.

MFCCの各次数における具体的な復元音声の音質は読者も気になるところだと思うので,それら音声を試聴できるように準備した.いずれもiPALM-basedの手法で得られた復元音声である.次数16や32であっても,『青い植木鉢』は何とか聞き取れるのではなかろうか.認識系タスクでよく用いられる次数の小さいMFCCにも,発話内容がかろうじて聞き取れる程度の情報が少なくとも残っていると実感できる.

種類 音声
元音声
次数 16
次数 32
次数 48
次数 64
次数 80
次数 96
次数 112
次数 128

MFCCを逆変換する関連研究

MFCC系列の逆変換に基づいて振幅スペクトルや音声波形を復元する先行研究を探すと,例えば以下の論文が見つかる.

前者は音声強調への応用研究,後者は音声波形合成への応用研究である.後者の論文では,STFT振幅スペクトル(と称するスペクトル包絡)  \boldsymbol{S} は次式で復元できる旨が簡潔に述べられている:

 \displaystyle
\hat{\boldsymbol{S}} = \boldsymbol{M}^{+} \exp(\boldsymbol{D}^{+} \boldsymbol{C})

ここで  \boldsymbol{M} はメルフィルタバンク行列, \boldsymbol{D} はtruncated な DCT行列(低次ケプストラムを取る都合上、高次ケプストラム帯の係数を落としたもの),  \boldsymbol{C} はMFCC系列であり, +の記号は疑似逆行列の演算を意味する.mfcc_to_mel は上式の exp 演算までで止めたものに対応している.メルフィルタバンク行列の疑似逆行列をかけて周波数軸のスケールをリニアスケールにまで戻してしまったら,もはやメルスペクトログラムのinversionは適用できない.

おわりに

iPALM-basedの復元手法を使えば音質が改善されるのは最初から分かっていたわけだが,ひとつのリファレンスとして記事を残しておこうと考えたのだった.MFCCからのinversionもまた面白い研究トピックなので,引き続き調査したい.