著者(20代男性)による読み上げ音声データです。自由に使えるデータセットが少なく、私自身困ったため、自分の音声を収録して自由に使えるようにしました。読み上げ文は 声優統計コーパス と同一です。利用場所は特に制限を設けておりませんので、ぜひご活用ください。
Dwango Media Villageの廣芝です。DeepLearningを用いた声質変換の研究を行い、ある程度の成果 が出たため、音楽シンポジウム2018にてポスター発表 しました。せっかくなので、これまでに得た声質変換に関する知識を整理して記事を書いてみました。
最初に音声の仕組みと、声質変換で用いる音響特徴量について解説します。続いて一般的な統計的声質変換の手法に触れたあと、この手法との差分に着目して最近の声質変換手法を解説します。
音声には、音の高さや音色といった音響的な特徴と、音素列や単語といった言語的な特徴があります。声質変換では言語特徴は変換せず、音響特徴のみを変換します。そのため声質変換では、まず音声から音響特徴を抽出する必要があります。
ちなみに、音の高さは喉にある声帯の振動数を、音色は声道の形をモデル化した特徴です。この辺りの詳細を知りたい場合は 東京大学の猿渡先生の信号処理の講義資料 がとても参考になります。
音の高さや音色といった抽象的な特徴を、どうにかして数値化する必要があります。ここで、周期的なインパルス列をフィルタリングすることで音声を生成するモデルを考えます(ソース・フィルタモデル)。こうすると、音の高さはインパルス列の間隔、音色はフィルタ特性とみなせます。このとき、音声は、インパルス列とフィルタ特性(つまりスペクトル包絡)の畳み込みで合成できます。インパルス列の間隔の逆数を基本周波数またはf0と呼びます。
スペクトル包絡は音色をよく表現できる音響特徴ですが、次元が大きく扱いづらいという問題があります。スペクトル包絡は周波数方向に周期性があるので、周波数方向に逆フーリエ変換することで、表現能力をあまり損なわずに低次元な特徴量を得ることができます。これがケプストラムです。(ケプストラム【cepstrum】はスペクトル【spectrum】のアナグラムです。)
人間の聴覚を考慮することで、ケプストラムよりも表現能力を保持させた、メルケプストラムという音響特徴量があります。統計的声質変換にはこの特徴量がよく用いられます。サンプリング周波数によりますが、スペクトル包絡の次元数は512や1024と大きい一方、メルケプストラムの次元数は60ほどに小さくしても元と同程度の品質で復元できます。(別の概念でメル周波数ケプストラム係数MFCCというものがありますが、これはメルケプストラムとは異なるので注意。)
音声から音響特徴量を抽出する、もしくは逆に音響特徴量から音声を合成するにはVocoderを用います。Vocoderには、STRAIGHTや WORLD などがあります。WORLDは修正BSDライセンスであり、商業利用を考えている場合に使い勝手が良いです。
基本周波数とスペクトル包絡だけでは綺麗な音声を復元できません。Vocoderによって異なりますが、例えばWORLDであれば復元に非周期性信号が必要になります。
ちなみに、音声をフーリエ変換することで得られるスペクトルは、上述のスペクトル包絡ではありません。フーリエ変換で得たスペクトルはインパルス列の周期性が考慮されていないため、窓関数の位置による差が含まれています。
音響特徴量の変換関数を推定し、入力音声に適用することで声質変換を実現できます。このような声質変換手法を統計的声質変換と呼びます。
統計的声質変換ができ始めた頃は、同一の文章を読み上げた入力話者の音声と目標話者の音声の対データを用いて、混合ガウスモデル(Gaussian Mixture Model; GMM)を機械学習することで変換関数を推定する手法が主流でした [0]。同一の文章を読み上げた対データのことを、パラレルデータと呼びます。また、それ以外のデータのことをノンパラレルデータと呼びます。
音響特徴量には基本周波数、スペクトル包絡、非周期性信号などがありますが、機械学習で推定するのはスペクトル包絡(メルケプストラム)の変換関数のみであることが多いです。非周期性信号はスペクトル包絡に比べて話者ごとにあまり差がないため、元話者のものをコピーして用いられることが多いです。基本周波数は、入力話者と目標話者それぞれの平均と分散を求めておき、それらを用いて線形変換することが多いです。
同一の文章を読み上げていても、無音区間の有無や話速の違いによりタイミングのずれがあります。パラレルデータを用いて変換関数を推定する場合は、このタイミングのずれを修正する必要があります。この修正をアライメントと呼びます。アライメントには、0次元目(パワー)を省いたメルケプストラムに動的伸縮法(Dynamic Time Warping; DTW)を用いることが多いです。
最近の声質変換は、Vocoderではない音声生成手法を用いる、DeepLearningを用いる、GANを用いる、シーケンスを入力する、ノンパラレルデータを用いるなど、様々な改良がされています。代表的なものをいくつかピックアップして紹介します。
音声から音響特徴量を抽出する際にエラーが入ってしまいます。これを回避するために、スペクトルの差を推定して、その差を失くすようなフィルタを元音声に適用することで、音響特徴を介せずに声質変換する手法です [1]。また、この手法は基本周波数を変換できませんが、入力音声の周波数を予め変調しておくことで音高を変換する手法が提案されました。これらの手法を実装している sprocket がMITライセンスで配布されており、学習からテストまでを一通り実行できます。
GMMだったものがDeepLearningに置き換わりつつあります [2]。近年ではここをベース手法として、新規手法を提案する論文が多いです。
多層ニューラルネットで変換関数を推定し、パラレルデータを用いての学習を行いつつ、更に敵対的ネットワーク(Generative Adversarial Network; GAN)を適用することで過剰な平滑化を抑制する手法です [3]。
ノンパラレルな音声データを用いて、それらを相互変換するような関数を推定する手法です [4][5][6]。画像分野で先行していた手法でもあります。CycleGANを試してみましたが、原理上、母音が入れ替わって変換されることがあるため、高次と低次のメルケプストラムを分けて学習するなどの工夫が必要になります [4]。
音響特徴量には、例えば同じ音素であっても前後の音素列によって発声の仕方が変わるなどの、時間的な依存関係があります。LSTMやCNNを使って、こういった時間的な依存関係を考慮して声質変換する手法が提案されています [7][8]。先日公開した我々の提案手法 もこの部類に含まれます。これは 学習・テスト用のソースコード をMITライセンスで公開しているので、手軽に試すことができます。
量子化された表現空間に特徴量を削減したあと、自己回帰モデルであるWaveNetを用いて復元することで、ノンパラレルデータを用いて声質変換を学習する手法です [9]。サンプル音声の質がとても高く、世間を驚かせました。WaveNetを用いるので、学習時にはおそらく大量の音声データが必要になり、かつ変換時の波形生成は非常に遅いです。Parallel WaveNetやWaveRNNを用いれば、精度を落とさずに生成を速くできるかもしれません。
機械学習を行うためにはデータセットが必要です。ノンパラレルな音声データは比較的簡単に集めることができますが、パラレルデータは用意が大変です。 学習のためのデータセットは、国立情報学研究所の 音声コーパスリスト から探すと良いのが見つかるかもしれません。もしくは、プロの声優が読み上げた 声優統計コーパス などが取っつきやすいと思います。また、上述の声優統計コーパスと同じ文章を、著者が読み上げた音声データ も配布しております。私の音声データの利用場所は特に制限を設けておりませんので、ぜひご活用ください。
私はもともとDeepLearningを用いた画像変換の研究を行っていました。あるとき、VRが流行ったら声もバーチャルにする需要が生まれるだろうと思って、声質変換の実験をはじめました。しかし、声質変換に関してはまだまだ昔ながらの特徴量を用いるものが主流であり、その流れを把握するのに苦労しました。研究がまとまって成果を発表できる段階になると、いつの間にかVtuberブームが到来していました。おそらく今、様々な方が、DeepLearningを用いた声質変換に挑戦したいと考えているはずです。そこで、少しでもこの界隈を盛り上げたいと思い、DeepLearningは知っているけど声質変換に関してはあまり知らない方向けの解説記事を書きました。どんどん声質変換が広まって、声のバーチャル化が加速していってほしいです。
[0] Toda, T., Black, A. W. and Tokuda, K.: Voice conversion based on maximum-likelihood estimation of spectral parameter trajectory, IEEE T. ASLP, 2007.
[1] K. Kobayashi and T. Toda,: sprocket: Open-Source Voice Conversion Software, Proc. Odyssey, 2018.
[2] Ling, Z. H., Kang, S. Y., Zen, H., Senior, A., Schuster, M., Qian, X. J., Meng, H. M. and Deng, L.: Deep learning for acoustic modeling in parametric speech generation: A systematic review of existing techniques and future trends, IEEE SPM, 2015.
[3] Saito, Y., Takamichi, S. and Saruwatari, H.: Statistical Parametric Speech Synthesis Incorporating Generative Adversarial Networks, IEEE T ASLP, 2018.
[4] Fuming, F., Junichi Y., Isao, E., and Jaime, L. T.: High-quality nonparallel voice conversion based on cycle-consistent adversarial network, ICASSP, 2018.
[5] Takuhiro, K. and Hirokazu, K.: Parallel-Data-Free Voice Conversion Using Cycle-Consistent Adversarial Networks, arXiv, 2017.
[6] Hsu, C. C., Hwang, H. T., Wu, Y. C., Tsao, Y., and Wang, H. M.: Voice conversion from unaligned corpora using variational autoencoding wasserstein generative adversarial networks, INTERSPEECH, 2017.
[7] Kaneko, T., Kameoka, H., Hiramatsu, K. and Kashino, K.: Sequence-to-Sequence Voice Conversion with Similarity Metric Learned Using Generative Adversarial Networks, INTERSPEECH, 2017.
[8] 廣芝 和之, 能勢 隆, 宮本 颯, 伊藤 彰則, 小田桐 優理: 畳込みニューラルネットワークを用いた音響特徴量変換とスペクトログラム高精細化による声質変換, 音楽シンポジウム, 2018. ../../casestudy/2stack_voice_conversion/
[9] van den Oord, A., and Vinyals, O.: Neural Discrete Representation Learning, NIPS, 2017.