ガイド

Twilio で独自の声:自作の読み上げ音声を再生する

Twilio の Say 動詞は、Amazon Polly と Google の内蔵音声で通話中にテキストを読み上げます。便利ですが、そのせいで IVR、リマインダー、保留メッセージが何千もの会社と同じ声になります。

Play 動詞なら、どんな音声ファイルでも再生できます。無料の SuperClonica エンジンで、標準ボイス、自社の話者から学習させた声、キャラクターの声を使ってガイダンスをオフラインで作れば、Twilio が通話で再生します。このガイドでは、電話向けファイルの作り方、Twilio にキャッシュさせる配信方法、Say がまだ向いている場面を紹介します。

Say か Play か

すべての発信者に同じガイダンスは Play で、注文番号のように通話ごとに変わる文は Say で。

  • Say:通話中に Twilio が内蔵音声でテキストを読み上げます。ホスティングは不要です。
  • Play:Twilio があなたの URL から音声ファイルをダウンロードして再生します。声は自由に選べます。
  • Play は MP3、WAV、AIFF、GSM、μ-law に対応し、相手が切るまでファイルをくり返し再生できます。
  • SuperClonica は31言語を話します。中国語にはまだ対応していません。

声を無料で聞く

どの声のページでも、ガイダンスを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒で回線の声の雰囲気が分かります。アカウントは不要です。

電話向けのファイルを作る

10秒のガイダンスなら 8 kHz μ-law の WAV で約80 KB。大きなメニューでも一瞬でダウンロードされます。

  • エンジンをインストール:python -m pip install superclonica-cpu。
  • Python で tts = Superclonica() としてエンジンを一度作り、ガイダンスを音声化して電話向けに保存:audio, rate = tts.synthesize("お電話ありがとうございます。ただいま混み合っております。", "F1", "ja"); sf.write("hold.wav", resample_poly(audio, 8000, rate), 8000, subtype="ULAW")。
  • soundfile と scipy.signal の resample_poly を使います。どちらもエンジンと一緒にインストールされます。
  • Twilio は通話の音声をすべてトランスコードします。ドキュメントでは、128 kbps の MP3 は低ビットレートのロスレスファイルより音が悪くなりうると注意しており、8 kHz μ-law の WAV はまさにそれにあたります。

ガイダンスを配信して再生

ファイルは HTTPS で、自社サーバーかオブジェクトストレージに置き、ETag か Last-Modified ヘッダーを付けて、最初の再生後に Twilio がキャッシュできるようにします。Twilio の Python ライブラリなら TwiML は2行:r = VoiceResponse(); r.play('https://example.com/audio/hold.wav', loop=0)。loop を 0 にすると通話が終わるまでくり返します。通話ごとに変わる文は、アプリの隣で SuperClonica の HTTP サーバーを動かし、Webhook に応答する前に音声化します。短い文ならデスクトップのCPUで1秒を大きく下回るので、くり返すものはキャッシュしましょう。

自動通話のルール

米国では2024年に FCC が、ロボコールでのAI生成音声は TCPA 上の人工音声にあたると判断しました。自動通話には、録音済みメッセージと同じ同意が必要です。モデルの標準ボイス10種や、同意を得た話者から学習させた自分の声など、権利を持っている声を使い、実在の人をまねた声は使わず、自動システムと話していることを相手に伝えましょう。