ガイド

Pygame で自然な声の音声読み上げ

Pygame は多くの人が初めてゲームを作る場所で、いずれキャラクターに話させたくなります。pyttsx3 はロボット的なシステムの声で話し、クラウドAPIにはキーとネット接続が必要ですが、学校のPCやゲームジャムのノートPCにはないかもしれません。

SuperClonica エンジンは Python パッケージなので、Pygame のプロジェクト自身が、オフラインで、31言語の自然な声でテキストを音声化し、ファイルを介さずに pygame.mixer で再生できます。このガイドでは、コード、音声化中もゲームをなめらかに保つ方法、ファイルで配布すべき場面を紹介します。

Pygame のゲームを話させる2つの方法

ゲーム中の音声化はプロトタイプ、ツール、ソースから動かすゲームに。完成したゲームはファイルで配布しましょう。

  • ゲーム中に:プレイヤー名などどんな文でも音声化して、すぐ再生します。
  • 事前に作ったファイル:開発中に作ったセリフを、効果音と同じく pygame.mixer.Sound で読み込みます。
  • どちらも同じエンジン、声、言語を使います。中国語にはまだ対応していません。
  • すべてふつうのCPUで動き、グラフィックカードは不要です。

無料でオンラインで声を選ぶ

どの声のページでも、キャラクターのセリフを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒で声が合うかが分かります。アカウントは不要です。

ゲーム中にセリフを音声化

エンジンの読み込みには数秒かかるので、セリフごとではなく起動時に一度だけ作りましょう。

  • 2つのパッケージをインストール:python -m pip install superclonica-cpu pygame。
  • pygame.init() の前に、ミキサーをエンジンの形式に合わせます:pygame.mixer.init(frequency=44100, size=-16, channels=1)。
  • エンジンを一度だけ tts = Superclonica() で作り、セリフを音声化して再生:audio, rate = tts.synthesize("ようこそ、勇者よ!村があなたを待っています。", "M2", "ja"); sound = pygame.mixer.Sound(array=(audio * 32767).astype(np.int16)); sound.play()。
  • エンジンは44.1 kHz の浮動小数点サンプルを返します。16ビット整数に変換すれば pygame で使えます。

ゲームをなめらかに保つ

短いセリフはデスクトップのCPUで約0.5秒。フレームが止まると目立ちます。セリフはバックグラウンドのスレッドで音声化し、できた Sound をキューに入れてメインループで再生するか、ステージのセリフを読み込み画面の間に作っておきましょう。テキストから Sound への辞書を持てば、くり返すセリフは一度だけで済みます。

ゲームを配布するとき

ゲーム中の音声化には、プレイヤーのPCにエンジン、約385 MB のモデル、Python が必要です。ソースから動かすジャム作品なら問題ありませんが、ダウンロード配布には重すぎます。完成版では tts.save('line.ogg', audio) で全セリフを事前に作り、OGG ファイルを同梱しましょう。モデルの標準ボイス10種(M1〜M5、F1〜F5)か、同意を得た話者から学習させた自分の声を使ってください。ファンが作ったキャラクターの声はファンゲームやパロディ向けです。