Godot でテキスト読み上げ:セリフと実行時の音声
Godot のゲームは1人や小さなチームで作られることが多く、ボイス収録は予算に収まりにくい部分です。音声合成なら、書いたその日にセリフに声が付きます。プロトタイプ、仮のセリフ、チュートリアル、そしてあえて合成音声のままにするゲームにも。
無料の SuperClonica エンジンは、ふつうのCPUでオフラインで読み上げます。このガイドでは、Godot で使う2つの方法(事前生成の WAV ファイルと GDScript からの実行時の音声)と、リリースに使える声を紹介します。
Godot のゲームに声を付ける2つの方法
プレイヤーのPCでは音声サーバーは動かないので、リリースするシングルプレイのゲームにはファイルを同梱しましょう。
- 事前生成のファイル:開発中にすべてのセリフを読み上げ、WAV をプロジェクトに入れます。ほかの音と同じようにゲームと一緒にエクスポートされます。
- 実行時の音声:ゲームがテキストを SuperClonica サーバーに送り、返ってきた音声を再生します。エディターツール、プロトタイプ、自前サーバーのあるオンラインゲームに向いています。
- どちらも、ふつうのCPUで動き、文字数による料金はかかりません。
- モデルは31言語を話します。中国語にはまだ対応していません。
声を無料で選ぶ
どの声のページでも、キャラクターのセリフを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒で声が合うか分かります。アカウントは不要です。
セリフを事前に生成する
同じテキスト・声・seed なら常に同じ音声になるので、変わったセリフだけを作り直し、リポジトリには音声ではなくスクリプトを入れましょう。
- エンジンをインストール:python -m pip install superclonica-cpu。
- セリフは ID、言語、テキストの表で管理します。
- 短いスクリプトで表を順に処理:superclonica --text "村へようこそ!" --voice npc.json --lang ja --output voice/npc_greeting_01.wav。
- プロジェクト内の新しい WAV は Godot が自動でインポートします。AudioStreamPlayer で再生しましょう。
GDScript から実行時に話させる
どのCPUでもサーバーを起動:docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。Godot 4.4 以降なら、組み込みの HTTPRequest ノードと AudioStreamWAV.load_from_buffer で、ファイルを保存せずに返答を再生できます:var http := HTTPRequest.new(); add_child(http); http.request_completed.connect(_on_voice); http.request("http://localhost:8000/synthesize", ["Content-Type: application/json"], HTTPClient.METHOD_POST, JSON.stringify({"text": "おかえりなさい!", "voice": "F1", "lang": "ja"}))。同じスクリプトに:func _on_voice(result, code, headers, body): $Voice.stream = AudioStreamWAV.load_from_buffer(body); $Voice.play()。短い文ならCPUで約0.5秒です。繰り返し使うセリフのストリームはキャッシュしましょう。APIキーはエクスポートしたゲームに入れないでください。プレイヤーが取り出せてしまいます。音声サーバーへは自分のゲームサーバーから呼び出しましょう。
リリースに使える声
プロトタイプならカタログのどの声でも構いません。リリースするゲームには、権利のある声を使ってください。モデル標準の10音声 M1〜M5・F1〜F5、同意を得た俳優の5〜10秒のきれいな録音から NVIDIA のグラフィックカードを積んだPCで SuperClonica のスタジオで学習させた自分の声、または取引所で注文した声です。ファンが作ったキャラクターの声はパロディやファンゲーム用で、商用ゲーム向けではありません。