EmotiVoice:書くだけで感情を演出
テキストと録音を、聴ける作品に
ナレーション、ステム分離、カバー、効果音を、ブラウザだけで。
- テキスト読み上げも、ボイスクローンも
- ステムを分離、またはカバーを生成
- 登録して試聴。聴いてから決められる
「感情表現」をうたうTTSモデルの多くは、あらかじめ決められた少数の感情タグから選ぶ方式です。NetEase Youdaoがオープンソース化したEmotiVoiceは、より柔軟な方法を採用しています。声優に演技を指示するように、求める雰囲気をスタイルプロンプトで説明すると、モデルがそれを演じます。固定されたスイッチではなくプロンプトで駆動する設計こそ、このモデルを特徴づける要素です。英語と中国語のバイリンガル基盤に加え、実に大規模な音声ライブラリも備えています。
EmotiVoiceとは?
EmotiVoiceは、NetEase Youdaoが2023年11月に公開したApache 2.0ライセンスのオープンソース・テキスト読み上げエンジンです。PromptTTSの研究手法から直接着想を得たTransformerベースのシステムで、LibriTTSおよびHi-Fi TTSデータセットを使って学習されています。プロジェクトは自らをマルチボイスかつプロンプト制御型のエンジンと明確に位置づけており、その両方が独自性を支える同じくらい重要な要素です。
EmotiVoiceの機能上の強み
- 2,000以上のプリセット音声を英語と中国語で収録。少数の汎用的な初期設定ではなく、年齢、声の高さ、声質を実に幅広くカバーしています。
- プロンプトで制御する感情表現。喜び、興奮、悲しみ、怒りなどの雰囲気を、厳密に固定されたタグではなくスタイルプロンプトで指定します。
- 感情以外のスタイル要素として、ピッチ、速度、エネルギーがあり、雰囲気と並行して個別に調整できます。
- 自分の録音を使った音声クローン。初回リリースの直後に追加され、カスタム音声でプリセットライブラリを拡張できます。
- 複数の連携方法。対話型Webインターフェース、一括生成用のスクリプトインターフェース、既存ツールに最小限の変更で組み込めるOpenAI互換TTS APIが用意されています。
- 完全にオープンでセルフホスト可能。デプロイ後はオフラインで動作し、商用上の制限がないライセンスで提供されます。
プロンプトベースのスタイル制御は実際にどう機能するのか
PromptTTSの手法に基づくEmotiVoiceの現行実装では、ピッチ、速度、エネルギー、感情という4つのスタイル要素で話し方を形づくります。特に、ここに性別は含まれていません。プロジェクト自身のドキュメントでも、現行のスタイル制御要素から性別を除外していることが明記されていますが、需要があれば大きな困難なく追加できるとも記されています。実際には、声の基本的な性別の特徴は選択したプリセット音声によって決まり、プロンプトが形づくるのは、その声がセリフをどのように話すか、つまり感情的な色合い、ペース、強さです。プロンプトを書く前に、この役割分担を理解しておくことが大切です。まず音声を選んで声のアイデンティティを決め、その後でプロンプトを書いて演技を指示します。
EmotiVoiceを使い始める
EmotiVoiceを最も手早く試す方法はDockerイメージです。NVIDIA GPUを搭載し、NVIDIA Container Toolkitを設定したマシンが必要で、提供されたイメージを実行するとブラウザから直接使える対話型Webデモが起動します。手動でセットアップしたい場合は、condaによるPython 3.8環境を使ったローカルインストールも文書化されており、設定や依存関係をより細かく管理できます。プログラムから利用する場合は、コミュニティが提供するOpenAI互換APIサーバーを、少数のPythonパッケージとともにインストールし、コアエンジンと並行して実行できます。これにより、すでにOpenAIのTTS API形式向けに構築されたクライアントから、コードをほとんど変更せずにEmotiVoiceを呼び出せます。
より良い結果を得るためのヒント
- 感情に名前を付けるだけでなく、演技を指示するつもりでスタイルプロンプトを書きましょう。 このシステムはタグではなくプロンプトで動くため、中心となる感情に加えて強さやペースも説明したほうが、単語一つのラベルより正確な結果を得やすくなります。
- 感情プロンプトを書く前にプリセット音声を選びましょう。 性別や声の基本的なアイデンティティはスタイルプロンプトではなく音声選択から決まるため、まず適切な音声を決め、その後で望む話し方になるようプロンプトを調整します。
- 大量の処理には一括生成用のスクリプトインターフェースを使いましょう。 数本を超えるクリップを生成する場合、クリップごとにWebインターフェースを手動操作する手間を避けられます。
- 2,000以上のプリセットがどれも合わない場合に限って、音声クローンを選びましょう。 既存の音声ライブラリはすでに大規模なので、まずプリセットを確認する価値があります。クローンは特定の実在する声が必要な場合のための機能であり、既定の出発点ではありません。
- 商用TTSベンダーから置き換える場合は、OpenAI互換APIを使いましょう。 同APIのリクエスト形式を再現しているため、既存の連携コードを移行する作業は、完全に独自のインターフェースへ適応させるより一般に小さくなります。
EmotiVoiceと他の表現豊かなバイリンガルモデルの比較
| EmotiVoice | ChatTTS | Chatterbox | |
|---|---|---|---|
| 開発母体 | NetEase Youdao | 2noise | Resemble AI |
| 言語 | 英語、中国語 | 中国語、英語 | 英語(多言語:23) |
| 感情の制御方法 | 自由形式のスタイルプロンプト | 生成時にモデルが予測 | 明示的な誇張度パラメータ |
| プリセット音声数 | 2,000以上 | ガウスサンプリングによるマルチスピーカー | ゼロショットクローンが中心 |
| 音声クローン | 対応、個人の録音を使用 | 主なワークフローではない | 対応、ゼロショット |
| ライセンス | Apache 2.0 | AGPLv3+(コード)/ CC BY-NC 4.0(重み) | MIT |
EmotiVoiceならではの位置づけは、プロンプトによる柔軟性と膨大なプリセット音声の規模を組み合わせた点にあります。ChatTTSが会話の韻律を生成へ直接組み込み、Chatterboxが単一の誇張度ダイヤルを提供するのに対し、EmotiVoiceでは実に大規模な音声カタログを使いながら、自分の言葉で話し方を説明できます。
よくある質問
EmotiVoiceで感情を制御するにはどうすればよいですか?
固定された感情タグから選ぶのではなく、日常的な言葉でスタイルプロンプトを書きます。モデルはプロンプトを解釈して話し方を形づくり、ピッチ、速度、エネルギーもそれぞれ個別に調整できます。
EmotiVoiceはプロンプトで声の性別を制御できますか?
現時点ではできません。性別はスタイルプロンプトではなく、選択したプリセット音声によって決まります。プロジェクトの現行スタイル制御実装では性別が意図的に要素から除外されていますが、将来追加できるものとして言及されています。
EmotiVoiceは音声クローンに対応していますか?
はい。2,000以上のプリセット音声に加えて、自分の録音を使った音声クローンにも対応しています。
EmotiVoiceはどの言語に対応していますか?
英語と中国語です。プロジェクトのロードマップでは、日本語や韓国語を含む追加言語への対応も挙げられています。
EmotiVoiceは商用でも無料で使えますか?
はい。ロイヤリティや個別のライセンス契約なしで商用利用できるApache 2.0ライセンスで公開されています。
Echoraでテキストを音声に変換
テキストから一人の話者による音声を作る同様のワークフローをブラウザで利用したい場合は、Echoraのテキスト読み上げを使えます。最大5,000文字を入力し、内蔵音声または保存したカスタム音声を選び、必要に応じて対応している話し方タグを追加して安定性を調整できます。生成結果はプレビューしてMP3でダウンロードできます。