关注

Qwen2.5-Omni 大模型部署实践(九):音视频交互中多元知识探讨实践

系列篇章💥

No.文章
1Qwen2.5-Omni 大模型部署实践(一):环境搭建与模型下载
2Qwen2.5-Omni 大模型部署实践(二):使用transformers推理实践
3Qwen2.5-Omni 大模型部署实践(三):启动本地 Web UI 演示
4Qwen2.5-Omni 大模型部署实践(四):使用 vLLM 部署推理实践
5Qwen2.5-Omni 大模型部署实践(五):音频理解全能指南
6Qwen2.5-Omni 大模型部署实践(六):语音聊天的实践应用与体验
7 Qwen2.5-Omni 大模型部署实践(七):通过屏幕录制实现智能信息交互
8Qwen2.5-Omni 大模型部署实践(八):视频信息提取的多模态应用探索
9Qwen2.5-Omni 大模型部署实践(九):音视频交互中多元知识探讨实践


一、前言

在数字化浪潮奔涌的当今时代,音视频交互已成为信息传递与沟通交流的核心方式。其凭借丰富多元的表现形式和强大的信息承载能力,为人们构建起沉浸式的交互体验空间。音乐,作为音视频领域里极富感染力与深厚文化价值的关键要素,蕴藏着无尽的情感共鸣、创意灵感与专业知识;而数学,作为一门抽象且严谨的学科,也常借助音视频进行直观呈现与深度讲解。设想一下,在音视频流营造的情境中,能与智能模型围绕音乐、数学等多元知识展开深入探讨,这无疑会为我们开启探索知识宝库的全新视角。Qwen2.5-Omni作为一款引领前沿的多模态大模型,恰恰赋予了我们这般能力。它能够精妙地融合音频与视频信息,精准洞察其中音乐的细腻内涵,清晰解析数学的复杂逻辑,进而与用户展开生动、多元且富有深度的对话。

二、环境准备

如果在此之前,已经成功完成了相关的安装和准备工作,可以直接跳过此章节,快速进入到模型的实战应用环节。

(一)安装相关依赖

首先需要安装一系列关键的依赖库。这些依赖库共同为模型的运行提供支持。以下是具体的安装步骤:

pip uninstall transformers
pip install git+https://github.com/huggingface/transformers@f742a644ca32e65758c3adb36225aef1731bd2a8
pip install accelerate
pip install triton
pip install qwen-omni-utils
pip install -U flash-attn --no-build-isolation
# 用于从魔塔模型库下载模型
pip install modelscope

(二)模型下载准备

为了确保在后续的音频处理任务中能够顺畅地使用Qwen2.5-Omni模型,我们需要提前将模型下载到本地备用。这里,我们借助modelscope库中的snapshot_download函数来完成这一重要任务。代码如下:

from modelscope import snapshot_download

model_dir = snapshot_download('Qwen/Qwen2.5-Omni-7B', cache_dir='/root/autodl-tmp', revision='master')

代码中,snapshot_download函数的第一个参数'Qwen/Qwen2.5-Omni-7B'明确指定了我们要下载的模型名称,这个名称在modelscope平台上是唯一标识该模型的。cache_dir='/root/autodl-tmp'参数则用于指定模型下载后存储的路径,你可以根据自己的实际情况修改这个路径,但务必确保指定的目录具有足够的存储空间来容纳模型文件。因为Qwen2.5-Omni模型文件相对较大,充足的存储空间是保证下载成功的关键。revision='master'表示我们要下载模型的最新版本,这样可以获取到模型的最新特性和优化,以获得最佳的使用体验。

三、加载模型 & 导入依赖

当环境搭建完毕,模型也成功下载到本地后,接下来的核心步骤便是加载模型并导入相关依赖,为智能信息交互做好最后的准备工作。具体代码如下:

import torch
from transformers import Qwen2_5OmniModel, Qwen2_5OmniProcessor
import librosa
import audioread
from IPython.display import Video
from IPython.display import Audio

model_path = "Qwen/Qwen2.5-Omni-7B"
model = Qwen2_5OmniModel.from_pretrained(
    model_path,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    attn_implementation="flash_attention_2",
)
processor = Qwen2_5OmniProcessor.from_pretrained(model_path)

在这段代码中,启用了flash_attention_2技术,这是一种高效的注意力机制实现方式,能进一步提升模型处理视频数据时的计算效率,使模型在信息交互场景中响应更迅速、准确。

四、定义推理函数

为高效处理视频输入和文本提示,并生成精准的文本输出,我们需定义一个专属推理函数。此函数协调模型与各类工具,确保任务顺利推进。以下是推理函数的详细代码:

from qwen_omni_utils import process_mm_info

#  推理函数,用于处理视频输入,并生成文本和音频输出。
def inference(video_path):
    messages = [
        {"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": [
                {"type": "video", "video": video_path},
            ]
        },
    ]
    text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    # image_inputs, video_inputs = process_vision_info([messages])
    audios, images, videos = process_mm_info(messages, use_audio_in_video=True)
    inputs = processor(text=text, audios=audios, images=images, videos=videos, return_tensors="pt", padding=True, use_audio_in_video=True)
    inputs = inputs.to(model.device).to(model.dtype)

    output = model.generate(**inputs, use_audio_in_video=True, return_audio=True)

    text = processor.batch_decode(output[0], skip_special_tokens=True, clean_up_tokenization_spaces=False)
    audio = output[1]
    return text, audio

五、对话聊天

(一)通过视频与 Qwen2.5-Omni 进行多模态聊天,讨论音乐相关的内容
以下代码通过 Qwen2.5-Omni 对视频文件进行推理,并生成文本和音频输出:

video_path = "files/music.mp4"  # 替换为本地视频文件路径

display(Video(video_path, width=640, height=360))  # 显示视频
audio_data, sr = librosa.load(audioread.ffdec.FFmpegAudioFile(video_path), sr=16000)
display(Audio(audio_data, rate=sr))  # 显示音频

response, audio = inference(video_path)
print(response[0])  # 打印生成的文本
display(Audio(audio, rate=24000))  # 显示生成的音频

代码执行打印输出如下:
在这里插入图片描述

(二)通过视频与 Qwen2.5-Omni 进行多模态聊天,讨论数学相关的内容
以下代码通过 Qwen2.5-Omni 对视频文件进行推理,并生成文本和音频输出:

video_path = "files/math.mp4"  # 替换为本地视频文件路径

display(Video(video_path, width=640, height=360))  # 显示视频
audio_data, sr = librosa.load(audioread.ffdec.FFmpegAudioFile(video_path), sr=16000)
display(Audio(audio_data, rate=sr))  # 显示音频

response, audio = inference(video_path)
print(response[0])  # 打印生成的文本
display(Audio(audio, rate=24000))  # 显示生成的音频

代码执行打印输出如下:
在这里插入图片描述

六、总结

通过本文的详细介绍,我们全方位展示了如何运用 Qwen2.5-Omni 模型在音频和视频流中深入讨论音乐和数学等多样化内容。在实际操作过程中,借助灵活定义不同的系统提示和用户提示,我们能够精准调控模型的行为,使其无缝适配各类复杂多样的应用场景。无论是音乐爱好者探索音乐作品背后的故事、分析音乐技巧,还是学生通过音视频学习数学知识、解答数学难题,Qwen2.5-Omni 都能凭借其卓越的多模态处理能力,提供高效、准确且富有深度的交互体验。

在这里插入图片描述

🎯🔖更多专栏系列文章:AI大模型提示工程完全指南AI大模型探索之路(零基础入门)AI大模型预训练微调进阶AI大模型开源精选实践AI大模型RAG应用探索实践🔥🔥🔥 其他专栏可以查看博客主页📑

😎 作者介绍:资深程序老猿,从业10年+、互联网系统架构师,目前专注于AIGC的探索(CSDN博客之星|AIGC领域优质创作者)
📖专属社群:欢迎关注【小兵的AI视界】公众号或扫描下方👇二维码,回复‘入群’ 即刻上车,获取邀请链接。
💘领取三大专属福利:1️⃣免费赠送AI+编程📚500本,2️⃣AI技术教程副业资料1套,3️⃣DeepSeek资料教程1套🔥(限前500人)
如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我们,一起携手同行AI的探索之旅,开启智能时代的大门!

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/xiaobing259/article/details/147103195

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--