見出し画像

技術書典12に出展した『Voicy Tech Story Vol.3』より「社長の声で言いたい放題! 〜音声変換 Voice Conversion〜」を公開

Voicyでエンジニア (SRE) をしているせんちゃんこと、千田です。

Voicyでは、有志メンバーが集い技術書典13に出展します!
今回の本の題名は「Voicy Tech Story Vol.4」です。

私はChapter 1 「 音声認識を応用して無声区間を自動削除する手法とその実装」を執筆しました。


技術書典13は久しぶりのオフライン開催ということで、われわれも2022年9月11日 (日) に池袋サンシャインシティにて本書を販売いたします!


これに際しまして、前回、技術書典12向けに執筆した『Voicy Tech Story Vol.3』より、私が執筆したChapter 1 「社長の声で言いたい放題! 〜音声変換 Voice Conversion〜」の一部を公開します!


↓↓↓ ここから ↓↓↓

社長の声で言いたい放題! 〜音声変換 Voice Conversion〜

概要

Voicy にはたくさんの音声データが蓄積されています。その中には代表緒方の音声も含まれます。そこで今回、ディープラーニングの力を使って緒方の声になりきり、勝手にいろいろなセリフをしゃべってみよう!という挑戦を行いました。結果はいかに...

はじめに

バックエンドエンジニアのせんちゃんこと千田です。この度技術書典執筆のために、とある実験を行いました。題して「社長の声で言いたい放題!」。平社員である私がVoicy代表緒方になりきって言いたい放題しようという計画です。具体的には、Voicyのデータベースに保存されている緒方の音声データを使用し、自分の声を緒方の声に変換しようと試みました。

音声プラットフォームVoicyでは、日々多くのパーソナリティに声で発信していただいています。様々な業界の方がいる中で緒方も発信を行っており、創業者かつ古参パーソナリティであるため蓄積された音声データも多いです。これを活用しようというのが今回の趣旨です。

次の音声変換の節では、音声変換という技術について説明していきます。その後、実験の節では、この技術を使って緒方になりきることができたのかを書いていきます。

音声変換 Voice Conversion

音声変換とは
音声変換 (Voice Conversion; VC) は、与えられた音声波形に含まれる言語情報を保持したまま、非言語情報を変換する技術です。特に目標となる対象が決まっており、それに近くなるような変換を行います。平たく言えば、話している内容は変えずに他の誰かの声に変換する技術です。某名探偵が推理を披露するときに使っている蝶ネクタイ型変声機をイメージしてもらえると分かりやすいと思います。

画像1

ここでは特に、機械学習を使用し目標とする話者 (話し手) の声に変換する技術を指すこととします。現在広く使われているいわゆるボイスチェンジャーは、入力された音声波形を加工することで元の音声とは異なった特徴を持つ音声を出力します。例えば、音程を高くする/低くする、声を太くする/細くする、といった処理です。一方で、今回使用する狭義の音声変換は、ある特定の話者の声に変換します。つまり「自分の声を xx さんの声に変換」します。

音声変換技術の発展により将来的に実現できると考えられている応用例を三つ紹介します。

1. より複雑な変換を実現するボイスチェンジャー
2. 発声障がい者の発話支援
3. 外国語学習

まずは1つ目の「より複雑な変換を実現するボイスチェンジャー」について。上述の通り特定の誰かの声になりきることができるため、エンターテインメント領域での応用は想像に難くありません。具体例としては、カラオケで好きなアーティストの声で歌える機能の実現や、著名人の声でのライブ配信等です (これを行うこと自体の是非はさておき) 。

2つ目は「発声障がい者の発話支援」です。声帯の切除等で発声が困難となった方が、以前の健常時の声で話すために音声変換が使えるのではないかと期待されています。

発声が困難となった方が使用する器具に電動式人工喉頭があります。声帯が作り出すブザー音のような音を人工的に生成する器具で、これを喉に当てた状態で口の形や舌の位置を調整することで、発声を可能にします。

しかしながら、練習により最低限の会話に十分な発話が可能にはなるものの、自然な人間の音声とはなりません。そこで、このような不自然な音声を健常時の本人の声に変換するという方法が考えられます。ただしこれを実現するためには、まだ発声ができるうちに音声をたくさん録音しておく必要があります。

3つ目は「外国語学習」です。外国語の発音を学習する際、母国語にない音素の発音方法や自然なアクセントを習得することは容易ではありません。学習過程で、学習者が話してみた音声を、その人本人の声質のまま正しい発音に変換するシステムがあれば、それをお手本として発音の練習がしやすくなると考えられます。

このように、幅広い分野での応用が期待されているのが音声変換の技術です。

ただ、本章の執筆時現在 (2022年1月) の段階で、完璧な手法は確認されていません。

近年、ほとんど人間と遜色のない声質の音声を出力することができるようにはなっているものの、完全に目標とする声質を再現するには到っていないほか、イントネーションの再現などが難しいという課題もあります。また、高精度な変換はGPUを使用したリッチな計算機環境下での成果であり、モバイル端末等で同品質の変換を行うことは難しいです。できたとしても、より多くの計算時間を要します。

変換音声の品質が重要であることは言うまでもないことですが、音声変換という技術の性質上、リアルタイム性が強く求められる応用例も多く考えられるでしょう。しかしながら、リアルタイムでの変換を実現するにはさらにもう一段の進展が必要な状況にあります。

今回の企画の成果に保険を掛けているようですが (その側面もありますが (笑) ) 、これが本技術の現在地です。

次節では、実際にどのような手法があるのかについて、また今回使用した手法について紹介します。

音声変換の手法

ここでは、自分の声をVoicy代表緒方の声に変換したいと考えています。そのため、この状況を例に説明していきます。この場合一般的には自分を元話者 (もとわしゃ) 、緒方を目標話者 (もくひょうわしゃ) と呼びます。

まず真っ先に考えつく実現方法として、変換元である自分の声のデータと、変換したい対象である緒方の声のデータをそれぞれ大量に用意し、自分の声を入力、緒方の声を正解データとして機械学習モデルを学習する方法が考えられます。

この場合、学習を行うためには、自分の音声と全く同じ発話内容の緒方の音声データが正解データとなります。このように、複数人の話者による同じ発話内容の音声データ対をパラレルデータと呼び、パラレルデータを用いる音声変換手法はパラレル音声変換と呼びます。

パラレル音声変換の最も典型的な手順を簡単に紹介します。

まず、上述のパラレルデータを学習データとして用意します。入力データが元話者の音声データ、正解データが目標話者による同一発話内容の音声データです。次に、これらから音響特徴量と呼ばれる特徴量を抽出します。これは一般的に音声のスペクトル情報の系列です。

その後、元話者と目標話者が発している音素が対応している部分のペアを機械学習の学習データとします。このとき同じ内容を発話しているとはいえ、2人が完全に同じ速さで話しているはずがありません。そのため、音声のどの部分とどの部分が対応しているかの判定には動的時間伸縮法 (Dynamic Time Warping; DTW) という動的計画法を用いたアルゴリズムが使用されます。

使用する機械学習のモデルとしては古くは混合ガウスモデル (Gaussian Mixture Model; GMM) 、その後階層型ニューラルネットワーク (Feed-forward Neural Network; FFNN) などが使われてきました。

上記の手法は、パラレルデータの収集に労力がかかること、DTWのマッチング精度に依存してしまうこと、音声の時系列方向の相関の考慮が難しいこと等の理由から、人間らしい声の実現には至っていませんでした。

パラレルデータを用いない手法のひとつとして提案されているのが、CycleGANを使用した手法です。

CycleGANはもともと画像変換の分野で2017年に提案されたモデルです。モネの絵画風画像と写真風画像の変換、シマウマの画像と馬の画像の変換、などができるとして、当時界隈で話題になりました。

詳しく書くとこれだけで一冊の本になってしまうのでここでは紹介にとどめておきます。

さて、ここまでに紹介したパラレル音声変換や、CycleGANに基づく手法は、一対一 (one-to-one) の変換を前提とした手法でした。すなわち、ある特定の人の声を、もう一人の特定の人の声に変換します。そのため、使用者が変わる度にモデルを学習し直す必要が出てきてしまいます。ひとつのモデルが学習するのはあくまで一対一の声の特徴の関係性であるからです。

今回の例では、自分の声を緒方の声に変換することしかできず汎用性に欠けます。当然自分だけでなく他の社員も使えるものとなった方がおもしろいはずです。

それに対して近年主流となりつつある手法は、多対一 (many-to-one) や多対多 (many-to-many) の変換が可能です。イメージとしては、次の図のように入力音声から元話者の話者情報を落として中間表現にし、それに目標話者の情報を乗せて音声波形を再構成します。ここで、入力を中間表現に変換する部分をエンコーダ、中間表現を出力に変換する部分をデコーダと呼ぶこととします。

画像2

わかりやすく極端な例で言えば、エンコーダを音声認識器、デコーダを音声合成器としても構いません。すなわち、一度音声認識でテキストに変換し、それを緒方の声で音声合成するということです。これでも広い意味では音声変換と呼ぶことができます。

ただしこの場合、元話者の話し方のトーンやアクセント、話すスピード等の情報は一切失われてしまいます。テキストには発話内容以外の情報がないからです。

用途によってはこれでも問題ありませんが、先に述べたような情報を残したい場合もあるはずです。このように、中間表現に何を採用するかによって元音声の情報をどこまで残すのかが変わってきます。この中間表現は人間が与えるのか、もしくはそれ自体もモデルに学習させるのか、その場合どのようなモデルにすれば意図した情報のみが残るような学習が可能なのか、といったことを考えてうまく設計することが求められます。

エンコーダ・デコーダ型の手法のひとつに音素事後確率 (Phonetic PosteriorGrams; PPG) を中間表現として採用する手法があります。PPGは、音声認識で使われるモジュールによって得られるものです (つまりこのモジュールがエンコーダです) 。簡単に言えば、テキストに近いがテキストよりは元音声の情報が残っている表現です。

デコーダはこのPPGから目標話者の音声を合成できるニューラルネットワークです。こちらは学習によって獲得します。

この手法では、特定の話し手に特化していない話者非依存の音声認識器を使うことで、どんな人の声でも目標話者の声に変換する多対一の変換が実現できます。つまり、自分の声だけでなく誰の声でも緒方の声に変換できます。また、デコーダの設計次第では多対多の変換も可能です。

異なる音声変換の手法を同じデータセットで比較しようという趣旨で2年に一度開催されている “Voice Conversion Challenge” の2018年のコンペティションではこちらの手法が最も高い成果を上げました。

また、変分自己符号化器 (Variational AutoEncoder; VAE) を応用する手法があります。

VAEは、エンコーダ => 潜在変数 => デコーダ という構造のニューラルネットワークです。学習時には入力データと正解データに全く同じものを使います。また、潜在変数は入力よりも小さい次元数となるように設計します。こうすることで、エンコーダは入力データの情報をできるだけ失わないよう、うまく要約した潜在変数を出力するようになります。そうしないとデコーダが元の入力を再構成できないからです。

実はここまではVAEの話というよりは一般的なオートエンコーダの話です。しかしながら、VAEを使った音声変換の紹介はここまでで十分できるため、これ以上の説明は省略します。

VAEを使った音声変換ではひとつのモデルの学習に複数人の音声データを使用します。そして、デコーダに潜在変数だけでなく今再構成しようとしている音声がだれのものなのかを表現した情報を渡します。これは典型的には、学習に使用する話者の人数分の次元数を持った話者コードとよばれるOne-hotベクトルです。こうすることで、デコーダは誰の音声を生成すればいいのか話者コードを参照して理解していくようになります。

学習完了後に変換を実現する手順は以下の通りです。
元話者の音声データをエンコーダに入力する => 潜在表現が得られる
得られた潜在表現を、目標話者 (元話者とは違う人) の話者コードとともにデコーダに入力 => 目標話者の声に変換された音声データが得られる

誰の声で再構成するのかについては、潜在表現ではなく話者コードに依存する、というのがポイントです。VAEを使った方法では、学習に使った音声データの話者であればだれでも目標話者とすることができるので、多対多の変換を行うことができます。

↑↑↑ ここまで ↑↑↑


以降、以下のような章/節が続きます!

採用した手法

実験

実験条件

結果と考察

むすび

なかなか難しかったです。悪いことは考えるものではありませんね。これを読んでくださっている方も、技術を悪用しようとは思わないことをおすすめします。

この章では、音声変換という技術の応用例やこれまでに提案されてきた手法について紹介してきました。

Voicyには多くの音声データが蓄積されていますが、未だなかなか活用できずにいます。現在のビジネスモデルで短期的に成果が期待できるような応用であれば検討の余地がある一方で、長期投資の側面が大きい研究活動についてはなかなか手をつけられません。将来的にはよりデータの活用を進めていき、その成果を社会に対して還元していけるよう努力していきます。

参考文献

Voice Conversion Challenge 2020: Intra-lingual semi-parallel and cross-lingual voice conversion: https://arxiv.org/abs/2008.12527

エンタメ活用へ向けたAIによる音声生成(Part2) リアルタイム音声変換:
https://engineering.dena.com/blog/2020/03/voice-conversion-for-entertainment/

電動式人工喉頭 ユアトーン: https://www.yourtone.jp/whats_yourtone.html

CycleGAN-VC: Parallel-Data-Free Voice Conversion
Using Cycle-Consistent Adversarial Networks: http://www.kecl.ntt.co.jp/people/kaneko.takuhiro/projects/cyclegan-vc/index.html

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks: https://junyanz.github.io/CycleGAN/

The Voice Conversion Challenge 2018: Promoting Development of Parallel and Nonparallel Methods: https://arxiv.org/abs/1804.04262

Neural Discrete Representation Learning: https://arxiv.org/abs/1711.00937

JVS (Japanese versatile speech) corpus: https://sites.google.com/site/shinnosuketakamichi/research-topics/jvs_corpus

mkotha/WaveRNN: https://github.com/mkotha/WaveRNN

DeNA目線で見る 音声変換の最先端: https://qiita.com/Kohki_Mametani/items/03d863486dd3d806c69c

この記事が気に入ったらサポートをしてみませんか?