2 ポイント 投稿者 GN⁺ 2024-09-20 | 1件のコメント | WhatsAppで共有
  • LLaMA-Omniは、Llama-3.1-8B-Instructベースの音声言語モデルで、音声指示を入力として受け取り、テキストと音声の応答を同時に生成する
  • 中核となる目標は低遅延・高品質な音声インタラクションであり、READMEによれば遅延は最小226msまで低減できる
  • モデルは4基のGPUだけで3日未満で学習され、Llama-3.1-8B-OmniWhisper-large-v3、unit-based HiFi-GAN vocoderを用いて動作する
  • Gradioデモはcontroller、web server、model workerをそれぞれ実行する構成で、Gradioのストリーミング音声再生の不安定さのため自動再生は有効化されていない
  • コードはApache-2.0だが、モデルは学術研究目的専用であり、商用利用は禁止され、別途商用ライセンスについて問い合わせが必要

LLaMA-Omniが行うこと

  • LLaMA-Omniは、Llama-3.1-8B-Instructをベースにした音声言語モデル
  • 音声指示を入力として受け取り、テキスト応答と音声応答を同時に生成する
  • 低遅延の音声インタラクションと高品質な応答を目指しており、READMEのハイライトでは遅延は最小226ms
  • 関連論文はarXiv:2409.06666で公開されている

公開モデルとデータセット

最近の更新

  • 2025年5月、LLaMA-Omni 2がACL 2025メインカンファレンスに採択された
  • 2025年4月、LLaMA-Omni2が公開された
    • 0.5Bから32Bパラメータまでの音声言語モデルシリーズ
    • 応答品質と音声生成品質を改善
  • 2025年1月、LLaMA-OmniがICLR 2025に採択された

インストールと実行フロー

  • インストールはリポジトリをクローンした後、Python 3.10のconda環境でパッケージを導入する方式
    • pip==24.0をインストールした後、pip install -e .を実行する
  • 追加依存関係としてfairseqflash-attnをインストールする必要がある
  • クイックスタートには3つの準備物が必要
    • Llama-3.1-8B-Omniモデルのダウンロード
    • Whisper-large-v3モデルのダウンロード
    • unit-based HiFi-GAN vocoderconfig.jsonのダウンロード

Gradioデモとローカル推論

  • Gradioデモは3つのプロセスで構成される
    • controller: omni_speech.serve.controller
    • Gradio web server: omni_speech.serve.gradio_web_server
    • model worker: omni_speech.serve.model_worker
  • デモ起動後、localhost:8000LLaMA-3.1-8B-Omniと対話できる
  • Gradioのストリーミング音声再生が不安定なため、ストリーミング音声合成のみ実装されており、自動再生は有効化されていない
  • ローカル推論は、音声指示ファイルをomni_speech/infer/examples形式に合わせて構成した後、bash omni_speech/infer/run.sh omni_speech/infer/examplesで実行する

ライセンスと利用制限

  • コードはApache-2.0 Licenseで公開されている
  • モデルは学術研究目的に限って利用可能であり、商用利用は禁止されている
  • 学術環境では利用、改変、配布が可能だが、元論文の引用が必要
  • 商用利用に関する問い合わせ、または商用ライセンスの取得はfengyang@ict.ac.cnへ連絡する必要がある

ベースとなるプロジェクトと引用

  • コードベースはLLaVAをベースにしている
  • 音声エンコーダと音声アダプタに関する一部コードはSLAM-LLMから借用している
  • 研究に役立てる場合はLLaMA-Omni: Seamless Speech Interaction with Large Language Models論文を引用する必要がある
  • 問い合わせはGitHub issueまたはfangqingkai21b@ict.ac.cnで受け付けている

1件のコメント

 
GN⁺ 2024-09-20
Hacker News のコメント
  • このモデルはテキストでは表現できない音も出せるのだろうか? たとえば「ニワトリの鳴き声を出してみて」のようなリクエスト。

    • 非音声的な単語表記に結び付いた音を作れるなら、擬音語だけが特別に難しい理由はなさそう。
    • そういう音を理解することもできるのだろうか? 単語の発音やイントネーションが合っているか間違っているかも判別できるのか気になる。
    • ほぼ確実に違うと思う。人間の声だけを作るようにできた旧式のボコーダーみたいに聞こえる。
    • 「コケコッコー」みたいな音のこと?
      でも「コケコッコー」という単語を言うことと、実際にカチカチした音を出すことの両方ができるのだろうか?
  • こういうモデルが、純粋なテキストモデルに音声認識/音声合成を付けた方式より、どんな利点や可能性を持つのかよく分からない。
    モデルがより洗練されれば、音声合成で失われるイントネーション、リズム、感情のようなものを正しく解釈したり生成したりするのが核心なのだろうか?

    • 音声認識/音声合成には情報損失と推測がかなり入る。
      音声認識モデルは単語を聞き間違えることがあるが、オーディオ LLM は広い文脈のおかげで実際の単語を理解できるかもしれない。音声合成モデルはイントネーションを推測しなければならず、完全に外すこともあるが、オーディオ LLM はどんなトーンで話すべきかを自然に学べる。たとえば割り込み発話なら、より高いトーンを使えるかもしれない。
      割り込みだけを見ても、音声認識/合成システムは通常、音声活動検出とヒューリスティックに頼っていつ話すかを判断するため、ユーザーが話し終えてからでないと話さないというルールが多い。オーディオ LLM は自然な会話、会話時間を取りすぎない方法、複数人と一緒に話す方法も学べる。
      オーディオ LLM は音楽や音を作ったり、鼻歌で歌った曲が何かを教えたりもできる。新しい可能性は多い。
      ただし「学べる」と言ったのは、良い学習データが必要だからだ。現時点のこうしたモデルの多くは、一般的なテキストデータセットを音声合成に変換して学習したものだと理解しているので、実質的には一般的な音声認識/合成システムより優れているとは言えない。アーキテクチャを証明するにはよいが、全体的な能力を示すものではない。
    • 個人的には、OpenAI の advanced voice mode のような音声モデルを言語学習に使うことにとても期待している。
      すでに速く話したり遅く話したりする機能は、従来の音声合成システムではできなかった部分だ。理論的には、自分の発音が正しいかも教えられるし、間違って発音したものを繰り返したうえで正しい発音を聞かせて矯正することもできる。
      OpenAI の advanced voice mode が実際にこれをどれほど上手くできるのかは、まだきちんとテストしたものを見ていないので分からないが、自分で試してみたい。他の音声モデルもこの水準に達すれば、言語学習ツールとしてすごいものになりそうだ。
    • この話題はすでにかなり扱われていて、たとえば OpenAI の -O 論文を見ればよい。
      大きな要素の一つは、バッチングによって生じるレイテンシだ。エージェントにうまく割り込むのが難しく、実際の会話がより不自然になる。そしてその通りで、マルチモーダルの方がよりよく理解する。ただ、感情認識についての分析は見たことがないので、GPT-O のこの能力についての分析を見た人がいるのか気になる。
    • 本質的に、オーディオ→テキスト変換で情報損失が生じる。重要でないこともあるが、出力品質を意味のある形で引き上げられる場合もある。
      そのほかにも、回答レイテンシの改善、話者分離の改善、会話中の間への反応が良くなるといった副次的な利点があり得る。
    • “Really”とだけ書いても、そのイントネーションは誰にも分からない。
      “Really?” や “Really!” と書いたとしても、まだ解釈の余地は残る。音声インターフェイスが本当に成功するには、Google 以前の検索がひどかった状態から Google に変わったような瞬間が必要で、その核心がイントネーション・リズム・感情の解釈と生成にあるなら、こういうモデルを作るのはかなり理にかなっている。
  • Ollama、LM Studio、llama.cpp のようなモデル実行ツールの中で、これをサポートしているものはある?

  • では、音声認識 → LLM → 音声合成という構成ではないということ? 入力として Chewbacca の声を叫んだら、モデルは意味不明な入力として認識するのだろうか、それとも出来の悪い音声認識のように適当な単語として解釈してしまうのだろうか?

    • 構造上はそれではないが、おそらく意味不明な入力だとは認識できない可能性が高い。論文によると、

      we construct a dataset named InstructS2S-200K by rewriting existing text instruction data and performing speech synthesis
      音声合成で読み上げた質問だけで学習していて、意味不明な音は見たことも聞いたこともない。おそらく「大丈夫ですか?」と尋ねるより、あなたが何か質問したと幻覚して答えを作る可能性が高い。実際の音声オーディオデータセットは多くないし、収集できる StackOverflow のオーディオ版もない。

    • 昔そういうので遊んでいた。Google Translate を中国語のような自分の知らない言語に設定して、適当に音を出すと、一貫性はあるが狂ったような英語の文が出てきた。
      声調言語だと特にうまくいく感じがした。
  • デモクリップの音声合成の声が Ellen McLain、つまり Valve の声優に驚くほど似て聞こえる。
    https://en.m.wikipedia.org/wiki/Ellen_McLain

    • LJ Speech データセットで学習したように聞こえる。最も良いデータセットの一つで、とてもよく使われている。
  • 速度はかなり良さそう。最近 LMStudio + AnythingLLM でローカル音声チャットを試したが、まだ自分の望むより少し遅く、PiperTTS の声はこれより良かった。

  • 3日間の学習にしては悪くない。音声出力の品質はもっと磨く必要があるだろうが、さらに学習させるとどう変わるのか興味深い。

  • 学習やファインチューニングのコードがあるとよかった。商用利用では声のファインチューニングが重要な要件に見える。

  • GitHub リポジトリの README に、あの間抜けなスター推移グラフがあると、信頼感がかなり下がるのは自分だけ?

    • それは少し変だ。人々が自分の仕事を誇りに思うことはあり得る。
  • 性能を示すデモはある?