返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

革新多模态AI:通过Qwen2.5 Omni的实时处理增强类人互动

[复制链接]
链载Ai 显示全部楼层 发表于 3 小时前 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);">Qwen2.5-Omni:一种多模态模型

Qwen2.5-Omni 是一种端到端的多模态模型,旨在感知多种模态,包括文本、图像、音频和视频…

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;color: rgb(63, 63, 63);">预览图ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 0.1em auto 0.5em;border-radius: 4px;" title="null"/>

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">人类通过多种感官体验世界。我们无缝地融合所见所闻,处理这些信息,并通过口头语言、书面文本或行动作出反应。多年来,人工智能(AI)一直努力复制这种整体理解和互动。我们看到强大的大型语言模型(LLMs)掌握文本,令人印象深刻的模型生成图像,还有一些模型转录语音。但真正流畅的人类互动需要将所有这些模态——视觉、听觉、推理、口语和书写——整合在一个能够实时处理的统一系统中。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">想象一下一个AI助手,你可以与之进行自然流畅的对话,边讨论视频的音频内容边展示视频,要求它描述你刚拍摄的图像,收到的回应不仅是文本,还包括自然听起来的语音,所有这一切几乎瞬间发生。这一直是多模态AI的圣杯。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">引入ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">Qwen2.5-Omni,这是阿里巴巴集团Qwen团队开发的一种突破性模型。它不仅仅是另一个多模态模型;它从根本上设计为全模态,能够同时感知丰富的输入——文本、图像、音频和视频。更令人印象深刻的是,它以流式方式生成响应,实时提供文本和自然的人类语音。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">这不仅仅是一次渐进式更新;Qwen2.5-Omni代表了朝着与我们以我们自己的方式互动的AI迈出的重要一步,处理世界的方式与我们类似。在这次深入探讨中,我们将探索Qwen2.5-Omni的工作原理,剖析其创新架构,理解它如何处理时间和流数据的复杂性,检查其卓越的性能,并讨论其潜在影响。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(15, 76, 129);">Qwen2.5-Omni的不同之处是什么?全模态梦想

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">“多模态AI”这个术语已经存在一段时间,通常指处理两种模态的模型,通常是文本和图像(如GPT-4V或原始Qwen-VL)。一些模型尝试涉及音频或视频,但通常将这些模态孤立处理或需要单独的处理步骤。真正的挑战在于创建一个能够:

  1. 1.同时感知多种模态:在单一上下文中理解视觉、声音和文本之间的相互作用(例如,理解视频中的对话和动作)。
  2. 2.实时处理信息:处理实时输入,如直播音频或视频流,而没有显著的延迟。
  3. 3.流式生成多种**输出类型:在输入展开时同时生成文本和自然语音,实现实时对话。
  4. 4.真正的端到端:将感知、推理和生成整合到一个统一的模型架构中进行联合训练。
无

Qwen2.5-Omni 直面这些挑战。其“全模态”特性意味着它旨在同时接收文本、独立图像、音频片段和视频(包括其音轨)。这超越了简单的模态对,朝着更全面的感官输入系统发展。

想象一下之前的多模态AI,就像在手机上有多个独立的应用:一个用于文本,一个用于图像,一个用于音频。Qwen2.5-Omni更像是一个集成操作系统,这些感官无缝地协同工作。

使Qwen2.5-Omni与众不同的关键因素:

  • 全模态感知:在同一对话上下文中本地处理文本、图像、音频和视频输入。
  • 流式输入处理:利用块级处理音频和视觉编码器,使其能够高效处理长或连续的数据流。
  • 双流输出:实时生成文本和自然听起来的语音。这对于语音助手或实时翻译/旁白等应用至关重要。
  • 端到端架构:从感官输入到文本/语音输出的整个过程由一个统一框架(“思考者-说话者”)处理,并进行联合训练。
  • 时间同步:引入了一种新颖的技术(TMRoPE),以准确对齐视频和音频流中的事件。

这些能力使我们更接近于一种AI,它不仅仅处理数据,而是以一种显著更自然和直观的方式体验和与信息互动。

发人深省的问题:除了聊天机器人和语音助手,真正理解并实时响应同时的视频、音频和文本流的AI可能会产生什么新颖的应用?

引擎底层:Thinker-Talker 架构

那么,Qwen2.5-Omni 是如何管理这一复杂的平衡行为的呢?核心创新在于其Thinker-Talker 架构,这一设计灵感来源于人类认知思维与语言表达的分离。

None

想象一下你的大脑在形成一个回应(“Thinker”),然后你的发声系统将这个想法转化为口头语言(“Talker”)。Qwen2.5-Omni 正是如此:

1. Thinker:这是操作的“大脑”。它本质上是一个强大的大型语言模型(基于 Qwen2.5 LLM 架构),负责:

  • 理解:融合来自所有输入模态(文本、处理过的图像特征、处理过的音频特征、处理过的视频特征)的信息,这些信息由专用编码器提供。
  • 推理:理解组合输入,执行诸如问答、摘要和跨模态的问题解决等任务。
  • 文本生成:像标准 LLM 一样,自回归地生成响应的文本部分。

2. Talker:这就像“发声系统”。它是一个专门的双轨自回归 Transformer 模型,专门设计用于以流式方式生成语音标记。关键部分在于:

  • 输入:Talker 不仅仅接收 Thinker 生成的最终文本。它直接利用 Thinker 的丰富隐藏表示(内部状态)以及采样的文本标记。
  • 为什么使用隐藏状态?这使得 Talker 能够捕捉超出纯文本的细微差别——诸如 Thinker 内部处理所暗示的预期语气、情感和韵律在完整文本生成之前。这是生成自然、上下文适宜的语音的关键,而不是机械的文本转语音。类比:就像一个歌手不仅阅读歌词,还阅读乐谱和导演的笔记,以理解如何唱。
  • 输出:Talker 使用专门的 qwen-tts-tokenizer 生成离散的“音频标记”序列。这些标记表示语音的声学特性。
  • 流式处理:它被设计为在 Thinker 开始生成文本标记后几乎立即开始生成这些音频标记,从而实现低延迟的流式语音。

端到端训练:重要的是,Thinker 和 Talker 并不是分别训练后再拼接在一起的。它们是一个单一、连贯模型的一部分,联合训练。这确保了 Thinker 学会生成对 Talker 有用的表示,而 Talker 学会有效地解读 Thinker 的内部“思想”以生成适当的语音。这避免了在单独的文本生成和文本转语音模块之间可能累积的错误。

这种分工——Thinker 负责认知和文本,Talker 负责基于深层认知上下文的语音合成——使得 Qwen2.5-Omni 能够有效地处理两种输出模态而不互相干扰,同时生成高度自然和上下文感知的语音。

交织时间:TMRoPE 和流式输入

处理现实世界数据,尤其是视频时,最大的障碍之一是处理时间。事件是顺序发生的,视觉动作与伴随音频之间的关系对于理解至关重要。此外,对于实时互动,模型不能等待处理整个一个小时的视频;它需要高效地处理输入数据流。

Qwen2.5-Omni 引入了巧妙的解决方案来实现时间同步和流式输入处理。

1. 使用 TMRoPE 同步模态:

传统的 Transformer 中的位置信息编码(如 RoPE — Rotary Position Embedding)主要跟踪标记的序列顺序。这在文本中效果良好,但在视频的多维特性(时间、高度、宽度)和需要与音频精确对齐方面存在困难。

Qwen2.5-Omni 提出了TMRoPE(时间对齐多模态 RoPE)。它扩展了位置信息编码的概念,以显式表示三个维度:

  • 时间:捕捉何时发生某事。
  • 高度:捕捉垂直位置(用于视觉标记)。
  • 宽度:捕捉水平位置(用于视觉标记)。
None

TMRoPE 处理时间维度对于视频和音频的魔力在于:

  • 一致的时间单位:它建立了一个基本时间单位,大约对应于 40 毫秒的现实时间。
  • 绝对时间 ID:音频段和视频帧根据其实际开始时间被分配时间位置 ID,以这些 40 毫秒的增量进行测量。
  • 动态视频采样:由于视频帧率可能变化,模型动态采样视频帧,但根据每帧的实际时间戳计算其时间 ID,确保在前一帧之后 80 毫秒捕获的帧获得时间 ID 增量为 2(2 * 40 毫秒),无论跳过了多少帧。
  • 对齐:这确保了与实时中同一时刻相对应的音频段和视频帧接收相同(或非常接近的)时间位置 ID,使模型的注意机制能够自然地关联跨模态的同时事件。

可以把 TMRoPE 想象成为模型接收到的每一条视觉和听觉信息添加精确的、同步的时间戳,从而使其能够构建事件的连贯时间线。

2. 使用块级处理处理流式输入:

为了实现实时互动并处理可能非常长的输入(如监控实时馈送),Qwen2.5-Omni 不能等待一次性处理整个输入流。它在输入编码器中采用了块级处理

  • 音频编码器:编码器不是关注整个音频历史,而是以固定块(例如,每块 2 秒)处理音频,主要在这些块内执行注意力。
  • 视觉编码器:类似地,对于视频,它处理帧序列。它使用 FlashAttention 等技术并合并相邻的视觉标记(例如,将 2x2 的补丁合并为一个)以高效处理视频帧生成的大量标记。
  • 分块预填充:这种块级方法使模型能够执行“分块预填充”。随着新音频/视频数据块的到来,可以快速处理并将其整合到模型的上下文中,而无需重新处理整个历史。

这类似于逐章阅读一本书,在理解每一章后再转向下一章,而不是试图将整本书一次性加载到工作记忆中。这使得处理长时间连续流变得可行且高效。

3. 时间交错策略:

为了进一步增强同步音频和视频的处理,Qwen2.5-Omni采用了一种时间交错方法。在每个处理块(例如,2秒)内,它安排处理后的标记,使该块的所有视觉标记首先出现,随后是相同块的所有音频标记。这种在时间块内的结构化安排有助于思考者的注意机制有效融合对应同一时间窗口的两种模态的信息。

结合TMRoPE和块级处理,Qwen2.5-Omni能够准确感知现实世界的时间动态,并高效处理连续的多模态信息流,为实时互动奠定基础。

引人深思的问题:TMRoPE引入了明确的时间编码。这个概念如何适应或对其他涉及复杂时间序列数据的AI任务(如金融建模或科学模拟分析)产生益处?

实时对话:流式输出

理解流式输入只是无缝互动的一半。模型还需要实时响应,理想情况下在用户说完话或输入事件发生后,能够以最小延迟生成文本和自然语音。这就是说话者架构和专业解码策略的亮点所在。

如前所述,说话者从思考者那里接收丰富的上下文信息(隐藏状态),使其能够预测并生成语音标记(在整个文本响应最终确定之前)。但将这些离散的音频标记高效地转换为实际的音频波形流又是另一个挑战。

Qwen2.5-Omni采用了流式编解码器生成机制:

  1. 1.流匹配DiT模型:它使用基于流匹配的DiT(扩散变换器)模型,而不是传统方法,将说话者的音频标记转换为梅尔谱图(音频频率内容随时间的表示)。扩散模型以高保真生成而闻名。
  2. 2.滑动窗口注意力:为了实现流式处理并减少初始延迟,该DiT模型使用滑动窗口块注意力机制。在为当前音频标记块生成梅尔谱图时,模型只关注:
  • • 当前标记块。
  • • 有限的历史(例如,前2个块)。
  • • 有限的前瞻(例如,下一个1个块)。
  • 3.低延迟:这种限制的注意力窗口意味着模型不需要整个未来音频标记序列就可以开始生成当前音频片段。它显著减少了“初始数据包延迟”——接收第一个输入和产生第一个可听声音之间的时间。类比:这就像一个速读者专注于当前所在位置周围的小窗口文本,以快速阅读,而不是需要看到整个页面布局。
  • 4.逐块波形生成:生成的梅尔谱图块随后被输入到修改后的BigVGAN声码器(将谱图转换为波形的神经网络),该声码器也以流式、逐块的方式操作,以生成最终的可听语音输出。
  • 说话者的预测生成(使用思考者的隐藏状态)与低延迟流式编解码器解码器的结合,使Qwen2.5-Omni能够实现文本和自然语音的流畅实时生成。

    实验测试:性能亮点

    复杂的架构令人印象深刻,但 Qwen2.5-Omni 的实际表现如何?研究人员在广泛的基准测试中进行了全面评估,将其与专门的单模态模型、其他多模态模型以及强大的闭源模型如 Gemini 1.5 Pro 和 GPT-4o-mini 进行了比较。

    以下是叙述摘要:

    1. 真正的全模态能力(OmniBench):在专门设计用于测试多模态集成的基准测试(如 OmniBench)中,Qwen2.5-Omni 实现了最先进的性能,显著超越了之前的模型如 Gemini 1.5 Pro、AnyGPT 和 UnifiedIO2。这证明了它在同时融合和推理文本、图像、音频和视频输入方面的卓越能力。它在 OmniBench 上的平均得分为 56.13%,这是一个突出的结果。

    2. 强大的单模态表现:尽管是一个统一模型,Qwen2.5-Omni 在与专门模型的对比中表现出色:

    • 音频理解(Audio -> Text):它经常超越其前身 Qwen2-Audio,并在语音识别(ASR)、语音翻译(S2TT)和音频事件分类等任务中与 Whisper-large-v3 和新兴的全模态模型如 MinMo 强劲竞争。它在多语言 ASR(Common Voice、Fleurs)和音频推理(MMAU SOTA)方面表现尤其强劲。
    • 图像理解(Image -> Text):在与最先进的专门视觉语言模型 Qwen2.5-VL-7B 的表现上竞争非常激烈,通常超越它以及 GPT-4o-mini 等模型,在 MMMU(大学水平问题)、MMStar、MME、TextVQA、DocVQA 和基础任务(RefCoco 变体)等基准测试中表现优异。
    • 视频理解(Video -> Text):在视频基准测试如 Video-MME、MVBench 和 EgoSchema 上取得了优异的成绩,通常超越 Qwen2.5-VL-7B 和其他竞争对手,展示了强大的视频理解能力(即使在某些测试中没有音频)。
    • 文本理解(Text -> Text):尽管设计为全模态,其文本表现依然强劲。通常位于 Qwen2–7B 和顶级纯文本模型 Qwen2.5–7B 之间,在多个基准测试中超越了 Llama3.1–8B 和 Gemma2–9B,包括 MATH、GSM8K、HumanEval 和 MBPP。这表明了良好的平衡,保持了显著的语言能力,同时增加了广泛的多模态理解。

    3. 突破性的语音指令跟随:最令人兴奋的发现之一是 Qwen2.5-Omni 几乎能够像处理文本指令一样好地跟随通过语音给出的指令。当在使用口语输入(内部转换)评估 MMLU 和 GSM8K 等基准时,其表现与仅文本基线非常接近。这是朝着真正自然的基于语音的复杂任务交互迈出的重要一步。

    4. 自然且稳健的语音生成(Text -> Speech):在零样本文本到语音基准测试如 SEED-TTS 中,Qwen2.5-Omni(特别是在强化学习优化后)在内容一致性(低词错误率)和说话者相似性方面展示了最先进的性能,超越了 CosyVoice 2 和 F5-TTS 等强基线。主观测试也证实了其生成语音的自然性。

    关键提示:"Qwen2.5-Omni 在端到端语音指令跟随中的表现可与其在文本输入时的能力相媲美,正如 MMLU 和 GSM8K 等基准所证明的。" —这突显了语音交互的重大突破。

    总体而言,评估描绘了一幅高度能力和良好平衡的全模态模型的图景,在集成多模态理解和交互方面推动了最先进的水平,同时在单模态性能上没有做出过多妥协。

    技术深入:训练与微调

    创建一个像 Qwen2.5-Omni 这样复杂的模型需要一种复杂的训练策略。该过程涉及多个阶段,旨在在整合各个模态之前建立每个模态的基础理解,并为特定的交互能力微调模型。

    预训练策略(3个阶段):

    阶段1:基础编码器训练:

    • 目标:教授视觉和音频编码器与语言相关的基本语义理解。
    • 方法:冻结核心LLM(Thinker,从Qwen2.5初始化)的参数。仅训练视觉和音频编码器(视觉:从Qwen2.5-VL初始化;音频:从Whisper-large-v3初始化)及其连接层。它们通过处理大量配对数据(图像-文本、音频-文本)进行学习。最初,仅训练轻量适配器,然后进行完整的编码器微调。
    • 理由:在处理复杂的多模态融合之前,建立与LLM语言空间对齐的强大的单模态感知能力。

    阶段2:全面多模态预训练:

    • 目标:教授整个模型在所有模态之间进行融合和推理。
    • 方法:解冻所有模型参数(LLM、编码器、Talker前驱)。模型在一个庞大且多样化的数据集上进行训练,包括:
    1. 1. 图像-文本对
    2. 2. 视频-文本对
    3. 3. 音频-文本对
    4. 4. 带音频(+文本)的视屏对(对学习同步至关重要)
    5. 5. 纯文本数据(以保持语言能力)
    6. 6. 数据量说明:约800B图像/视频标记,约300B音频标记,约100B视频+音频标记。
  • 注意:数据集中常用的层次标签被自然语言提示替换,以更好地进行泛化。初始序列长度限制为8192个标记,以提高效率。
  • 阶段3:长上下文预训练:

    • 目标:增强模型理解和处理长序列的能力,这对长视频或对话至关重要。
    • 方法:继续在多模态数据上进行训练,但将最大序列长度扩展到32,768个标记。
    • 理由:改善对长格式内容和复杂时间依赖关系的处理。

    后训练/微调(指令跟随与语音质量):

    在预训练建立广泛能力后,微调使模型更适合对话互动并提高输出质量。这使用使用ChatML格式化的指令跟随数据集(用于对话的结构化格式)。

    • Thinker微调:Thinker(LLM部分)在纯文本对话、视觉对话(图像/视频+文本)、音频对话和混合模态对话的组合上进行微调。这使其能够遵循指令并在各模态之间进行有帮助且连贯的对话。
    • Talker微调(3个阶段):Talker(语音生成部分)进行其专门的微调:
    1. 1.上下文学习(ICL)阶段:在对话数据上进行语音续写任务的训练。它学习根据多模态上下文和参考语音预测下一个音频标记,旨在实现上下文适当的韵律、情感和口音。使用音色解耦技术以防止将特定声音仅与稀有文本模式关联。
    2. 2.直接偏好优化(DPO):为了应对ICL后有时出现的口齿不清或幻觉等稳定性问题,应用DPO(强化学习技术)。模型生成语音样本,根据奖励分数进行排名(例如,低字错误率与参考相比,良好的标点/停顿对齐)。模型学习偏好具有更高奖励分数的生成,从而提高鲁棒性。
    3. 3.多说话者指令微调:DPO优化后的模型进一步在包含多个说话者的指令数据上进行微调。这使Talker能够采纳特定的声音特征(如提供的“Chelsie”和“Ethan”声音),进一步提高整体自然度。

    这一多阶段的训练和微调过程,通过精心叠加基础知识与专门的细化,是实现Qwen2.5-Omni令人印象深刻的广度和深度能力的关键。

    实操:如何使用Qwen2.5-Omni

    Qwen项目的一个伟大方面是其对开源访问的承诺。开发者和研究人员可以通过多个平台探索Qwen2.5-Omni:

    • Hugging Face:在这里找到模型权重和处理器代码。
    • ModelScope:阿里巴巴自己的模型平台也在这里托管该模型。
    • Qwen Chat:通过这里体验实时语音/视频通话互动。
    • API:通过阿里巴巴的DashScope API服务访问模型(详细信息这里)。
    • Docker:提供预构建的Docker镜像(qwenllm/qwen-omni)以便于部署。
    • Cookbooks:在GitHub Cookbooks中探索实用使用示例。
    • Web UI演示:运行本地Gradio演示(代码在GitHub repo中)。

    使用Transformers的基本用法:

    以下是一个简化的代码片段,展示如何使用transformers库和有用的qwen-omni-utils包(确保安装依赖项,并可能根据GitHub repo中提到的指定源提交构建transformers):

    import soundfile as sf
    from transformers import Qwen2_5OmniModel, Qwen2_5OmniProcessor
    from qwen_omni_utils import process_mm_info
    import torch # Added for dtype

    确保您已安装:

    • pip install git+https://github.com/huggingface/transformers@f742a644ca32e65758c3adb36225aef1731bd2a8
    • pip install accelerate torch soundfile qwen-omni-utils[decord] flash-attn --no-build-isolation

    加载模型和处理器(使用 flash_attention_2 以提高速度/内存效率)

    MODEL_ID ="Qwen/Qwen2.5-Omni-7B"
    model = Qwen2_5OmniModel.from_pretrained(
    MODEL_ID,
    torch_dtype=torch.bfloat16, # 使用 bfloat16 或 float16 以支持 Flash Attn 2
    device_map="auto",
    attn_implementation="flash_attention_2", # 推荐使用
    # enable_audio_output=True, # 默认值为 True
    )
    processor = Qwen2_5OmniProcessor.from_pretrained(MODEL_ID)

    定义您的对话(示例为视频)

    如果使用 URL 或本地文件,请确保已安装 ffmpeg。确保 URL 可访问,或替换为本地路径/path/to/your/video.mp4

    video_input ="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4"
    ## video_input = "/path/to/local/video.mp4" # 或使用本地文件
    conversation = [
    {
    "role":"system",
    # 重要:如果您希望输出音频,请使用此确切提示!
    "content":"您是 Qwen,由 Qwen 团队和阿里巴巴集团开发的虚拟人,能够感知听觉和视觉输入,并生成文本和语音。",
    },
    {
    "role":"user",
    "content": [
    {"type":"video","video": video_input},
    {"type":"text","text":"这个视频发生了什么?请用音频描述它。"},
    ],
    },
    ]

    决定是否使用视频中的音轨

    USE_AUDIO_IN_VIDEO=True#如果视频没有相关音频,则设置为False

    准备输入

    apply_chat_template 期望一个列表用于批处理,即使批大小为 1。

    templated_text=processor.apply_chat_template([conversation],add_generation_prompt=True,tokenize=False)[0]

    process_mm_info 也期望一个列表用于批处理。返回列表的列表/None: [[aud1, aud2,...]], [[img1,...]], [[vid1,...]]。

    audios,images,videos=process_mm_info([conversation],use_audio_in_video=USE_AUDIO_IN_VIDEO)

    提取内部列表或 None 以进行单实例处理。

    audio_list = audios[0]ifaudiosandaudios[0]elseNone
    image_list = images[0]ifimagesandimages[0]elseNone
    video_list = videos[0]ifvideosandvideos[0]elseNone

    处理器期望单个文本字符串,以及每个样本的音频/图像/视频列表。

    inputs = processor(
    text=templated_text,
    audios=audio_list,
    images=image_list,
    videos=video_list,
    return_tensors="pt",
    padding=True, # 根据输入可能需要填充
    use_audio_in_video=USE_AUDIO_IN_VIDEO
    )

    将输入移动到设备并更正数据类型

    inputs=inputs.to(model.device).to(model.dtype)

    生成文本和音频(选择声音:Chelsie,Ethan)

    如果只需要文本响应,请将 return_audio 设置为 False 以加快速度。

    print("生成响应中...")
    text_ids, audio_output = model.generate(
    **inputs,
    use_audio_in_video=USE_AUDIO_IN_VIDEO,
    return_audio=True, # 设置为 True 以获取音频
    spk="Chelsie", # 选择发声人
    max_new_tokens=512# 限制输出长度
    )
    print("生成完成。")

    解码文本(处理潜在的批维度,如果 model.generate 返回它)

    假设 text_ids 可能具有形状 [1, seq_len]。

    text_response = processor.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
    print("\n文本响应:")
    print(text_response)

    如果生成了音频,则保存音频

    ifaudio_outputisnotNone:
    # 假设 audio_output 形状为 [1, num_samples]
    audio_array = audio_output.reshape(-1).detach().cpu().numpy()
    output_filename ="qwen_omni_output.wav"
    sf.write(output_filename, audio_array, samplerate=24000)
    print(f"\n音频响应已保存到:{output_filename}")
    else:
    print("\n未生成音频(return_audio 为 False 或系统提示不正确)。")

    使用提示的关键注意事项:

    • 音频的系统提示:如果您希望获得语音输出,必须使用示例中提供的特定系统提示。
    • use_audio_in_video:如果处理视频,确保在 process_mm_info、processor 和 model.generate 调用中始终一致使用此标志。根据视频的声音是否相关进行决定。
    • enable_audio_output(模型加载):如果您从不需要音频输出,则在 from_pretrained 中设置为 False 以节省约 2GB 的 GPU 内存。默认值为 True。
    • return_audio(生成):如果您只需要特定查询的文本输出,即使 enable_audio_output 为 True,也在 model.generate 中设置为 False。这将加快文本生成速度。
    • 声音选择(spk):在生成时使用 spk="Chelsie"(默认,女性)或 spk="Ethan"(男性)来选择输出声音。
    • Flash Attention 2:强烈推荐用于速度和内存效率,尤其是在处理视频时。加载模型时使用 attn_implementation="flash_attention_2"(需要兼容的硬件和 torch.float16 或 torch.bfloat16)。
    • vLLM 部署:对于高吞吐量推理,考虑使用GitHub 仓库中提到的专用 vLLM 构建进行部署(目前仅支持通过 vLLM 输出文本,完整支持即将到来)。

    关键要点与未来方向

    Qwen2.5-Omni 不仅仅是另一个多模态模型;它是对人机交互未来的宣言。通过统一文本、图像、音频和视频的感知,并实现实时双流文本和语音输出,它显著降低了与 AI 进行自然和直观交流的障碍。

    关键要点:

    • 统一的全模态性:Qwen2.5-Omni 在单个模型中端到端处理文本、图像、音频和视频。
    • 思考者-发言者架构:有效地将推理/文本生成(思考者)与上下文感知的语音合成(发言者)分开。
    • 时间同步:TMRoPE 提供了一种稳健的方法来在时间上对齐音频和视频事件。
    • 实时流媒体:块状输入处理和滑动窗口音频解码实现低延迟交互。
    • 最先进的性能:在集成多模态任务中表现出色,并在单模态基准中保持高度竞争力,尤其是在音频理解和语音指令跟随方面。
    • 可访问性:公开可用的权重、代码和演示鼓励研究和开发。

    影响与未来方向:

    Qwen2.5-Omni展示的能力为众多应用开启了大门:

    • 超逼真的虚拟形象与人类:能够看、听并进行自然对话的人工智能。
    • 先进的无障碍工具:为视障人士提供周围环境的实时描述(视频 + 音频),或为无法说话的人即时生成语音。
    • 更智能的会议助手:不仅能转录会议内容,还能理解谁在何时说了什么,并分析所展示的视觉辅助材料。
    • 直观的创意工具:通过自然对话与人工智能合作开展多媒体项目。
    • 增强型机器人技术:能够更好地理解和与复杂动态的视听环境互动的机器人。

    Qwen团队承认未来工作中的一些领域,包括在细粒度视频OCR等挑战性任务上提高性能,以及增强音频与视频流之间的协作理解。最终目标依然是推动人工通用智能(AGI)的发展,未来的迭代可能会变得更快、更强大,并可能整合图像或视频生成等额外输出方式。

    Qwen2.5-Omni是人工智能快速进步的见证。它挑战我们重新思考与机器的互动方式,为未来铺平道路,让人工智能不仅仅是我们通过文本指挥的工具,而是可以进行对话、展示事物和倾听的伙伴,就像我们彼此之间的互动

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ