Skip to main content
このドキュメントは英語の原文から自動翻訳されています。表現に不自然な箇所がある場合があります。正確な内容は英語の原文もあわせてご確認ください。
生成音声にキャラクターをリップシンクさせるには、次の3つの情報を同期して扱う必要があります。
  1. オーディオファイル
  2. 実際に発話された音素(phoneme)シンボル
  3. 各音素の開始時刻と継続時間
TTSリクエストでinclude_phonemes: trueを指定すると、Supertoneはこの3つすべてを返します。

Python — オーディオと音素をリクエストする

TypeScript — オーディオと音素をリクエストする

音素をビゼーム(viseme)にマッピングする

よく使われる描画パイプラインでは、各IPA形式のシンボルを少数の口形(ビゼーム)にマッピングし、それらを補間しながら3Dリグや2Dスプライトを駆動します。
レンダーループでは、現在のオーディオ時刻を進めながら、そのタイムスタンプに該当するビゼームを参照します。ビゼームのウェイトをトゥイーンさせることで、口形がカクッと切り替わらないようにしましょう。

音素をリアルタイムでストリーミングする

stream_speechinclude_phonemes: true付きで呼び出すと、レスポンスはNDJSONになります。受信した各行をパースしながら、リアルタイムでリップシンクを駆動できます。

ヒント

  • 音素をサポートするモデルを使ってください。 sona_speech_2sona_speech_2_flashsona_speech_1はいずれも音素をサポートします。supertonic_api_3supertonic_api_1はサポートしません。
  • 滑らかな遷移。 実際の口は形を瞬時に切り替えません。多くのエンジンでは50〜80ms程度かけてビゼームのウェイトを補間します。APIから返る音素の継続時間は、こうしたトゥイーンの良い出発点になります。
  • 強勢と間。 symbolの値が空のものは無音や間を表します — その間は口を休止ポーズに戻してください。
  • マッピングをローカライズしましょう。 音素からビゼームへの対応表は言語ごとに異なります。多言語コンテンツを提供する場合は、韓国語と日本語に合わせてマッピングを調整してください。

関連情報

発音と音素

include_phonemesとレスポンス形式のリファレンスです。

ストリーミング音声合成

リアルタイムリップシンク向けのNDJSONストリーミングです。