Skip to content

建议集成 FunASR/SenseVoice 用于语音识别和智能剪辑 #67

Closed

Description

@LauraGPT

Note

许可证与能力更正(2026-07-14): FunASR 是工具箱,不是单一模型。FunASR 与 SenseVoice 仓库源码采用 MIT;模型权重以各自模型卡为准。SenseVoiceSmall 支持中文、粤语、英语、日语和韩语,权重使用模型卡链接的 FunASR 模型开源协议;Fun-ASR-Nano-2512 为 Apache-2.0。语言范围、标点和性能取决于所选模型及运行配置。

你好!很棒的 AI 智能高光提取和剪辑工具!

建议考虑 FunASR 或 SenseVoice 用于视频中的语音识别:

剪辑场景优势

  • 极快 — SenseVoice-Small ~70ms/10s,批量处理效率高
  • 内置标点 — 自然断句,便于高光片段定位
  • 字级时间戳 — 精确的画面-语音对齐
  • 情感识别 — SenseVoice 可检测说话人情感,辅助高光判断
  • 完全本地 — 无API费用
  • Apache 2.0

参考

Activity

  1. LauraGPT commented on Jun 12, 2026

    @LauraGPT
    Author

    Hi! FunASR is now at 17.8K+ stars with a new agent-friendly CLI. Following up on this suggestion. Happy to help with integration! 🙏

  2. 123mlly commented on Jul 14, 2026

    @123mlly

    试了这个模型不太行,字幕时间戳有些问题。faster-whisper比较不错,8g内存也可以运行,详细也可以参考
    https://github.com/123mlly/autoclip/tree/feature/dev

  3. LauraGPT commented on Jul 14, 2026

    @LauraGPT
    Author

    @123mlly 感谢你给出实际分支。我按 feature/dev@f939fb5 的调用路径在 FunASR 1.3.14 上复现了,你说的字幕时间轴问题确实存在;根因更具体地落在当前适配器没有消费 SenseVoice 已返回的 CTC 对齐,而不是模型没有时间戳能力。

    复现证据:

    • 同一段 45.1 秒音频,SenseVoice 返回了 142 个 words 和一一对应的 142 组毫秒 timestamp,范围从 1050–1110 到 44980–45040。
    • 当前调用把 VAD 单段上限设为 30 秒,并加载 CAM++ 但没有 punctuation model;运行时明确提示 punc_model is missing, falling back to vad_segment mode。
    • _extract_sensevoice_segments 又优先采用 sentence_info,因此这段 45.1 秒音频最后只写出两条字幕:0–30010 ms 和 30010–45080 ms,完整忽略了词级 CTC 时间戳。这和你观察到的字幕定位不准一致。
    • 即使走后面的 timestamp 分支,当前代码也只取所有 token 的最小/最大边界,仍会把整段文本压成一条字幕。

    建议修正范围:

    1. 普通字幕模式显式请求 output_timestamp=True,不要为了时间轴默认加载 CAM++;只有启用 speaker diarization 时再加载 speaker model。
    2. 将 words 与 timestamp 配对,按标点、最大字符数和最大持续时间聚合为 SRT cue;sentence_info 只作为没有 CTC 对齐时的后备。
    3. 加一个固定 45 秒音频或结构化模型输出的回归测试:cue 必须单调、互不倒退、末尾不超过音频时长,并且不能再退化成 30 秒一条。
    4. 没有可用时间戳时应明确降级或报错,不要按全文字符比例伪造精确时间轴。

    所以 faster-whisper 作为你当前分支的默认选择是合理的;SenseVoice 路径需要先修正上述后处理,才适合用于智能剪辑。我之前 issue 描述里的“字级时间戳”指的是这套 CTC 输出,但没有把正确的消费方式说明清楚,这里补正。

  4. LauraGPT commented on Jul 14, 2026

    @LauraGPT
    Author

    @123mlly 我按你给出的 feature/dev@f939fb5 基线完成了 SenseVoice 时间戳修复,并提交了可直接 review 的 PR:

    123mlly/autoclip#1

    这次不是只用合成数据验证:

    • FunASR 1.3.14 对一段 45.1 秒真实音频返回 150 个 words 和 150 组 CTC timestamp;原先 2 条 VAD 粗段现在生成 21 条字幕。
    • 最长字幕 2.88 秒,末条结束于 45.04 秒;全部单调、不重叠且未超过 45.10 秒音频时长。
    • 5 个 SenseVoice 聚焦回归测试通过;连同现有 error-handler 测试共 36 项通过。

    实现会显式请求 output_timestamp=True,严格配对 words/timestamp,按模型原文恢复空格与标点,再按标点、42 字符和 8 秒上限生成 cue。只有整批结果都能可靠对齐时才采用细粒度路径,否则完整回退现有 sentence_info 等逻辑,不会部分解析后丢字。

    PR 当前是 MERGEABLE / CLEAN;目标仓库暂未配置 CI checks,完整测试证据已写在 PR 描述中。

  5. moved this to 🔬 Researching in AutoClip Roadmapon Sep 22, 2026
  6. zhouxiaoka commented on Sep 22, 2026

    @zhouxiaoka
    Owner

    感谢建议,以及后续在 SenseVoice 时间戳上的跟进。

    这条仍标在 status:researching:方向是「本地 ASR / 更好的字级时间戳与断句」,但接入哪套实现(FunASR / SenseVoice / 其它)要等协议与维护成本评估清楚后再承诺。当前默认路径仍是文档里的 Whisper / 自带字幕导入。

    有可复用的协议设计或独立小 PR(不绑大范围无关改动)欢迎继续讨论;合入节奏仍按个人业余维护排期。相关质量对照见 #116。

  7. zhouxiaoka commented on Sep 30, 2026

    @zhouxiaoka
    Owner

    已通过 PR #244 合入主分支,本条按“新增可选本地 SenseVoiceSmall 字幕转写”交付范围结案。感谢 123mlly 的实际集成分支及 LauraGPT 对 CTC 时间戳根因和聚合方案的跟进。

    使用方式:设置 → 字幕转写 → 转写方式选择「SenseVoice · 本地」→ 准备模型 → 就绪后保存设置。没有字幕的新任务会使用它;Whisper 保持原默认值。首次需联网下载组件和模型,Windows 实际落盘约 5.8 GB,建议预留至少 8 GB(包括安装临时空间)。转写在独立 CPU 进程运行,音频不上传、不需要 API Key。

    已处理本讨论中的主要时间轴问题:显式请求 output_timestamp=True,消费完整 words/timestamp,保留原文空格与标点,再聚合为可读字幕。不再优先使用约 30 秒的 VAD 粗段;缺失、倒退、重叠或越界的词级时间戳会明确报错,不按全文字数伪造时间轴。词级信息也接入现有字幕校验 sidecar。

    最终验收:https://github.com/zhouxiaoka/autoclip/actions/runs/36719422499
    Windows、macOS、Linux 的 Python 3.13 实际完成运行时安装、模型下载、禁止联网的真实语音转写和卸载检查。仓库公开访谈前 45 秒均生成 21 条字幕、157 个词级时间戳,最长约 3.36 秒,末尾 44.98 秒,顺序和边界检查通过;API 父进程未导入 FunASR/PyTorch。完整 CI 为 830 passed、2 skipped,前端 174 项通过;原 Whisper 的真实恢复验收也通过。

    本次仅接入 FunASR 1.3.14 + SenseVoiceSmall + FSMN-VAD,CPU 两线程,不启用说话人分离;不代表所有 FunASR 模型、云端 SenseVoice 或通用插件框架都已完成。模型权重许可链接已放入设置页与配置文档。

    这项新能力已在主分支,尚未发布新的正式安装包,旧公开 v1.4.0 不包含它。后续含该功能的构建若仍出现安装或时间轴问题,可以附上版本、系统与脱敏错误新建 issue 或重开本条;不需要为等待原反馈人再次确认而继续保持本条打开。

  8. zhouxiaoka commented on Oct 1, 2026

    @zhouxiaoka
    Owner

    本帖的本地 SenseVoiceSmall 能力已随 AutoClip v1.5.0 正式发布。

    设置里的字幕转写选择「SenseVoice · 本地」→ 准备模型 → 就绪后保存。首次下载组件与模型请预留至少 8 GB;转写在独立 CPU 进程运行,不上传音频、不需要转写 API Key,Whisper 和已有选择不强制更换。

    本版消费实际词级时间戳并按句聚合,不按全文比例伪造时间轴。交付范围是 SenseVoiceSmall + FSMN-VAD,不包含所有 FunASR 模型、云端 SenseVoice 或通用插件框架。配置、许可与验收说明。

  9. moved this from 🔬 Researching to 🚀 Shipped in AutoClip Roadmapon Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature功能请求status:shipped已经出现在某次 Release 里

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions