OpenVoice:即時音声クローニングのための多目的技術
(arxiv.org)- 短い参照音声だけで話者の声色を複製し、複数の言語で話させる方式で、追加の話者別学習なしに動作する Zero-shot TTS 問題を対象としている
- 核心は、声色の複製と言語・スタイル制御を分離する構造にあり、base speaker TTS が感情・アクセント・リズム・ポーズ・イントネーションを作り、tone color converter が参照話者の声色を付与する
- 新しい言語について大規模な多話者学習データがなくても zero-shot cross-lingual 複製が可能で、学習には base TTS 用の 30K 文と converter 用の 20K 人・300K 音声サンプルが使われる
- 全体の実装は自己回帰や拡散コンポーネントを持たない feed-forward 構造で、最適化版は単一の A10G GPU 上でリアルタイムの 12 倍の性能を出し、1 秒の音声生成に 85ms かかる
- ソースコードとモデル重みが公開されており、OpenVoice は MyShell.ai の音声エンジンとして世界中の 200 万人以上に提供され、内部版は 2023 年 5 月から 10 月までに数千万回使われた
OpenVoice が狙う即時音声クローニング問題
- 即時音声クローニング(IVC)は、短い参照音声だけで特定話者の声を複製する TTS であり、追加の話者別学習なしに動作する Zero-shot TTS とも呼ばれる
- 用途はメディアコンテンツ制作、カスタムチャットボット、人間とコンピュータまたは大規模言語モデル間のマルチモーダル相互作用まで幅広い
- 既存方式には、速度、制御性、言語拡張性のそれぞれに制約がある
- VALLE、XTTS のような自己回帰方式は、参照音声の acoustic token や speaker embedding を条件として声色を複製するが、感情・アクセント・リズム・ポーズ・イントネーションのようなスタイルを柔軟に操作しにくい
- YourTTS、Voicebox のような非自己回帰方式は推論速度が速いが、声色以外のスタイルパラメータを柔軟に制御できない
- 既存の cross-lingual 音声クローニングでは通常、各言語に多数の話者を含む MSML データセットが必要で、新しい言語を追加しにくい
- OpenVoice は 3 つの目標を同時に扱う
- 参照話者の声色を複製しながら、感情、アクセント、リズム、ポーズ、イントネーションを別々に制御する
- MSML 学習データにない参照話者の言語や生成言語でも cross-lingual 複製を行う
- 大規模な商用環境で、品質を落とさず高速なリアルタイム推論を提供する
声色とスタイルを分離した構造
- OpenVoice の核心的なアイデアは、1 つの大きなモデルに声色・言語・スタイルをすべて同時に学習させるのではなく、より簡単なサブタスクに分けることにある
- base speaker TTS model は言語とスタイルを担当する
- 単一話者または多話者 TTS モデルを使える
- VITS は text encoder と duration predictor にスタイル・言語 embedding を入れるように変更できる
- InstructTTS はスタイルプロンプトを受け取れる
- Microsoft TTS のように SSML で感情、ポーズ、調音方式を指定する商用モデルも使える
- 人間が望むスタイルと言語で直接テキストを読み上げ、base voice を作ることもできる
- 公開実装では基本的に VITS が使われる
- tone color converter は base speaker の音声を参照話者の声色に変える
- encoder は base speaker 音声の short-time Fourier transformed spectrum を入力として受け取る 1D convolutional neural network である
- tone color extractor は mel-spectrogram から声色情報を含む単一ベクトルを抽出する 2D convolutional neural network である
- normalizing flow は base 音声の声色情報を除去しつつ、言語とスタイルを保持した表現を作る
- この表現は時間軸上で IPA ベースの feature と整列される
- inverse flow は参照話者の声色ベクトルを条件として入力し、新しい声色を feature map に付与する
- HiFi-GAN が最終的な raw waveform を生成する
- 公開実装の全体モデルは、自己回帰コンポーネントなしに feed-forward で動作する
- HuBERT ベースの unit 抽出方式には、声色情報だけでなく感情やアクセントまで除去してしまう問題がある
- 情報ボトルネックを構成して音声内容だけを保持する別方式では、声色を完全には除去できない
- OpenVoice の新規性は、個別の submodule の発明よりも、スタイル・言語制御と声色複製を分離したフレームワークにある
学習データと学習目標
- base speaker TTS の学習には 4 人の話者データが使われる
- アメリカ英語話者 1 人、イギリス英語話者 1 人、中国語話者 1 人、日本語話者 1 人
- 合計 30K 文、平均文長 7 秒
- 英語と中国語のデータには感情分類ラベルがある
- 修正された VITS は、emotion categorical embedding、language categorical embedding、speaker id を text encoder、duration predictor、flow layer に入力する
- 学習済みの base model は、base speaker を変えることでアクセントと言語を変え、入力テキストを異なる感情で読み上げられる
- 追加学習データの実験では、リズム、ポーズ、イントネーションも感情と同じ方式で学習可能である
- tone color converter の学習には 20K 人の 300K 音声サンプルが使われる
- 英語 約 180K サンプル
- 中国語 約 60K サンプル
- 日本語 約 60K サンプル
- このデータセットを MSML データセットと呼ぶ
- converter の学習目標は 2 つある
- encoder-decoder が自然な音を作るように mel-spectrogram loss と HiFi-GAN loss を使う
- flow layer がオーディオ feature から声色情報をできるだけ除去するように学習する
- 声色除去の学習は、テキストを IPA phoneme シーケンスに変換した後、learnable embedding と transformer encoder で text content feature を作り、オーディオ feature と dynamic time warping で整列して KL-divergence を最小化する
- flow layer にはスタイルや言語情報を条件として与えず、声色以外の情報を除去しないように設計する
- flow layer は invertible 構造なので、新しい声色情報を条件に inverse process を実行すると、同一の内容とスタイルに参照話者の声色を再び入れられる
実験結果と観察された制約
- 音声クローニングの評価は、研究ごとに学習セット、テストセット、Mean Opinion Score の評価条件が異なり、客観的な数値比較が難しい
- OpenVoice の評価は、既存手法との数値比較よりも、自身の定性的な性能分析と公開音声サンプルの提供に重点を置く
- 声色複製のテストセットには、有名人、ゲームキャラクター、匿名個人の参照話者が含まれる
- 表現力の強い独特な音声と、人間音声分布において中立的なサンプルをともに含む
- 4 つの base speaker と複数の参照話者の組み合わせで参照声色を複製し、複数の言語とアクセントで音声を生成する
- スタイル制御の評価では、base speaker model と Microsoft TTS SSML でさまざまなスタイルの 1K サンプルコーパスを作成した後、参照声色に変換する
- 感情、アクセント、リズム、ポーズ、イントネーションがよく保持される
- まれに感情がやや中立化される
- 特定文の tone color embedding vector を、同じ base speaker の異なる感情文複数から得た平均ベクトルに置き換えると、この問題が緩和される
- cross-lingual 複製は、MSML データセットにない言語に対して near zero-shot で動作する
- 参照話者の言語が MSML データセットになくても、参照話者の声色を複製できる
- 生成する言語が MSML データセットになくても、base speaker TTS がその言語をサポートしていれば、参照声色でその言語を話せる
- ただし、その言語の base speaker は必要である
- 速度実験では、最適化された OpenVoice が base speaker model と tone converter を含め、単一の A10G GPU 上でリアルタイムの 12 倍の性能を達成する
- 1 秒の音声生成に 85ms かかる
- GPU 使用分析上の上限は約 40 倍リアルタイムと推定されるが、この改善は今後の課題として残されている
- IPA の使用は cross-lingual 声色変換に重要である
- IPA は言語間で統合された音素辞書であるため、flow layer が言語中立的な表現を作れるようにする
- 他の音素辞書を使った実験では、学習に含まれなかった言語の一部音素を誤って発音する傾向が見られた
- 入力音声が正確でも、出力音声に問題が生じたり、非ネイティブのように聞こえたりする可能性が高くなる
公開資料と利用状況
- OpenVoice は、研究の再現と後続研究のためにソースコードと学習済みモデルを公開している
- 定性的な結果は OpenVoice demo で見られる
- 詳細デモは次のカテゴリに分かれている
- 公開前の内部版は、2023 年 5 月から 10 月まで世界中のユーザーに数千万回使われた
- MyShell.ai では OpenVoice を即時音声クローニングのバックエンドとして使用し、同プラットフォームで数百倍のユーザー増加を経験した
- 現在 OpenVoice は MyShell.ai の音声エンジンとして、世界中の 200 万人以上に提供されている
1件のコメント
Hacker News のコメント
著者たちがすぐ試しやすいようにしている点は良いが、一般的な音声クローン用途にはあまり合わなかった
ある本に関する Wikipedia の冒頭段落を読ませて次の文を生成したところ、耳には明らかにコンピューターが作った音のように聞こえる
音声サンプル: https://storage.googleapis.com/dalle-party/sample.mp3
クローン音声(mp3 変換): https://storage.googleapis.com/dalle-party/output_en_default...
pipでパッケージをインストールし、音声サンプルを入れてdemo_part1.ipynbを実行しただけで、ノート PC の 3070 Ti / 8GB ではほぼ即座に終わった元の音声素材をもっと多く入れると、どれくらい改善するのか気になる
これ、あるいは Eleven Labs を使って、Android スマートフォンのTTS に差し込む音声モデルを作れるのだろうか
喉頭が麻痺した友人が、スマートフォンや小さなノート PC に文字を入力してコミュニケーションすることが多い
昔の録音からその友人の声を取り出して、少しでも「自分の」声を取り戻せるなら、本当に喜ぶと思う
ただし Android 向けの解決策があるかは確かではない
Google が ALS 患者向けに作ったカスタム音声の動画を最近見たが、オンラインでは見つけられなかった
Android ではまだカスタム音声生成は提供されていないが、最新の iOS 17 はパーソナライズ音声生成をサポートしている
ModelTalker [3] は、言語障害のある人向けのカスタム音声生成に関する長期研究プロジェクトのようで、TTS が Android をサポートしているようなので、別の選択肢になり得る
[0] https://www.acapela-group.com/
[1] https://www.speakunique.co.uk/
[2] https://vocalid.ai/
[3] https://www.modeltalker.org/
Google で TTS に貢献したことがあり、Android 側も触ったことがあるが、iOS にはこの機能が内蔵されている
「Apple が出したばかりのもの」ほど強い Google のプロダクトマネージャーはいないので、むしろ希望の兆しかもしれない
今はクロスプラットフォームのオンデバイス推論に取り組んでいて、GitHub の FONNX を参照すればよい。これはしばらく心に残る 100 個の項目の一つなので、時間ができたら連絡してみる
追記: キーボードと「話す」ボタンがあり、Eleven Labs API を呼び出すAndroid アプリなら、試してみる価値がある程度には十分だろうか?
GitHub: https://github.com/myshell-ai/OpenVoice
チェックポイント: hxxps://myshell-public-repo-hosting.s3.amazonaws.com/checkpoints_1226.zip
Amazon にホストされた zip ファイルへ直接つながるリンクには抵抗があるので、チェックポイントのリンクは無効化しておいた
ファイルの中に何が入っているかも確認していない
チェックポイントについては抵抗もないし、セキュリティ劇場をするつもりもない
https://github.com/myshell-ai/OpenVoice?tab=readme-ov-file#i... から
https://myshell-public-repo-hosting.s3.amazonaws.com/checkpo... へリンクされている
この論文は気に入った
「私たちはこうやった。ほかの人もできるように助けたい」というふうに読める
特に「Remark on Novelty」節が素晴らしく、OpenVoice はモデル構造のサブモジュールを発明しようとしているのではなく、音声スタイル・言語制御を声色のクローンから分離したフレームワークこそが貢献だと述べている
自分たちの貢献を誇張しようとしていない
例: https://research.myshell.ai/open-voice
かなり印象的に見える
ライセンスが Creative Commons Attribution-NonCommercial 4.0 International License なので商用利用を禁止しており、MyShell はウォーターマークの有無にかかわらず、OpenVoice で生成された音声かどうかを検出できるとされている
それなら「open」ではないし、これでお金を稼ぐこともできないのでは?
コードを見て、使って、好きなだけ修正できるのだから、かなり開かれていると思う
非商用ライセンスを気にしない詐欺師なら、もちろん可能だろうけれど
あまり宣伝されておらず、Apple が今も開発を続けているのかも分からないが、iOS には Personal Voice という音声クローン機能がある
自分の声で学習するのに約15分かかり、ロック状態でオンデバイス処理するのに数時間かかる
電話通話と FaceTime で使え、ほかの場所でも可能かどうかは分からない
一般的な TTS にも使えるといいのだが
電話や FaceTime で使えるという表現のせいで音声から音声への変換のように聞こえるが、実際には TTS 専用だ
音声から音声への変換ではないため、吃音の特徴や韻律のような、実際の声らしく感じさせる手がかりは保持できない
数日前、英国の大手市中銀行の一つに電話したところ、いまだに愚かな「私の声が私のパスワード」プログラムへの加入を勧めていた
AI がここまで来ている段階では、これは単に不注意に感じる
いくつかの質問に答えろと言ってきた後、たった今、音声識別プログラムに登録されたと知らせてきた
これでそれを取り消す作業が、やることリストにもう一つ増えた
どの会社も一番愚かな人たちを管理職に昇進させているのかと思ってしまう
音声クローンの 非倫理的・犯罪的な利用 は合法的な利用よりはるかに多くなりそうだ、という考えがまず浮かび、今もそう思っている
実際の声を使わずに YouTube 動画を作れる一方で、TTS AI 音声にはできない個人的なイントネーションや強調は維持できる
あるいはインディーゲーム開発でも使える
基本的な声優演技を学んで不自然さを減らし、複数の声で全キャラクターを自分で演じられる
YouTube は、人々が元の作者の声でローカライズされた言語を聞けるようにするだろう
私たちは単に 声を認証手段として受け入れるべきではない
最も一般的な活用は、声優なしでアートやコンテンツをプログラム的に作ることになりそうだ
映像や 3D モデルのパイプラインとフレーム単位の変換を完成させ、リアルに見せられるようになれば、俳優もほとんど必要なくなる可能性が大きい
銀行によっては電話時に音声認証を使っており、自分から依頼しないと解除できない