オーディオ処理ガイド
このガイドでは、リップシンクジェネレーターにオーディオデータを供給するためのさまざまなオーディオ入力方法の設定方法について説明します。先にセットアップガイドを完了していることを確認してください。
オーディオ入力処理
オーディオ入力を処理する方法を設定する必要があります。オーディオソースに応じて、いくつかの方法があります。
- マイク(リアルタイム)
- マイク (再生)
- テキスト読み上げ(ローカル)
- Text-to-Speech (外部API)
- オーディオファイル/バッファから
- ストリーミングオーディオバッファ
このアプローチでは、マイクに向かって話しながらリアルタイムでリップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Audio Importerを使用してキャプチャ可能なサウンドウェーブを作成します
- オーディオのキャプチャを開始する前に、
OnPopulateAudioData
デリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出します - マイクからのオーディオキャプチャを開始します
リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
このアプローチはマイクからオーディオをキャプチャし、それをリップシンクで再生します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Audio Importerを使用してキャプチャ可能なサウンドウェーブを作成
- マイクからのオーディオキャプチャを開始
- キャプチャ可能なサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorの
ProcessAudioData
を呼び出し
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
- 通常
- ストリーミング
このアプローチはローカルのTTSを使用してテキストから音声を合成し、リップシンクを実行します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Text To Speech を使用してテキストから音声を生成
- Runtime Audio Importer を使用して合成されたオーディオをインポート
- インポートされたサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generator の
ProcessAudioData
を呼び出す
Runtime Text To Speech プラグインによって提供されるローカルTTSは、ONNXランタイムの競合により、通常のリアリスティックモデルでは現在サポートされていません。通常のリアリスティックモデルでのテキスト読み上げには、以下を検討してください:
- 外部TTSサービス (ElevenLabs、OpenAIなど) の使用
- 外部ローカルTTSソリューション (PythonベースのTTS、システムTTS API、またはその他の非ONNXローカルソリューション) の使用
- Runtime Text To Speech プラグインをサポートする標準モデルまたはムード対応リアリスティックモデルの代わりに使用
- Runtime Text To Speech を使用してテキストから音声を生成
- Runtime Audio Importer を使用して合成されたオーディオをインポート
- インポートされたサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Mood-Enabled Lip Sync Generator の
ProcessAudioData
を呼び出す - テキスト内容または希望する感情表現に基づいてムード設定を構成
ムード統合を伴うTTS:
- TTS生成の前または最中に適切なムードを設定
- テキストの感情的なトーンに合わせてムード強度を調整
- 長いテキストコンテンツの異なるセクションに対して異なるムードを使用
このアプローチでは、ストリーミング音声合成とリアルタイムのリップシンクを使用します:
- 標準モデル
- リアリスティックモデル
- ムード対応リアリスティックモデル
- Runtime Text To Speech を使用してテキストからストリーミング音声を生成
- Runtime Audio Importer を使用して合成されたオーディオをインポート
- ストリーミングサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generator から
ProcessAudioData
を呼び出す
Runtime Text To Speech プラグインによって提供されるローカルTTSは、ONNXランタイムの競合により、通常のリアリスティックモデルでは現在サポートされていません。通常のリアリスティックモデルでのテキスト読み上げには、以下を検討してください:
- 外部TTSサービス (ElevenLabs、OpenAIなど) の使用
- 外部のローカルTTSソリューション (PythonベースのTTS、システムTTS API、またはその他の非ONNXローカルソリューション) の使用
- Runtime Text To Speech プラグインをサポートする標準モデルまたはムード対応リアリスティックモデルの代わりに使用
- Runtime Text To Speech を使用してテキストからストリーミング音声を生成
- Runtime Audio Importer を使用して合成されたオーディオをインポート
- ストリーミングサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Mood-Enabled Lip Sync Generator から
ProcessAudioData
を呼び出す - 必要に応じてストリーミング中にムード設定を動的に調整
- 通常
- ストリーミング
このアプローチでは、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で割る(10msごとにストリーミング)代わりに150で割る(約6.67msごとにストリーミング)と、より頻繁なリップシンクの更新が行われます。 -
バッファ管理: ムード対応モデルは320サンプルのフレーム(16kHzで20ms)でオーディオを処理します。最適なパフォーマンスを得るために、オーディオ入力のタイミングがこれに合うようにしてください。
-
ジェネレーターの再作成: リアリスティックモデルで信頼性の高い操作を行うためには、非アクティブ期間の後に新しいオーディオデータを供給したい場合、毎回ジェネレーターを再作成してください。
次のステップ
オーディオ処理の設定が完了したら、以下のことも検討してください: