618ZXW

オープンソースのデジタルヒューマンリアルタイムダイアログ:外観をカスタマイズでき、音声入力をサポートし、ダイアログの最初のパケット遅延は 3 秒まで短縮されます。

オープンソースのデジタルヒューマンリアルタイムダイアログデモが登場しました。

音声入力とリアルタイム対話をサポートし、デジタルヒューマンアバターはカスタマイズ可能です

生成されたデジタルヒューマン効果は次のようになります。

https://toutiao.com/article/7...

このデジタルヒューマンのリアルタイム対話デモは、Alibaba の ModelScope コミュニティで公開されています。

事前学習なしでカスタムデジタルアバターを用いてリアルタイム対話を行うことができ、様々なデジタルアバターと音声を選択できます。対話の最初のパケット遅延はわずか3秒です

このプロジェクトはオープンソース技術をベースとしたモジュール式システム設計を採用しており、各モジュールは迅速に交換可能です。開発者は自由に拡張・最適化できるため、ライブストリーミング、ニュース放送、チャットアシスタントなど、様々なアプリケーションシナリオに適しています。

さらに、このプロジェクトでは Grado 5 を使用してストリーミング ビデオ出力を可能にし、インタラクティブなデジタル ヒューマン アプリケーションの展開と迅速な構築を促進します。

プロジェクト紹介

現在人気のあるオープンソースのデジタル ヒューマン プロジェクトの一部を以下に示します。

Linly TalkerはGradoをベースにしたデジタルヒューマン対話プロジェクトです。複数のモデルを統合し、豊富な機能を備えていますが、リアルタイム対話やストリーミング出力には対応していません。

LiveTalkingは、ストリーミングメディアをベースにしたデジタルヒューマン生成プロジェクトです。デジタルヒューマンはレスポンシブですが、インタラクティブインターフェースは比較的シンプルでサーバー設定が必要となるため、導入が困難です。

awesome-digital-human-live2d は、Dify をベースにした軽量のデジタル ヒューマン インタラクティブ プロジェクトで、豊富なインタラクション メソッドを備えていますが、デジタル ヒューマンの画像は十分にリアルではなく、リップシンクもサポートされていません。

既存のオープンソース プロジェクトに存在する問題に対処するため、このプロジェクトでは、オープンソース テクノロジに基づくオープンソース デジタル ヒューマン リアルタイム ダイアログ デモを実装します。このデモは、音声入力とリアルタイム ダイアログをサポートし、同期された唇の動きを備えたリアルなデジタル ヒューマンの外観を特徴としており、オンライン トライアルが可能です。

技術の選択

現在、効果的なオープンソースのエンドツーエンドの音声/ビデオ対話モデルが不足しているため、このプロジェクトでは、マルチモジュールのカスケード技術ソリューションを採用しています。

まず、音声認識(ASR)モジュールがユーザーの入力音声をテキストに変換します。次に、テキストは大規模言語モデル(LLM)モジュールに入力され、対応するテキスト応答が生成されます。テキスト読み上げ(TTS)モジュールは、このテキストコンテンツに基づいて音声合成を行います。最後に、音声駆動型話者生成(THG)モジュールを使用して、リップシンクされたデジタルヒューマンの発話ビデオを取得し、ユーザーの音声入力にデジタルヒューマンのビデオ出力が追従する対話効果を実現します。

さらに、オンライントライアルと迅速なローカル展開を容易にするために、人気の Grado フレームワークを使用してインタラクティブなアプリケーションを構築します。

次に、各モジュールで使用されているオープンソーステクノロジを紹介します。

自動音声認識(ASR)モジュールは、ユーザーが入力した音声をテキストに変換する役割を担います。このプロジェクトでは、産業グレードの音声認識機能を提供するツールキット「FunASR」を使用しています。

PaddleSpeech や Kaldi などの類似プロジェクトと比較すると、FunASR は、音声認識、音声エンドポイント検出、句読点回復、言語モデリング、話者検証、話者分離、複数人対話音声認識など、より豊富な機能を備えています。

開発者は既存のデモを拡張してより豊富な音声機能を追加することが容易になるだけでなく、導入も容易で、高精度かつ高効率な音声認識サービスを提供できます。

大規模言語モデル(LLM) モジュールは、応答コンテンツの生成を担当します。

このプロジェクトでは、現在普及しているオープンソースの LLMである Tongyi Qianwenを使用して対話結果を生成します。

対話効果に影響を与えずに LLM モジュールの応答速度を向上させるために、日常的なチャットのシナリオをサポートする軽量モデルが使用されました。

開発者が他のアプリケーション シナリオに拡張したい場合は、より複雑な対話シナリオをサポートするために、より大きなパラメーター スケールを持つモデルや、Qwen-VL や Qwen-Audio などのマルチモーダル LLM を選択できます。

このプロジェクトは、シングルターン対話とインタラクティブ対話の2つのモードを提供します。インタラクティブ対話モードでは、OpenAIのメタプロンプトを使用してプロンプトを生成し、毎回短い応答のみを提供することで、質疑応答のようなインタラクティブな効果を実現します。

テキスト読み上げ(TTS) モジュールは、生成された応答コンテンツを自然な音声に変換する役割を担います。

GPT-SoVITS は推論速度を向上させるように設計されており、並列推論をサポートしているため、TTS の応答速度が向上します。

対照的に、別の人気プロジェクトである ChatTTS は、より人間に近い口調と洗練された韻律機能を提供しますが、推論速度が遅く、入力テキストが短い場合には韻律の利点は明らかではありません。

現在のところ、GPT-SoVITS はリアルタイムの対話シナリオに適しているようです。

さらに、マシン性能が限られている開発者は、音声合成にオープンソースプロジェクト「edge-tts」を利用することもできます。このプロジェクトは、Microsoft Edgeブラウザの無料オンライン音声合成サービスを利用しており、GPT-SoVITSよりも高速な合成速度を実現できます。

このデモでは、Alibaba Cloud の Model Studio プラットフォームでサポートされているオープンソース プロジェクト CosyVoice への API 呼び出しも提供されます。

Talking Head Generation (THG) モジュールは、入力された音声に基づいて話している人のビデオを生成します。

このプロジェクトでは、現在最高のリアルタイム パフォーマンスを提供する THG ソリューションである MuseTalkを選択しました。

MuseTalkは、入力ビデオ内の人物の唇の周囲の画像のみを処理します。入力画像と音声をエンコードし、クロスアテンションメカニズムを用いてそれらを融合した後、軽量なUnetを用いて推論を完了します。

前処理が完了すると、MuseTalk は V100 上で 30fps を超える処理速度を実現でき、現在のシナリオにおけるリアルタイムのデジタル ヒューマン生成の要件を満たすことができます。

他のオープンソース リップシンク ソリューション (Wav2Lip、TalkLip、VideoRetalking など) と比較して、MuseTalk は優れたリップシンク パフォーマンスを維持しながら生成速度とビデオ解像度を向上させ、追加のトレーニングなしで推論を完了できます。

拡散モデルに基づくオープンソースソリューション(EMO、Echomimic、Vasa-1など)と比較すると、リップシンクソリューションによって生成されるビデオ結果はそれほど多様ではありませんが、拡散モデルベースのソリューションでは通常、生成に数分かかり、トレーニング/推論に膨大なオーバーヘッドがかかることを考えると、リアルタイムの対話シナリオには明らかに適していません。

さらに、リップシンク方式は特定の人物ビデオの生成結果に基づいているため、入力された人物ビデオの動きや表情の豊かさを増すことで、全体的な視聴体験を最適化できます。

人物の入力画像に基づいてビデオを生成する必要がある場合は、MuseTalk チームのオープンソース プロジェクト MuseV および MusePose を使用して、表情や動きのある人物のビデオを生成したり、画像からビデオへのモデルを使用してニーズを満たす結果を生成したりできます。

特定のキャラクターイメージに限定されず、Wensheng ビデオモデルを使用して想像力を解き放つこともできます。

フロントエンドとバックエンドはGrado向けに設計されており、オンラインデモや迅速なローカル展開に適しています。ビデオストリーミングを実現するために、このプロジェクトではGrado 5のビデオストリーミング機能を使用しました。

Gradio 5はリリースされたばかりで大幅な変更が加えられているため、Creative Spaceではまだサポートされていません。そのため、Creative Spaceのデモでは、ビデオストリーミングに対応したGradio 4.40.0のベータ版を使用しています。ローカルにデプロイする場合は、最新のGradio 5を直接ご利用いただけます。

さらに、このプロジェクトでは、画像やビデオなどのマルチモーダル コンテンツの出力をサポートするアップグレードされたチャットボット コンポーネントなど、ModelScope が提供する高度なカスタム Grado コンポーネント ライブラリも使用します。

一方、ライフサイクルコンポーネントとGradoのステートコンポーネントは、異なるユーザーのチャット履歴を管理できます。これらのコンポーネントを使用することで、開発者はフロントエンドの知識がなくても、機能豊富なインタラクティブなオンラインアプリケーションを作成できます。

システムアーキテクチャ

LLM、TTS、THGの各モジュールはそれぞれ一定の処理時間を必要とするため、前のモジュールの処理が完了するまで待ってから処理を開始すると、リアルタイム対話の実現が困難になります。この問題に対処するため、本プロジェクトでは以下の対策を実施します。

  • 選択されたオープンソース ソリューションのコードはリファクタリングされ、モデルの初期化と推論プロセスが分離されました。また、正式な推論の前にモデルのウォームアップが実行され、最初の推論中に追加の初期化オーバーヘッドが発生しないようにして、モデルの推論速度が向上しました。
  • ストリーミング出力をサポートする並列パイプラインを採用し、推論と再生を同時に実行できるため、デジタルヒューマンの応答速度が向上します。

ここで、ストリーミング出力用のこの並列パイプラインについて詳しく説明しましょう。

LLMのストリーミング出力モードを使用することで、システムは一定量のテキストを受信した後に後続の処理を開始できます。以下の点を考慮し、本プロジェクトでは文単位でテキストを処理することを選択しました。

  • TTSモジュールのGPT-SoVITSモジュールは、入力テキストの文脈に基づいて、音声のイントネーション、休止、その他のリズムを決定する必要があります。音声の流暢性を確保するため、TTS処理を実行する前に、LLMがいくつかの完全な文を出力するまで待つ必要があります。
  • THG モジュールの MuseTalk モジュールでは、リップシンク推論のために一定の長さのオーディオ コンテキストが必要です。
  • Gradioのビデオコンポーネントは、バイトストリームではなく、オーディオトラック付きのビデオクリップのみを受信できます。また、TTSモジュールからのオーディオ出力とTHGモジュールからのビデオフレーム出力を、ffmpegを使用してTSまたはMP4形式のビデオに結合する必要があります。

この基盤を基に、本プロジェクトでは、LLMによって生成された文章、TTSによって生成された音声、THGによって生成されたビデオフレームをそれぞれ保存するための複数のキューを維持し、マルチスレッドを用いた並列処理を実行します。これにより、デジタルヒューマンは最初の文章を処理した後すぐに応答を開始し、推論しながら再生することで、ユーザーの待ち時間を大幅に短縮できます。

上の画像で緑色でマークされた部分に必要な処理時間は、デジタルヒューマンと会話するための初期パケット遅延です。

MuseTalk の推論時間は入力オーディオの長さと正の相関関係にあることから、研究者は推論中のスムーズな再生を確保するには、処理される各セグメントの長さを可能な限り均一に保つ必要があると示唆しています。

文の長さは様々であることから、このプロジェクトでは最小長を設定します。LLMバッファ内でこの最小長を超える文は、処理専用として単一パケットとしてパイプラインに送信されます。この最小長は、初期パケットレイテンシと全体的なスムーズさのバランスをとるために、GPUパフォーマンスに基づいて動的に調整する必要があります。

遅延分析

研究者は「今日の天気はどうですか?」という音声入力を例に、単一の A100 で各モジュールの所要時間と再生遅延をテストしました。

後続のパケットをスムーズに再生するため、最小長は10文字に設定されています。LLMによって生成されたセンテンスが10文字を超えた場合にのみ処理が開始されます。この設定により、ストリーミング中の後続パケットの低レイテンシが確保されます。

最初のパケットの場合、ユーザーが感じる再生遅延は、すべてのモジュールでかかった時間の合計です。上のグラフからわかるように、最初のパケットを除き、後続のパケットの再生遅延は0.5秒未満です。

文と文の間には休止があるため、この遅延はユーザー エクスペリエンスにほとんど影響を与えません。

このプロジェクトをローカルで実行する場合は、プロジェクトのREADMEを参照して環境設定を完了してください。各モジュールのテクノロジー選択の変更や、カスタムデジタルヒューマン音声および画像ビデオの追加がサポートされています。

次に、このプロジェクトは次の側面で最適化されます。

  • リンクの最適化:現在、THGモジュールは完全なオーディオセグメントを入力として必要とし、パケット間の遅延はオーディオの長さの影響を受けます。全体的なパフォーマンスを向上させるため、リンクのこの部分の最適化が計画されています。
  • エンドツーエンドの音声チャット: OpenAIは今月初めに、エンドツーエンドのリアルタイム音声チャットAPIをリリースしました。このAPIは既存のカスケードリンクを置き換え、デジタルヒューマンの応答時間を効果的に短縮できます。OpenAIが公式APIをリリースするか、他のオープンソースのエンドツーエンドソリューションが利用可能になったら、アップデートが提供されます。
  • ストリーミングビデオ再生:現在、Gradio 5のビデオストリーミング機能はHLSプロトコルに基づいて実装されています。ユーザーエクスペリエンスの向上のため、将来のバージョンではより高性能なソリューションの提供が予定されています。

このプロジェクトに興味のある方は、オンラインデモを試すことができます。

プロジェクトリンク: https://www.modelscope.cn/stu..._chat プロジェクト README: https://www.modelscope.cn/stu..._chat/file/view/master?fileName=README.md&status=1 クリエーションスペースエクスペリエンスアドレス: https://www.modelscope.cn/stu..._chat コードリポジトリ: https://github.com/Henry-23/V...