はじめに
Qwen2.5-Omniは、Alibaba Cloud Qwenチームによって開発されたオープンソースのマルチモーダルAIモデルです。テキスト、画像、音声、動画など複数の入力を処理し、テキストや自然な音声による応答をリアルタイムで生成できる。このモデルは2025年3月26日にリリースされ、コードとモデルファイルはGitHubにホストされており、誰でも無料でダウンロードして使用することができる。Thinker-TalkerアーキテクチャとTMRoPEテクノロジーを採用し、マルチモーダルデータの効率的な処理を実現しています。Qwen2.5-Omniは、音声認識、画像理解、ビデオ解析などのタスクで優れた性能を発揮し、インテリジェントアシスタントやマルチメディア処理などのシナリオに適しています。
機能一覧
- マルチモーダル入力に対応:テキスト、画像、音声、ビデオを同時に処理できる。
- リアルタイム・ストリーミング・レスポンス:入力後すぐにテキストまたは音声によるフィードバックが生成される。
- 自然な音声合成:明瞭で自然な音声を生成し、複数のトーンをサポートします。
- 画像や映像の理解:画像の内容を特定したり、ビデオクリップを分析したりする。
- エンド・ツー・エンド・コマンド・フォロー:音声またはテキスト・コマンドに基づいて直接タスクを完了。
- オープンソースで無料:ユーザーのカスタマイズをサポートするために、完全なコードとモデルが提供されています。
Qwen2.5-Omni の包括的な評価を行いました。その結果、Qwen2.5-VL-7B、Qwen2-Audio、Gemini-1.5-Pro のようなクローズドソースのモデルだけでなく、同規模の単一モダリティモデルに対しても優位性を発揮し、すべてのモダリティで高い性能を発揮することがわかりました。OmniBench のような複数のモダリティの統合を必要とするタスクでは、Qwen2.5-Omni は最先端の性能を達成しています。さらに、単一モダルのタスクでは、音声認識(Common Voice)、翻訳(CoVoST2)、音声理解(MMAU)、画像推論(MMMU、MMStar)、ビデオ理解(MVBench)、音声生成(Seed-ts-eval、Subjective Naturalness)の各分野で優れている。
ヘルプの使用
Qwen 2.5-Omniを使用するには、ある程度の専門知識が必要です。以下は、ユーザーがすぐに使い始められるよう、詳細なインストールと操作のガイドです。
設置プロセス
- 環境を整える
- Python 3.10以降がインストールされていることを確認してください。
- コードのダウンロードにはGitが必要です。
- Linuxシステムでの使用を推奨。Linuxシステム以外では追加設定が必要な場合がある。
- ダウンロードコード
- ターミナルでコマンドを入力して、GitHubリポジトリをクローンする:
git clone https://github.com/QwenLM/Qwen2.5-Omni.git
- プロジェクト・カタログにアクセスする:
cd Qwen2.5-Omni
- ターミナルでコマンドを入力して、GitHubリポジトリをクローンする:
- 依存関係のインストール
- コードがHugging Face masterブランチに完全にマージされていないため、特定のバージョンのTransformersをインストールする必要がある:
pip uninstall transformers pip install git+https://github.com/huggingface/transformers@3a1ead0aabed473eafe527915eea8c197d424356 pip install accelerate
- マルチモーダル処理ツールをインストールする:
pip install qwen-omni-utils[decord]
- 注:事前インストールが必要
ffmpeg
Linuxユーザーはsudo apt install ffmpeg
. - インストールできない非Linuxユーザー
decord
で置き換えることができる:pip install qwen-omni-utils
- 注:事前インストールが必要
- コードがHugging Face masterブランチに完全にマージされていないため、特定のバージョンのTransformersをインストールする必要がある:
- ダウンロードモデル
- ハギング・フェイスからQwen2.5-Omni-7Bモデルをダウンロード(https://huggingface.co/Qwen/Qwen2.5-Omni-7B)、ローカルに保存する。
- インストールの確認
- 以下のコマンドを実行して環境をチェックする:
python -c "from transformers import Qwen2_5OmniModel; print('安装成功')"
- 以下のコマンドを実行して環境をチェックする:
機能 操作の流れ
1.テキスト入力の処理
- 手続き::
- ロードモデルとプロセッサー:
from transformers import Qwen2_5OmniModel, Qwen2_5OmniProcessor model = Qwen2_5OmniModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", device_map="auto") processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
- テキストを入力し、応答を生成する:
text = "今天天气怎么样?" inputs = processor(text=text, return_tensors="pt") outputs = model.generate(**inputs) print(processor.batch_decode(outputs, skip_special_tokens=True))
- ロードモデルとプロセッサー:
- 結局"気温が高く、晴れた日です "などのテキスト回答を返す。
2.画像入力の処理
- 手続き::
- 画像ファイルを用意する。
image.jpg
). - 画像を含むようにスクリプトを修正する:
images = ["image.jpg"] text = "图片里有什么?" inputs = processor(text=text, images=images, return_tensors="pt") outputs = model.generate(**inputs) print(processor.batch_decode(outputs, skip_special_tokens=True))
- 画像ファイルを用意する。
- 結局例えば、"草の上を犬が走っている写真です"。
3.オーディオ入力の処理
- 手続き::
- オーディオファイルを用意する(例
audio.wav
). - 音声を含むようにスクリプトを修正する:
audios = ["audio.wav"] text = "音频里说了什么?" inputs = processor(text=text, audios=audios, return_tensors="pt") outputs = model.generate(**inputs) print(processor.batch_decode(outputs, skip_special_tokens=True))
- オーディオファイルを用意する(例
- 結局例えば、"音声には「明日は雨が降る」と書いてある"。
4.ビデオ入力の処理
- 手続き::
- ビデオファイルを用意する。
video.mp4
). - ビデオを含むようにスクリプトを修正する:
videos = ["video.mp4"] text = "视频里发生了什么?" inputs = processor(text=text, videos=videos, return_tensors="pt") outputs = model.generate(**inputs) print(processor.batch_decode(outputs, skip_special_tokens=True))
- ビデオファイルを用意する。
- 結局例えば、"ビデオの中の誰かが絵を描いている"。
5.音声出力の生成
- 手続き::
- システムプロンプトを設定し、音声を有効にする:
conversation = [ {"role": "system", "content": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}, {"role": "user", "content": "请用语音回答:今天天气如何?"} ] text = processor.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True) inputs = processor(text=text, return_tensors="pt") text_ids, audio = model.generate(**inputs, use_audio_in_video=True) import soundfile as sf sf.write("output.wav", audio.reshape(-1).detach().cpu().numpy(), samplerate=24000)
- システムプロンプトを設定し、音声を有効にする:
- 結局生成
output.wav
ファイルに音声応答の内容を追加する。
6.声色の調整
- 手続き::
- ジェネレーション時にトーン(チェルシーやイーサンなど)を指定する:
text_ids, audio = model.generate(**inputs, spk="Ethan") sf.write("output.wav", audio.reshape(-1).detach().cpu().numpy(), samplerate=24000)
- ジェネレーション時にトーン(チェルシーやイーサンなど)を指定する:
- 結局指定された音色の音色ファイルを生成します。
7.フラッシュアテンション-2による加速
- 手続き::
- FlashAttention-2をインストールします:
pip install -U flash-attn --no-build-isolation
- モデルのロード時に有効:
model = Qwen2_5OmniModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", device_map="auto", attn_implementation="flash_attention_2")
- FlashAttention-2をインストールします:
- 結局生成の高速化とメモリ使用量の削減。
ほら
- ハードウェア要件GPUは16GB以上のビデオメモリを推奨。
- ネットワーク要件モデルや依存関係をダウンロードする際には、ネットワークを安定させる必要があります。
- デバッグ・サポート詳細はGitHubを参照。
README.md
またはコミュニティでの議論。
アプリケーションシナリオ
- リアルタイム音声アシスタント
ユーザーは音声で質問し、モデルはリアルタイムで音声回答を生成する。 - 映像コンテンツ分析
ビデオを入力すると、モデルが重要な情報を抽出し、ユーザーが映像を整理したり、レポートを作成したりするのに役立つ。 - 教育支援
受講生はコースの音声やビデオをアップロードし、モデルが質問に答えたり、重要なポイントを抜粋したりして、学習効果を高める。
品質保証
- 対応言語は?
主に中国語と英語をサポートし、音声合成用にチェルシー、イーサン、その他のトーンを提供する。 - 必要な保管スペースは?
Qwen2.5-Omni-7Bモデルは約14GBで、20GB以上確保することを推奨する。 - 市販されていますか?
はい、Apache 2.0ライセンスに基づき、条件次第で商用利用も自由です。