Unity でテキスト読み上げ:セリフと実行時の音声
Unity のゲームには、声優が決まるずっと前から音声付きのセリフが必要です。プロトタイプ、仮のセリフ、チュートリアル、そしてスタジオを借りることのない小さなチームのために。音声合成なら、書いたその日にセリフに声が付き、台本が変わっても数秒で作り直せます。
無料の SuperClonica エンジンは、ふつうのCPUでオフラインで読み上げます。このガイドでは、Unity で使う2つの方法(事前生成のクリップと C# からの実行時の音声)と、リリースに使える声を紹介します。
Unity のゲームに声を付ける2つの方法
プレイヤーのPCでは音声サーバーは動かないので、リリースするシングルプレイのゲームにはクリップを同梱しましょう。
- 事前生成のクリップ:開発中にすべてのセリフを読み上げ、WAV をふつうの AudioClip として同梱します。プレイヤーのPCで余計なものは動きません。
- 実行時の音声:ゲームがテキストを SuperClonica サーバーに送り、返ってきた音声を再生します。エディター拡張、プロトタイプ、自前サーバーのあるオンラインゲームに向いています。
- どちらも、ふつうのCPUで動き、文字数による料金はかかりません。
- モデルは31言語を話します。中国語にはまだ対応していません。
声を無料で選ぶ
どの声のページでも、NPC のセリフを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒でキャラクターに合うか分かります。アカウントは不要です。
セリフを事前に生成する
同じテキスト・声・seed なら常に同じ音声になるので、変わったセリフだけを作り直し、リポジトリには音声ではなくスクリプトを入れましょう。
- エンジンをインストール:python -m pip install superclonica-cpu。
- セリフは ID、言語、テキストの表で管理します。
- 短いスクリプトで表を順に処理:superclonica --text "村へようこそ!" --voice npc.json --lang ja --output Assets/Audio/Lines/npc_greeting_01.wav。
- Assets 内の新しい WAV は Unity が自動でインポートします。短いセリフは Decompress On Load、長いナレーションは Streaming に。
C# から実行時に話させる
どのCPUでもサーバーを起動:docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。あとはパッケージなしで、組み込みの UnityWebRequest から呼び出します:[Serializable] class Line { public string text; public string voice; public string lang; }。コルーチンの中で:var req = new UnityWebRequest("http://localhost:8000/synthesize", "POST"); req.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(new Line { text = "おかえりなさい!", voice = "F1", lang = "ja" }))); req.downloadHandler = new DownloadHandlerAudioClip(req.url, AudioType.WAV); req.SetRequestHeader("Content-Type", "application/json"); yield return req.SendWebRequest(); source.PlayOneShot(DownloadHandlerAudioClip.GetContent(req)); 短い文ならCPUで約0.5秒です。繰り返し使うセリフのクリップはキャッシュしましょう。APIキーはゲームのビルドに入れないでください。プレイヤーが取り出せてしまいます。音声サーバーへは自分のゲームサーバーから呼び出しましょう。
リリースに使える声
プロトタイプならカタログのどの声でも構いません。リリースするゲームには、権利のある声を使ってください。モデル標準の10音声 M1〜M5・F1〜F5、同意を得た俳優の5〜10秒のきれいな録音から NVIDIA のグラフィックカードを積んだPCで SuperClonica のスタジオで学習させた自分の声、または取引所で注文した声です。ファンが作ったキャラクターの声はパロディやファンゲーム用で、商用ゲーム向けではありません。