台本をゲームの音声にする
Unreal Engine 5.5-5.8 向け VoiceDirector の操作ガイドです。台詞を取り込み、録音または生成したテイクを確認し、ゲームで再生できる音声アセットとして公開します。
ボタンや項目名はプラグインに表示される英語表記のままです。操作手順は日本語で説明します。
VoiceDirector でできること
#VoiceDirector は Unreal エディタで台詞音声を制作するツールです。自分で用意した台詞に音声を割り当てるか録音を取り込み、試聴してゲームで使うテイクを決めます。結果は Unreal 標準の SoundWave 音声アセットです。会話の関連付けを設定すれば DialogueWave も作成できます。
| タブ | 用途 |
|---|---|
| Lines | 台本の取り込み、台詞選択、テイクの試聴と承認。 |
| Voices | キャラクターと各言語に音声を割り当てる。 |
| Jobs | 生成の進捗を確認し、新しいテイクを開く。 |
| Publish | ゲーム用音声アセットの変更を確認して適用する。 |
| Settings | 接続、出力、DataTable の対応付け、上限を設定する。 |
台詞は台本の 1 項目、言語バリアントはその台詞の特定言語版、テイクはその録音または生成音声です。複数のテイクを残しながら、ゲームには従来の音声を使い続けられます。
既存の WAV から始められます。AI 生成は任意です。VoiceDirector は台詞の執筆、翻訳、音声クローン、ゲーム実行中の音声生成を行いません。
インストールして開く
#初めての Unreal プロジェクト
- Epic Games Launcher > Unreal Engine > Library を開き、UE 5.5、5.6、5.7、5.8 のいずれかを起動します。
- Games > Third Person、Blueprint、Desktop を選びます。Blueprint(ブループリント)はノードをつないで作る視覚的なプログラムです。このガイドでは C++ を書く必要はありません。
- 名前と空き容量のある保存先を指定し、Create を押してエディタの起動を待ちます。
プラグインを追加
使用する Unreal バージョンに対応した Windows x64 用のビルドを選びます。Fab 経由なら Launcher のライブラリから対象エンジンに追加します。プロジェクトに置く場合はエディタを閉じ、プラグインのフォルダー全体を YourProject/Plugins/VoiceDirector/ に置きます。Plugins がなければ作成します。
YourProject/Plugins/VoiceDirector/VoiceDirector.upluginVoiceDirector フォルダーを二重にしないでください。Blueprint のみのプロジェクトにはコンパイル済みパッケージと同梱のビルドファイルが必要です。ソースのみの場合は C++ コンパイラとビルドが必要です。
- プロジェクトを開き直して Edit > Plugins で VoiceDirector を検索し、有効にします。
- 求められたら再起動します。
- Tools > VoiceDirector を開きます。
エンジン内またはプロジェクト内の一方だけにインストールします。同じプラグインが 2 つあると起動できない場合があります。
最初の台詞をゲームで使う
#この手順は付属の録音を使うため、Kokoro や ElevenLabs の設定は不要です。
取り込み可能な最初の台詞
CSV 1 行と「Keep your voice down.」という実際の WAV 音声です。音声はローカルの Kokoro で生成しました。取り込みにサーバーやアカウントは不要です。
- Settings の Output Content folder (/Game/...) を
/Game/VoiceDirector/Audioにし、Save Output Folder を押します。/Gameはプロジェクトの Content フォルダーを意味し、Windows のドライブではありません。 - サンプルの 2 ファイルを分かりやすい場所に保存します。
- Lines > Import script を開き、Import SourceId に
MyScriptを入力します。Import CSV でサンプル CSV を選びます。 - プレビューを確認して Apply Import を押します。Full snapshot はオフのままにします。
L-001のenを選び、Import WAV でサンプル WAV を読み込みます。- 必要なら Select take、続いて Play を押します。「Keep your voice down.」が聞こえます。Stop で停止します。
- Approve take で承認します。
- Publish または Review publishing を開きます。Refresh Preview、新しい SoundWave のチェック、Apply Selected Approved の順に操作します。
- Ctrl + Space で Content Drawer を開き、Content > VoiceDirector > Audio を確認します。次はゲームでの再生です。
狭いウィンドウでは Sources & filters に取り込み操作、Take review にテイク確認があります。台詞のダブルクリックでも確認を開けます。VD_... という名前は正常です。Copy でパスをコピーできます。
台本を書く・取り込む
#表計算ソフトまたはテキストエディタで台詞を書き、カンマ区切り UTF-8 CSV で保存します。
LineId,CharacterId,Culture,Text,Context
L-001,rowan,en,Keep your voice down.,At the city gate| 列 | 意味 |
|---|---|
| LineId | 固定の台詞 ID。文章を修正しても維持します。 |
| CharacterId | 固定のキャラクター ID。音声の割り当てに使います。 |
| Culture | en、fr、ru などの言語コード。 |
| Text | 表示する台詞。必須です。 |
| Context | 任意の演技指示や場面メモ。 |
| SpokenText | 任意の正確な読み上げ文。空欄なら Text を使います。 |
| SourceNamespace / SourceKey / SourceRevision | 任意のソース情報。 |
Lines > Import script で固定の Import SourceId を入力し、Import CSV を選びます。Added / Changed / Archived / Unchanged を確認後、Apply Import を押します。プレビューのみでは変更されません。
再取り込みでは同じ SourceId と LineId を使うと ID と過去のテイクが残ります。同じソース内の LineId/Culture は一意にしてください。同じ LineId を複数言語に使えますが、キャラクターは揃えます。
Full snapshot は、このソースと今回含まれる言語について、欠けている台詞をアーカイブします。その範囲を完全に置き換える場合だけ有効にします。オフなら欠けた行も残ります。アーカイブは録音を削除しません。
カンマを含むセルは二重引用符で囲み、内部の引用符は 2 つ続けます:"彼は ""待て。"" と言った"。セミコロン区切りはカンマに変換してください。上限は 16 MiB、10,000 行です。
Unreal の DataTable を取り込む
#DataTable は Unreal 内の表形式アセットです。CSV や手書き JSON を用意せずに直接選択できます。
- Settings > Script DataTable でアセットを選びます。
- 列を LineId、CharacterId、Culture、Text と、必要に応じて Context、SpokenText に対応付けます。String、Name、Text 型に対応します。
@RowNameは行名を LineId に使います。 - 取り込み元はアセットのパスから自動的に決まります。Preview DataTable Import を押します。
- Lines の変更を確認し、Apply Import を押します。
表を新しく作る
Content Browser で Blueprint Structure を作り、String 型の LineId、CharacterId、Culture と Text 型の Text、Context、SpokenText を追加して保存します。Data Table を作成してこの構造体を行型に指定し、サンプル値の行を追加します。最大 10,000 行です。
VoiceDirectorScriptRow もエディタ用取り込み型として提供されます。パッケージ化したゲームで使う表には独自の実行時構造体を用意してください。公開済み SoundWave は通常のゲームアセットです。
キャラクターに音声を割り当てる
#Kokoro または ElevenLabs の既存音声を使います。割り当ては音声と CharacterId + Culture の関連付けであり、新しい音声モデルの作成ではありません。
- 後続の章でプロバイダーを設定します。
- Voices でプロバイダーを選び、Check Connection / List Voices を押します。音声生成せず一覧を読み込みます。
- 台本の CharacterId と Culture を入力し、Voice、Model、利用可能な設定を選んで Save Voice Assignment を押します。
- Lines で 1 バリアントを選び、Generate new take を押します。
例:rowan、en、音声 af_heart、モデル kokoro。言語に対応する音声を選びます。WAV の取り込みには割り当て不要です。変更は次の生成に適用され、過去のテイクには元の設定が残ります。
ローカル Kokoro を設定する
#Kokoro-FastAPI は自分の PC または接続可能なサーバーで別に動かします。VoiceDirector はインストールや起動を行いません。依存関係とモデル用の空き容量が必要です。
- Kokoro-FastAPI v0.9.0 の公式設定手順に従います。Windows CPU では必要なソフトとモデルを用意し、バックエンドのフォルダーで
.start-cpu.ps1を実行します。 - 起動とモデル読み込みを待ちます。標準のローカル設定なら
http://127.0.0.1:8880/docsをブラウザーで確認できます。 - Settings の Kokoro-FastAPI base URL を
http://127.0.0.1:8880/v1にし、Save Settings を押します。 - Voices で一覧を取得し、まず
af_heart、kokoro、英語en、速度1.0を使います。
Kokoro の速度は 0.5-2.0。言語はモデルと音声によります。ロシア語の台本や WAV は取り込めますが、この Kokoro 接続はロシア語生成を提供しません。他の適切な音声源を使ってください。
生成中はサーバーを動かしておきます。公開済みゲーム音声の再生にはサーバーは不要です。
ElevenLabs を設定する
#自分のアカウント、クレジット、権限のあるキーが必要です。生成はそのアカウントの枠を消費します。大量生成の前に料金を確認してください。
- ElevenLabs の Developers > API Keys でキーを作成し、Voices: Read と Text to Speech: Access を許可します。モデルを制限する場合は使用モデルを許可します。
- Windows のスタート検索でアカウントの環境変数を編集を開きます。ユーザー環境変数の新規で名前を
VOICEDIRECTOR_ELEVENLABS_KEY、値をキーにして確定します。 - Unreal と Epic Games Launcher を通知領域のプロセスも含めて完全終了し、再起動します。
- Voices で ElevenLabs を選び、Check Connection / List Voices から使用可能な音声とモデルを選択します。
- 割り当てを保存し、まず短い台詞を 1 つ生成して試聴します。
キーは環境変数に置きます。Settings にキー入力欄はありません。台本、アセット、画像、問い合わせにキーを含めないでください。
プラグインは pcm_24000 を要求し、PCM 応答から WAV を作ります。一覧取得の成功はこの形式の利用権限を保証しません。速度は 0.7-1.2。スタイルと speaker boost は対応モデルのみです。
既存キーは More Actions (...) > Edit で変更できます。公式キーガイドを参照してください。権限、上限、地域アクセスの問題はプロバイダー側で解決後に再試行します。
生成とキューを確認する
#- Lines で選択します。複数は Ctrl または Shift を使います。
- 1 バリアントなら Generate new take、複数なら Generate selected。プロバイダー、要求数、文字数、費用見積もりを確認して承認します。
- Jobs で進捗を見ます。Pause は新しい送信を停止、Resume は再開、Cancel は残りを中止します。
- Completed の Open take を押すと、該当録音を Lines で開き、隠すフィルターを解除します。
完了したテイクはまだ確認、承認、公開が必要です。診断はコピーできます。1 バッチは最大 1,000 バリアント、TTS 1 要求は最大 5,000 文字です。
UnknownRemoteOutcome は、送信した要求がサーバーで完了していても結果を受信できなかった可能性を示します。再生成前にプロバイダーの履歴を確認してください。中止しても送信済み要求は取り消せません。
テイクを試聴して選ぶ
#確認パネルには収録文、由来、時刻、長さ、実際の WAV の波形が表示されます。台詞を切り替えるとその履歴に切り替わります。
| 状態 | 意味 |
|---|---|
| Selected | 確認中のテイク。ゲーム音声は変わりません。 |
| Approved | このバリアントで承認した演技。 |
| In game / 公開済み | 次の公開を適用するまでゲームアセットに入っているテイク。 |
| Current / Stale / Unknown | 現在の入力との一致。文章や音声設定の変更で古くなることがあります。 |
| Human / AI | WAV 取り込みかプロバイダー生成。取り込み WAV も外部 AI で生成されている場合があります。 |
Select take、Play、Stop を使い、良ければ Approve take を押します。他のテイクも残ります。波形は読みやすく拡縮されるので音量は耳で比較してください。
自分の録音を取り込む
1 バリアントを選び Import WAV。形式は little-endian RIFF WAV、16-bit PCM、24 または 48 kHz、モノまたはステレオ、最大 64 MiB。MP3、浮動小数点 WAV、24-bit PCM は先に変換します。
More line actions にロック、翻訳確認、安定 ID を保つ名前変更、会話の関連付けがあります。承認を変える前にロック解除します。同じ入力でも新しく作る場合は Create another take even if input matches を有効にします。
音声アセットを公開する
#公開だけがゲームの使用アセットを変更します。取り込み、生成、承認だけでは従来の音声は置き換わりません。
- Publish > Refresh Preview を開きます。
- パスと操作を確認します。Create は作成、Update は更新、Conflict は解決が必要です。
- 必要な承認済み行と、ベース SoundWave や会話の依存行を選びます。
- Apply Selected Approved を押し結果を確認します。Copy はパスのコピーです。
外部で変更された、未保存、読み取り専用のアセットはそのまま上書きされません。競合を解決して再プレビューします。古い承認済みテイクには stale takes の明示的な許可が必要です。先に文章と音声を確認してください。
承認済みテイクと現在のゲーム音声は別の状態です。Publish で切り替えを適用します。
ゲームで台詞を再生する
#- レベルを開き、主ツールバーの Blueprints > Open Level Blueprint を選びます。
- Event BeginPlay を探します。なければグラフを右クリックして追加します。
- 白い実行ピンからドラッグし、Play Sound 2D ノードを作ります。
- Sound に公開した SoundWave を選びます。
- Compile を押し、Blueprint とレベルを保存し、エディタで Play を押します。
レベル開始時に台詞が再生されます。空間内のキャラクターには Unreal の位置音声ノードと自分の会話処理を使います。パッケージに含めるためゲームからアセットを参照してください。
再生にはエディタモジュール、キー、TTS サーバーは不要です。Epic の Play Sound 2Dも参照できます。
言語と会話コンテキスト
#翻訳は同じ LineId と CharacterId に別の Culture を使います。例:L-001,rowan,en と L-001,rowan,fr。翻訳と各言語に適した音声は自分で用意します。
既定のソース言語は en。ベース SoundWave と新しい翻訳版を一緒に公開します。Unreal の /Game/L10N/<culture>/... 構造を使います。ゲームではベースアセットを参照し、アクティブなカルチャーで翻訳を選びます。
Project Settings > Packaging に必要なカルチャーと国際化データを含めます。エディタの表示言語だけではゲームの台詞言語は設定されません。
DialogueWave
話者と必要な聞き手の DialogueVoice アセットを作ります。More line actions で Dialogue speaker、聞き手、固定の Context key を選び、Save Dialogue Context を押します。必要な SoundWave と DialogueWave を一緒に公開します。
DialogueVoice は会話情報であり音声モデルではありません。1 LineId につき 1 コンテキストです。別のコンテキストには別 ID を使います。
声優の録音を受け取る
#- 台本を用意し、Settings > Export Actor Manifest CSV を押します。
- マニフェストを演者に渡し、ID と指定 WAV 名を維持して対応形式で録音してもらいます。
- Choose Actor Manifest で元のマニフェスト、Choose Returned WAV Folder で受け取ったフォルダーを選びます。
- Preview Actor Matching で準備済み、不足、曖昧な一致を確認し、まずファイルを修正します。
- 準備済み行を選んで Import Selected Actor WAVs を押し、試聴、承認、公開します。
テイクには元のマニフェストの台詞が残ります。その間に台本が変わった場合は古い状態になるため、実際の発話と比較してください。
設定と生成上限
#Settings には Kokoro URL、出力、DataTable、演者ツール、キュー上限があります。接続と生成は Save Settings、出力先は Save Output Folder で保存します。
要求数と文字数を制限できます。USD 見積もりには 1,000 文字あたりの料金を入力します。料金 -1 は不明、USD 予算 -1 は金額上限なしです。予算ありで料金不明の場合、計算可能になるまでクラウド生成を止めます。
見積もりは入力料金に基づきます。アカウント残高や最終請求額の保証ではありません。プロバイダーの枠も確認してください。
ローカルのエディタ設定です。通常の操作に JSON 編集は必要ありません。
保存と中断からの復旧
#プロジェクト全体をバックアップします:
| フォルダー | 内容 |
|---|---|
| Content/ | 公開アセットと元の DataTable。 |
| VoiceDirector/ | 台本、テイク履歴、保存した元 WAV。 |
| Saved/VoiceDirector/ | ローカル設定、ジョブと公開のジャーナル、復旧用コピー。 |
SoundWave だけでは履歴全体を復元できません。書き込みは 1 エディタのみです。読み取り専用から戻すには別エディタを閉じ、現在のエディタも再起動します。使用中のロックを削除しないでください。
生成中断後は Jobs を確認します。送信済みで結果不明の要求は自動再送しません。先にプロバイダー履歴を確認します。
Publish の検出済み Review interrupted publication、または Restore From Publish Journal でこのプロジェクトの Saved/VoiceDirector/Publish/<batch>/Journal.json を選択します。確認文を読んでください。解決までジャーナルとバックアップを保管します。外部変更は競合となり、新規アセットが確認用に残ることがあります。必要ならプロジェクトのコピーを保持してサポートへ連絡します。
問題を調べる
#| 症状 | 確認すること |
|---|---|
| プラグインがない | Edit > Plugins で有効化、再起動、Tools。UE に合うビルドを 1 つだけ配置。 |
| ボタンが無効 | 正しい選択、ロック、読み取り専用、取り込み/キュー実行中を確認。公開には承認が必要。 |
| CSV エラー | UTF-8、カンマ、正確な列名、空でない ID、一意な LineId/Culture、診断を確認。 |
| Kokoro 一覧が空 | サーバー稼働、/docs 接続、保存 URL の /v1、一覧再取得。 |
| ElevenLabs 拒否 | 再起動で変数継承、Voices: Read、Text to Speech: Access、モデル/形式、クレジット、API 接続。 |
| HTTP 429 | 指定時間待ち、バッチを減らし手動再試行。短時間の連続送信を避ける。 |
| 波形や音がない | 元 WAV と対応 PCM、出力先と音量。欠損ファイルはバックアップから復元。 |
| 結果不明 | 再生成前にプロバイダー履歴を見る。 |
| Conflict | 診断とパスを読み、外部変更、未保存、読み取り専用を解決して更新。 |
| ゲームで無音 | 実行ピン、Sound、コンパイルと保存、音量、アセットとカルチャーのパッケージ包含。 |
よくある質問
#最初のレッスンに支払いは必要ですか?
CSV/WAV 取り込みとアセット再生にプロバイダーアカウントは不要です。ElevenLabs はその料金とクレジットを使います。ローカル Kokoro はサーバーとモデルの導入が必要です。
台詞と声はどこから来ますか?
文章は自分で用意します。音声は WAV またはプロバイダーです。VoiceDirector は履歴を整理し、物語作成や音声学習はしません。
C++ や JSON は必要ですか?
コンパイル済みパッケージは Blueprint のみでも使えます。音声、設定、DataTable は画面で操作します。ソースのビルドは別の開発作業です。
新しいテイクですぐゲーム音声が変わりますか?
いいえ。試聴、承認、公開の適用が必要です。それまでは以前に公開した音声が使われます。
言語を変えても同じ章に戻れますか?
はい。現在の章が維持されます。プラグインのボタン名は英語のままなので画面と対応できます。
パッケージ化したゲームで音声生成できますか?
VoiceDirector 1.0.0 はエディタ制作ツールです。ゲームは公開した標準アセットを再生し、実行時 TTS は提供しません。
サポートに問い合わせる
#nexusforgeuesupport@gmail.com に、VoiceDirector と Unreal のバージョン、プロバイダー、再現手順、エラー、該当タブの画像を送ってください。
API キーは送らないでください。共有可能な小さな例が、非公開プロジェクト全体より役立ちます。復旧を調べる前にコピーを保持します。