ガイド

Ren’PyのボイスをAI音声で作る

ボイスはビジュアルノベルに命を吹き込みますが、何千ものセリフに声優を雇うのは個人開発者にはほぼ不可能です。Ren’Pyにはセリフごとに音声ファイルを再生する仕組みがすでにあり、足りないのは音声だけです。

このガイドでは、Ren’Pyのドキュメントに基づくボイスの仕組み、ファイルをセリフに自動で結びつける方法、そしてSuperClonicaでキャラクターごとに違う声を使い、台本全体を無料・オフラインで音声化する方法を紹介します。

Ren’Pyのボイス再生の仕組み

Ren’Pyでは、セリフの前にvoiceステートメントを置いて音声ファイルを再生します。例:voice "line0001.ogg"。ゲーム全体なら自動ボイスが便利です。config.auto_voiceに"voice/{id}.ogg"を設定すると、Ren’Pyが{id}を各セリフの識別子に置き換え、ファイルがあれば再生します。ファイルのないセリフは無音のままなので、少しずつボイスを追加できます。

全セリフを識別子つきで取り出す

Ren’PyランチャーでExtract Dialogueを選び、タブ区切りのオプションを選びます。表計算ソフトで開けるdialogue.tabが作られ、セリフと識別子が並びます。id、voice、textの3列を残しましょう。識別子、キャラクターの声、セリフ本文です。音声化するテキストからは{w}や{i}のような波かっこのテキストタグを取り除きます。

台本全体をオフラインで音声化

python -m pip install superclonica-cpuで無料のSuperClonicaエンジンを入れます。Pythonで import csv, from superclonica import Superclonica and tts = Superclonica(), then for row in csv.DictReader(open("lines.csv", encoding="utf-8")): audio, rate = tts.synthesize(row["text"], voice=row["voice"], lang="ja", seed=7); tts.save("game/voice/" + row["id"] + ".ogg", audio) と書きます。voice列にはM2やF3などの標準音声やカタログの音声ファイルを指定でき、seedを固定すると各キャラクターの声が全シーンでそろいます。エンジンは普通のCPUでオフライン動作し、文字数の上限はなく、OGGファイルならゲーム内でも小さく収まります。

キャラクター、ミュート、リプレイ

各Characterにvoice_tagを付けると、プレイヤーはSetVoiceMuteやToggleVoiceMuteでキャラクターごとに声を消せます。VoiceReplayは直前のセリフを再生し直します。声は、アニメ、ゲーム、ナレーターの音声を各ページで30〜100文字を使って無料で試して選ぶか、5〜10秒のきれいな録音からスタジオで主人公の声を学習させましょう。

セルフボイシングは別物

Ren’Pyのゲームでvキーを押すとセルフボイシングがオンになります。これはOSの音声合成でテキストやUIを読み上げるアクセシビリティ機能で、視覚に障がいのあるプレイヤー向けであり、ボイスの代わりではありません。声はプレイヤーのシステムによって変わります。事前に用意したボイスなら誰にでも同じ声で届きます。