Prhub

#49403 [BugFix] Increase the max supported duration for MOSS-TD

原始 PR 作者 gcanlin 合并时间 2026-07-25 22:48 文件变更 1 提交数 3 评论 1 代码增减 +2 / -3

执行摘要

修复 MOSS-TD 长音频被拒绝问题

之前代码使用 feature_extractor.chunk_length 估算最大音频时长,但 Whisper 的 chunk_length 是音频切片的持续时间,不是完整音频的最大长度,导致 max_tokens_per_mm_item 只有约 375 个 token,进而 encoder_cache_size 回退到 max_num_batched_tokens(如 8192),超过 8192 个 embedding token 的长音频请求被拒绝。

建议阅读此 PR 以了解基于时长估算 token 的通用模式;对 MOSS-TD 用户来说这是关键修复。但需注意缺少测试,建议后续补充相应测试。

讨论亮点

仅有自动化 bot claude[bot] 评论提示该 PR 来自 fork 且未触发自动 review,无人工 review 讨论。

实现拆解

  1. 定义最大音频时长常量:在文件顶部新增 MAX_AUDIO_DURATION_S = 90 * 60,表示 MOSS-TD 支持的最大音频时长为 90 分钟。
  2. 简化 _get_max_audio_samples:移除原来依赖 feature_extractor 属性的逻辑(检查 chunk_length 并回退到 n_samples),直接返回 MAX_AUDIO_DURATION_S * feature_extractor.sampling_rate,即 90 分钟对应的采样点数。
  3. 间接影响 encoder cache 容量:通过 get_max_tokens_per_mm_item 等上游函数调用 _get_max_audio_samples,使 max_tokens_per_mm_item 提高到约 67500 个 token,从而 encoder_cache_size = max(max_num_batched_tokens, max_tokens_per_mm_item) 能容纳更长音频。
  4. 无测试或配置文件变更:仅修改源码逻辑,未引入单元测试或 e2e 测试。
文件 模块 状态 重要度
vllm/model_executor/models/moss_transcribe_diarize.py 模型层 modified 5.85

关键符号

_get_max_audio_samples

关键源码片段

vllm/model_executor/models/moss_transcribe_diarize.py data-contract

核心改动文件:新增 `MAX_AUDIO_DURATION_S` 常量并简化 `_get_max_audio_samples` 函数,直接修复了长音频被拒绝的 bug。

# vllm/model_executor/models/moss_transcribe_diarize.py# 新增 : MOSS-TD 支持的最大音频时长 90 分钟
MAX_AUDIO_DURATION_S = 90 * 60# ...def _get_max_audio_samples(feature_extractor: Any) -> int:
    """
    返回 MOSS-TD 支持的最大音频采样点数。
    原逻辑使用 feature_extractor.chunk_length (Whisper 的 30 秒 chunk)
    作为最大时长,导致长音频被拒绝;现在改为硬编码 90 分钟。
    """
    return int(MAX_AUDIO_DURATION_S * feature_extractor.sampling_rate)

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 最大时长硬编码MAX_AUDIO_DURATION_S 被硬编码为 90 分钟,若后续模型支持更长音频需要手动修改常量,缺乏配置化支持。
  2. 内存使用增加:允许更大 max_tokens_per_mm_item 会导致 encoder_cache_size 膨胀,可能增加显存占用,但仅在用户输入超过原限制的长音频时实际分配。
  3. 无测试覆盖:该变更缺少对应的单元测试或集成测试,对回归风险缺少验证。

影响范围:仅 MOSS-TD 单个模型文件,一行常量新增 + 一行函数简化,变更极小。用户影响:修复了长音频(超过 30 秒但小于 90 分钟)被拒绝的错误,对使用该模型做长音频转写的用户是重要改进。系统影响:无,因为变更仅在模型特定的多模态处理流程中生效,不影响其他模型或系统全局行为。

缺少测试覆盖 硬编码常量

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论