ガイド

React Native の音声読み上げ:システム音声から自前の音声サーバーまで

React Native アプリが話す方法は3つあります。スマホの音声、あらかじめ作った音声ファイル、新しいテキストをその場で音声化するサーバーです。スマホの音声は無料でオフラインでも動きますが、端末ごとに聞こえ方が違います。残りの2つなら、アプリにひとつの印象的な声を持たせられます。

SuperClonica には31言語の自然な声があり、オンラインで無料で試せます。アプリのセリフをパソコンで音声化する無料エンジンと、変わるテキスト用の Docker サーバーもあります。このガイドでは、React Native と Expo でのそれぞれの方法を紹介します。

アプリに話させる3つの方法

SuperClonica は31言語に対応しますが、中国語にはまだ対応していないため、中国語の画面には別の声が必要です。

  • expo-speech や react-native-tts:スマホに入っている声。無料でオフライン、端末ごとに異なり、音声を保存できません。
  • 事前生成のアセット:固定のセリフを SuperClonica で一度だけ音声化し、アプリに同梱。
  • 音声サーバー:アプリがテキストを自前の SuperClonica サーバーに送り、返ってきた音声を再生。
  • 多くのアプリは組み合わせます。固定のセリフはアセット、ユーザーのテキストはサーバー、予備にシステム音声。

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

どの声のページでも、アプリのセリフを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒でアプリに合うか分かり、アカウントは不要、スマホからでも試せます。

expo-audio で事前生成のセリフ

ファイル名を翻訳で使っているキーにそろえれば、言語ごとのフォルダーで同じファイル名になります。

  • パソコンに無料エンジンをインストール:python -m pip install superclonica-cpu。
  • 各セリフを音声化:superclonica --text "おかえりなさい!" --voice F1 --lang ja --output assets/voice/welcome.mp3。
  • expo-audio で再生:const player = useAudioPlayer(require('./assets/voice/welcome.mp3')); player.play();
  • アセットはオフラインで遅延もありません。MP3 なら1文のセリフは数十 KB です。

ユーザーのテキスト用の音声サーバー

チャットのメッセージ、ユーザーのメモ、答えてくれる家庭教師など変わるテキストには、自分で管理するマシンでサーバーを動かします:docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。HTTPS の後ろに置き、SUPERCLONICA_API_KEY を設定して自分のアプリだけが呼べるようにします。アプリは text、voice、lang を含む JSON を /synthesize に送り、WAV を受け取ります。ファイルシステム用のライブラリでファイルに保存し、プレーヤーに渡しましょう。くり返すテキストはキャッシュします。同じテキスト、声、seed なら常に同じファイルになります。

システム音声で足りるとき

システム音声で足りるのは、伝わればよいときです。通知の読み上げ、アクセシビリティの補助、ネットなしで動くべき試作など。声が製品の一部なら自分の声を選びましょう。家庭教師、ゲームのキャラクター、ガイド付き瞑想などです。公開するアプリには、OpenRAIL-M ライセンスで無料の標準ボイス10種(M1〜M5、F1〜F5)か、SuperClonica のスタジオで学習させた自分の声を使ってください。ファンが作ったキャラクターボイスはストアのアプリには使えません。