Real-Time-Voice-Cloning:一世代の開発者に音声クローンの仕組みを教えたオープンソースプロジェクト
テキストと録音を、聴ける作品に
ナレーション、ステム分離、カバー、効果音を、ブラウザだけで。
- テキスト読み上げも、ボイスクローンも
- ステムを分離、またはカバーを生成
- 登録して試聴。聴いてから決められる
商用プラットフォームが音声クローンを月額制のサービスにするずっと前に、その内部で何が起きているのかを一世代の開発者に教えた無料のプロジェクトがありました。Corentin Jemine が開発して GitHub で公開した Real-Time-Voice-Cloning は、SV2TTS という 3 段階のパイプラインを使い、短いサンプルから声を複製します。数え切れないほどフォークされ、研究され、後続の開発の土台にされてきた結果、ニューラル音声クローンの事実上の基準点となりました。今、本番向けの品質を求めるなら最初に選ぶものではありませんが、実際に動かして構成を理解することは、その後に登場した技術全体を理解するための、ほとんど前提条件と言えます。
Real-Time-Voice-Cloning とは?
Real-Time-Voice-Cloning は、Corentin Jemine(GitHub のユーザー名は CorentinJ)が作成した無料のオープンソース音声クローンプロジェクトです。短い音声サンプルから声を複製する 3 段階の技術で、2018 年に Google の研究チームが開発した SV2TTS を基盤としています。「5 秒で声を複製し、任意の発話をリアルタイムで生成する」というキャッチフレーズでさえ、後の影響力を十分には表していませんでした。GitHub では 60,000 を超えるスターと 9,400 のフォークを集め、これまでに公開された音声クローンのコードベースの中でも、特に広く利用・参照されるものの一つとなっています。その影響はリポジトリ自体にとどまりません。エンコーダーのコンポーネントは Resemblyzer という独立したパッケージとして切り出され、現在は Resemble AI の組織下で保守されています(Jemine は後に同社で働くようになりました)。また、その基礎技術は、中国語の音声クローンに特化して作られた、広く利用されている標準中国語向けフォークの MockingBird にも応用されました。
Real-Time-Voice-Cloning の機能上の強み
- 完全に無料で、すべて自分のハードウェア上で動作します。 アカウントも API キーも不要で、生成ごとの料金もありません。依存関係をインストールし、事前学習済みモデルをダウンロードすれば、すべてローカルで実行できます。
- 学習教材として優れたアーキテクチャです。 エンコーダー、シンセサイザー、ボコーダーが一つの不透明なモデルではなく、内部を調べられる独立した Python モジュールになっているため、ニューラル音声クローンの内部動作を理解するうえで、比較的取り組みやすいコードベースの一つです。
- 短いサンプルからの音声クローンを初めて可能にした転移学習の工夫を学べます。 このプロジェクトは、学習中に一度も聞いたことのない話者にも音声クローンを汎化できるようにした技術の、実際に動作する実装です。この考え方は、後の商用音声クローンツールの大半の基盤となっています。
- 学習用スクリプトだけでなく、実用的なツールボックスを備えています。
demo_toolbox.pyは、音声サンプルの録音や読み込み、音声生成、得られた埋め込みの確認ができる GUI を提供します。一方、demo_cli.pyでは、同じパイプラインをコマンドラインからスクリプトで利用できます。 - 学習に役立つフォークや派生プロジェクトのエコシステムがあります。 人気が高く、寛容なライセンスを採用しているため、MockingBird のようなコミュニティのフォークが新しい言語への対応を進めています。英語中心の元のバージョンに加え、実際に動作する参考実装を利用できます。
- 自分で学習を行わずに使える事前学習済みモデルがあります。 作者が公開した事前学習済み重みですぐに声を複製でき、全面的な再学習は、異なる基礎データセットや言語が本当に必要な場合に限って行えます。
SV2TTS の 3 段階アーキテクチャは実際にどう動くのか
SV2TTS の中心にある考え方は、ある特定の転移学習の工夫です。これこそが、ほとんどの TTS システムで話者ごとに何時間もの文字起こし付き音声が必要だった 2019 年当時に、このプロジェクトがわずか数秒の音声から声を複製できた理由です。「この声はどのように聞こえるか」という問題と、「TTS モデルにその声でテキストを読ませるにはどうするか」という問題を分け、それぞれを実際に入手しやすいデータセットで学習させます。
エンコーダーは話者照合モデルとして学習されます。これは、2 つの音声クリップが同じ人物の発話なのか、別の人物の発話なのかを判断することだけを仕事とするシステムです。VoxCeleb1 のように、単語単位の文字起こしを必要とせず、数千人分の音声を提供するデータセットで学習します。この照合タスクを解くには、発話内容とは無関係に声の特徴を捉える、コンパクトな数値表現(埋め込み)をモデルが学ぶ必要があります。この埋め込み空間は汎化性能が高いため、エンコーダーが一度も出会ったことのない声でも、わずか数秒の発話から利用可能な表現を生成できます。
シンセサイザーは Tacotron 型の系列変換モデルで、テキストと話者埋め込みを一緒に受け取り、その両方を条件としてメルスペクトログラムを生成します。メルスペクトログラムとは、周波数に基づいて音声を視覚的に表したものです。LibriSpeech や VCTK などのデータセットで学習することで、与えられた埋め込みに応じて読み方を調整しながら、任意のテキストを読み上げられるようになります。そのため、話者ごとに別々のモデルを用意しなくても、一つの学習済みシンセサイザーでさまざまな声の音声を生成できます。
ボコーダーは、そのメルスペクトログラムを受け取り、実際に再生できる波形へ変換します。ここで使われているボコーダーは WaveRNN に基づいています。当時一般的だった低速で遅延の大きいボコーダーではなく、リアルタイムでの利用に十分な速さで音声を生成できる点を評価して選ばれたニューラルアーキテクチャです。この 3 段階は大部分を独立して学習します。エンコーダーは話者照合用のデータセット、シンセサイザーは文字起こし付きの複数話者音声、ボコーダーはそこから得られたスペクトログラムを使います。そのため推論時には、学習済みのエンコーダーに短いサンプルを通すだけで新しい声を複製でき、シンセサイザーやボコーダーを再学習する必要はまったくありません。
Real-Time-Voice-Cloning をローカルで使い始める
- リポジトリをクローンし、実行環境を準備します。 現在のリポジトリでは uv で Python 環境と依存関係を管理します。設定上は Python 3.9 が必要で、CPU 版と CUDA 版のどちらも PyTorch 1.10 系を使用します。コマンド実行時に uv が適切な環境を作成します。
- ffmpeg と uv をインストールします。 音声ファイルの読み込みには ffmpeg が必要です。uv をインストールしたら、リポジトリのルートで下表の該当するコマンドを実行してください。Python の依存関係は uv が処理します。
- 事前学習済みモデルを使用します。 初回実行時にエンコーダー、シンセサイザー、ボコーダーの学習済み重みが自動でダウンロードされるため、自分で学習する必要はありません。自動ダウンロードに失敗した場合は、公式 README にあるリンクから手動で取得できます。
- ツールボックスを起動し、対話的に操作します。
demo_toolbox.pyで GUI が開き、参照音声の録音や読み込み、入力したテキストからの音声生成、得られた埋め込みの視覚的な確認ができます。 - スクリプトで利用する場合は CLI を使います。
demo_cli.pyは、同じエンコーダー・シンセサイザー・ボコーダーのパイプラインをコマンドラインから実行します。対話型のツールボックスよりも、大きなスクリプトへの組み込みに適しています。 - 何かを再学習する予定なら GPU を使います。 ツールボックスだけなら比較的控えめなハードウェアでも動作します(実験的な省メモリモードでは、VRAM がわずか約 2GB の GPU にも対応しています)。ただし、3 つのモデルのいずれかを本格的に再学習するなら、専用 GPU が大きな助けになります。
| 使用方法 | CPU | NVIDIA GPU |
|---|---|---|
| GUI ツールボックス | uv run --extra cpu demo_toolbox.py | uv run --extra cuda demo_toolbox.py |
| コマンドラインの例 | uv run --extra cpu demo_cli.py | uv run --extra cuda demo_cli.py |
Real-Time-Voice-Cloning でより良い結果を得るためのヒント
- 始める前に期待値を調整しましょう。 元の作者自身も、出力品質が現在の商用・オープンソースの代替手段に劣ることを率直に認めています。公開できる品質の音声を制作するためではなく、音声クローンの仕組みを理解するための手段として取り組みましょう。
- ノイズの少ない、単一話者の参照クリップを使いましょう。 エンコーダーは比較的クリーンな話者照合データで学習しているため、参照サンプルの背景ノイズや重なった発話は、より新しく頑健なシステムの場合よりも、得られる埋め込みを目立って劣化させます。
- 生成前に、ツールボックスで埋め込みの可視化を確認しましょう。 GUI の埋め込みプロットを見ると、参照クリップから不十分な表現や異常な表現が生成された場合に気づけます。シンセサイザーの不明瞭な出力を聞いてから判断するより、ここで確認するほうが早く問題を見つけられます。
- 再学習に取り組む前に、事前学習済みモデルから始めましょう。 ツールボックスで実験するだけなら、LibriSpeech の train-clean-100 サブセットをダウンロードすれば十分です。VoxCeleb1 と VCTK の全体をダウンロードするのは、実際にモデルを一から再学習すると決めてからにしましょう。
- 対象言語が英語でなければ、MockingBird を確認しましょう。 英語で学習された元のモデルを自分で別の言語に適応させようとするよりも、標準中国語に特化した既存のフォークを使うほうが、その特定のケースでは直接的な出発点になります。
Real-Time-Voice-Cloning と新しいオープンソース音声クローンの比較
| Real-Time-Voice-Cloning (SV2TTS) | より新しいオープンソースプロジェクト(Coqui XTTS-v2、Chatterbox など) | |
|---|---|---|
| 公開年 | 2019 | 2023–2025 |
| 保守状況 | アーキテクチャは古いが、その後も依存関係、導入手順、互換性が更新されている | 活発に保守されている |
| アーキテクチャ | 独立したエンコーダー、シンセサイザー、ボコーダー(Tacotron + WaveRNN) | 単一のエンドツーエンド構成、またはより統合された構成が多い |
| ゼロショットの品質 | 歴史的には重要だが、現在の基準では古い | 自然さと安定性が明確に向上 |
| 現在の最適な用途 | 実際に手を動かして音声クローンの仕組みを学ぶ | セルフホストでの実際の本番運用や趣味での利用 |
よくある質問
SV2TTS とは何ですか?
SV2TTS(Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis)は、Real-Time-Voice-Cloning の基盤となる 3 段階の技術で、2018 年に Google の研究チームが開発しました。
Real-Time-Voice-Cloning は今も保守されていますか?
モデルのアーキテクチャは古いものの、リポジトリではその後も依存関係、導入手順、互換性が更新されています。作者も音質が新しい選択肢に及ばないと注意を促しているため、本番プロジェクトでの採用は要件に合わせて判断してください。
Real-Time-Voice-Cloning で声を複製するには、どのくらいの音声が必要ですか?
プロジェクトの当初のキャッチフレーズでは、わずか数秒とされています。ただし、実際の結果は参照サンプルのノイズの少なさに大きく左右され、全体的な品質は通常、より新しい音声クローンシステムに劣ります。
Real-Time-Voice-Cloning は無料で使えますか?
はい。自分のハードウェア上で動作し、アカウント、API キー、サブスクリプションは不要です。ただし、快適に動かすには、ある程度の性能を持つコンピューターが必要で、GPU を搭載していることが理想的です。
このプロジェクトと Resemble AI にはどのような関係がありますか?
プロジェクトの作成者である Corentin Jemine は後に Resemble AI で働くようになりました。また、このプロジェクトの話者エンコーダーから派生した独立パッケージの Resemblyzer は、現在 Resemble AI の GitHub 組織下で保守されています。
Echora で参照音声をもとに新しい発話を生成する
ブラウザーで同様の音声クローンのワークフローを試したい場合は、Echora の音声クローンに参照録音をアップロードし、新しいテキストを入力すると、参照音声に似た声で発話を生成できます。生成結果は試聴してダウンロードできます。使用するのは、自分の声、または複製について明確な許可を得た声のみにしてください。