オーディオ処理ガイド
このガイドでは、リップシンクジェネレーターにオーディオデータを供給するためのさまざまなオーディオ入力方法の設定方法について説明します。先にセットアップガイドを完了していることを確認してください。
オーディオ入力処理
オーディオ入力を処理する方法を設定する必要があります。オーディオソースに応じて、いくつかの方法があります。
- マイク (リアルタイム)
- マイク (再生)
- テキスト読み上げ (ローカル)
- テキスト読み上げ (外部API)
- オーディオファイル/バッファから
- ストリーミングオーディオバッファ
このアプローチでは、マイクに向かって話しながらリアルタイムでリップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Audio Importerを使用してキャプチャ可能なサウンドウェーブを作成します
- Pixel Streamingを使用するLinuxの場合、代わりにPixel Streaming Capturable Sound Waveを使用します
- オーディオキャプチャを開始する前に、
OnPopulateAudioDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します - マイクからのオーディオキャプチャを開始します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

このアプローチでは、マイクからオーディオをキャプチャし、リップシンクとともに再生します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Audio Importerを使用してキャプチャ可能なサウンドウェーブを作成します
- Pixel Streamingを使用するLinuxの場合、代わりにPixel Streaming Capturable Sound Waveを使用します
- マイクからのオーディオキャプチャを開始します
- キャプチャ可能なサウンドウェーブを再生する前に、その
OnGeneratePCMDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

- 通常
- ストリーミング
このアプローチでは、ローカルTTSを使用してテキストから音声を合成し、リップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Text To Speechを使用してテキストから音声を生成します
- Runtime Audio Importerを使用して合成されたオーディオをインポートします
- インポートされたサウンドウェーブを再生する前に、その
OnGeneratePCMDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

このアプローチでは、ストリーミングテキスト読み上げ合成とリアルタイムリップシンクを使用します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Text To Speechを使用してテキストからストリーミング音声を生成します
- Runtime Audio Importerを使用して合成されたオーディオをインポートします
- ストリーミングサウンドウェーブを再生する前に、その
OnGeneratePCMDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

- 通常
- ストリーミング
このアプローチでは、Runtime AI Chatbot Integratorプラグインを使用してAIサービス(OpenAIやElevenLabsなど)から合成音声を生成し、リップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime AI Chatbot Integratorを使用して、外部API(OpenAI、ElevenLabsなど)を介してテキストから音声を生成します
- Runtime Audio Importerを使用して合成されたオーディオデータをインポートします
- インポートされたサウンドウェーブを再生する前に、その
OnGeneratePCMDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

このアプローチでは、Runtime AI Chatbot Integratorプラグインを使用してAIサービス(OpenAIやElevenLabsなど)から合成ストリーミング音声を生成し、リップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime AI Chatbot Integratorを使用して、ストリーミングTTS API(ElevenLabs Streaming APIなど)に接続します
- Runtime Audio Importerを使用して合成されたオーディオデータをインポートします
- ストリーミングサウンドウェーブを再生する前に、その
OnGeneratePCMDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

このアプローチでは、事前に録音されたオーディオファイルまたはオーディオバッファを使用してリップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Audio Importerを使用して、ディスクまたはメモリからオーディオファイルをインポートします
- インポートされたサウンドウェーブを再生する前に、その
OnGeneratePCMDataデリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioDataを呼び出します - インポートされたサウンドウェーブを再生し、リップシンクアニメーションを観察します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

ストリーミングオーディオデータをバッファから使用するには、以下が必要です:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- ストリーミングソースから利用可能なfloat PCM形式(浮動小数点サンプルの配列)のオーディオデータ(またはRuntime Audio Importerを使用してより多くの形式をサポート)
- サンプルレートとチャンネル数
- オーディオチャンクが利用可能になるたびに、これらのパラメータを使用してRuntime Viseme Generatorから
ProcessAudioDataを呼び出します

リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGeneratorの代わりにRealisticLipSyncGenerator変数を使用します。

注意: ストリーミングオーディオソースを使用する場合は、歪んだ再生を避けるためにオーディオ再生タイミングを適切に管理してください。詳細についてはストリーミングサウンドウェーブのドキュメントを参照してください。
処理パフォーマンスのヒント
-
チャンクサイズ:より応答性の高いリップシンクのために、より小さなチャンクでオーディオデータを処理したい場合は、
SetNumSamplesPerChunk関数の計算を調整してください。例えば、サンプルレートを100(10ミリ秒ごとにストリーミング)ではなく150(約6.67ミリ秒ごとにストリーミング)で割ると、より頻繁なリップシンク更新が提供されます。 -
バッファ管理:ムード対応モデルは320サンプルのフレーム(16kHzで20ミリ秒)でオーディオを処理します。最適なパフォーマンスのために、オーディオ入力のタイミングがこれに合うようにしてください。
-
ジェネレーターの再作成:リアリスティックモデルで信頼性の高い操作を行うには、非アクティブ期間の後に新しいオーディオデータを供給したい場合は、ジェネレーターを再作成してください。
次のステップ
オーディオ処理を設定したら、以下を行うことができます:







