Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions web-pages/product-site/content/legacy-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@
"blog/funasr-vs-faster-whisper-chinese.html": "bfe9bb8017be80c7e7f4587726f43f6064f1dc4c65e39788f836fdfb0c9789f7",
"blog/funasr-vs-whisper-benchmark.html": "b7b49adf24d20570abb09b733ce03d4a50a4a0e98e746b4a9320f453e01cce84",
"blog/funclip-v2-1-0-video-clipping-release.html": "88f6c44e5332d1746c4db0fc97d755ef82f12e46d8f1c1c0ad9351152ff9dfc1",
"blog/funclip-v2-2-0-moss-speaker-clipping.html": "7127fb3d6493500d1e44e2168427b3e9adf9ec9bcd840d9da8fd5a1323af9709",
"blog/generate-subtitles-srt-vtt-from-audio-video.html": "f1133235673d441cc654310581f59a319f182314ab7c0b0824af87da9f4a0591",
"blog/index.html": "fbfa2611c97cc5426d78450078df36fb1818da1a5eeaef718e6a18fa9fd3d287",
"blog/index.html": "0698ce3d08c4b61c1e1e3f94142d3564581d162765081437229d2c4f3fff5ff7",
"blog/japanese-speech-recognition.html": "399f5ce84e68ac00854bdf70b52b1cde6795efca7c800fd6492035a37a7c1b68",
"blog/lightweight-speech-recognition-cpu.html": "d6270066222ed5baef0df108e6a4155f4a87bb5482169f23f218794d371f3281",
"blog/punctuation-restoration-python.html": "6cd26e03bf75b4343afd7b351c2681ebd513b058fb549c5888802be9ff3a1229",
Expand Down Expand Up @@ -59,8 +60,9 @@
"en/blog/funasr-vs-faster-whisper-chinese.html": "abf31d3827dfba9b31ccd4e76229de9e4bfff00ab8bcee33bd718c88249630f4",
"en/blog/funasr-vs-whisper-benchmark.html": "367d4a8a1cc09ac932c80cdad065127925c5e5f942a806ace683c16dc1132769",
"en/blog/funclip-v2-1-0-video-clipping-release.html": "229baf59adf2c3290541d9b3c8a6243992406ba84b712714e9d14599205cb1d4",
"en/blog/funclip-v2-2-0-moss-speaker-clipping.html": "6456c699b4837e5c1fc3741cda40a58a1d0caed8498351445e2dd6314dd89b3c",
"en/blog/generate-subtitles-srt-vtt-from-audio-video.html": "1530d4b9e94820a0b60d801e8d1c19b7aeb031b2f2b76c092657392e47706c6d",
"en/blog/index.html": "526253689a12ead8058ef9f45b9cdc37254f6507ab6d23511a742d88fddb95c2",
"en/blog/index.html": "fc46e28078b49173d9f124afc51bed070b94b3738850b077a7fffcdaa965bc3a",
"en/blog/japanese-speech-recognition.html": "c476adcc2be1ed7c19e2345cc91b8ee6a0e04efd794b9b6476dd5d9b3a2c8b04",
"en/blog/lightweight-speech-recognition-cpu.html": "0e02c0e0853b12613d32c250f593c05c2052f18231207b63ee01d6e6600a86f7",
"en/blog/punctuation-restoration-python.html": "d6e30049f48d9dc6e6bc22eb567830013e4161eca51215616738b675dd1ffc40",
Expand Down Expand Up @@ -106,7 +108,7 @@
"models.html": "724c88917c9934ffa66948cf3eb583fed930dd689d691b7d21fa22ee8332e606",
"quickstart.html": "a543bf07c2cfc9a69ef3831f15c9e9d3e571a826a73cf7e4bdc8e9eb7b910254",
"robots.txt": "1305b0f680b3e9f73b01301dc474423230dffab85731a379a694f30c73c07f2d",
"sitemap.xml": "bcc17d763cd1b0d317b3af8e52cc40fde58c4a80f3fb5664a12b5503ecf2fc19",
"sitemap.xml": "ed91fc0211b48458b77c56c1e600d055c013a6bb4b461821c3ec78dcff4ac26a",
"static/liveplayer/liveplayer-component.min.js": "ea10fda35574cc3a77a3e7187095467d1a409009a2d39690051d33d0e7055d30",
"static/liveplayer/liveplayer-lib.min.js": "ad67b4e1188c586ec218674a6db9968daf71ed4fbc262258f061c1f931d54250",
"static/offline/index.html": "868781c621ddabe5d3f088d6b739e0c08e6cdc150587af6515cc323852018e62",
Expand Down
2 changes: 2 additions & 0 deletions web-pages/product-site/data/deployments.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@
{"label": "merged native SGLang Omni MOSS runtime and H100 benchmark", "url": "https://github.com/sgl-project/sglang-omni/pull/914"},
{"label": "FunASR ecosystem integration guide", "url": "https://github.com/modelscope/FunASR/blob/main/docs/moss_transcribe_diarize.md"},
{"label": "FunASR AutoModel adapter merge and exact-head CI", "url": "https://github.com/modelscope/FunASR/pull/3558"},
{"label": "FunClip v2.2.0 MOSS speaker-clipping guide", "url": "https://www.funasr.com/en/blog/funclip-v2-2-0-moss-speaker-clipping.html"},
{"label": "FunClip v2.2.0 release and checksums", "url": "https://github.com/modelscope/FunClip/releases/tag/v2.2.0"},
{"label": "moss-transcribe.cpp third-party C++17 and GGUF runtime", "url": "https://github.com/localai-org/moss-transcribe.cpp"},
{"label": "LocalAI third-party moss-transcribe-cpp backend", "url": "https://github.com/mudler/LocalAI"}
],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>FunClip v2.2.0:MOSS 长音频说话人识别与视频剪辑 | FunASR</title>
<meta name="description" content="FunClip v2.2.0 集成第三方 MOSS-Transcribe-Diarize,通过 vLLM 完成长音频 ASR、说话人分段、SRT 和按说话人剪辑。">
<meta property="og:title" content="FunClip v2.2.0:MOSS 说话人识别与视频剪辑">
<meta property="og:description" content="一条经过端到端验证的 vLLM 路径,输出说话人分段、SRT,并支持按说话人剪辑。">
<meta property="og:type" content="article">
<meta property="og:url" content="https://www.funasr.com/blog/funclip-v2-2-0-moss-speaker-clipping.html">
<meta property="og:image" content="https://www.funasr.com/img/funclip-v2-1-0-interface.jpg">
<link rel="canonical" href="https://www.funasr.com/blog/funclip-v2-2-0-moss-speaker-clipping.html">
<link rel="alternate" hreflang="en" href="https://www.funasr.com/en/blog/funclip-v2-2-0-moss-speaker-clipping.html">
<link rel="alternate" hreflang="zh" href="https://www.funasr.com/blog/funclip-v2-2-0-moss-speaker-clipping.html">
<link rel="alternate" hreflang="x-default" href="https://www.funasr.com/en/blog/funclip-v2-2-0-moss-speaker-clipping.html">
<script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","headline":"FunClip v2.2.0:MOSS 长音频说话人识别与视频剪辑","datePublished":"2026-08-31","dateModified":"2026-08-31","author":{"@type":"Organization","name":"FunASR / Tongyi Lab"},"publisher":{"@type":"Organization","name":"FunASR"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.funasr.com/blog/funclip-v2-2-0-moss-speaker-clipping.html"},"image":"https://www.funasr.com/img/funclip-v2-1-0-interface.jpg"}</script>
<style>
p code,li code,td code,.proof code{overflow-wrap:anywhere}
:root{--primary:#2563eb;--accent:#047857;--surface:#f8fafc;--border:#dbe3ec;--text:#0f172a;--soft:#475569}
*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);line-height:1.72;background:#fff}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:840px;margin:auto;padding:0 24px}.nav{position:sticky;top:0;z-index:10;background:#fff;border-bottom:1px solid var(--border);padding:14px 0}.nav .container{max-width:1120px;display:flex;align-items:center;gap:20px}.nav-logo{font-weight:800;color:var(--text)}.nav-logo span{color:var(--primary)}.nav-links{display:flex;gap:16px;margin-left:auto}.nav-btn{padding:8px 14px;background:var(--primary);color:#fff;border-radius:7px}article{padding:64px 0 80px}h1{font-size:2.1rem;line-height:1.28;margin:0 0 12px}h2{font-size:1.35rem;margin:36px 0 12px;padding-top:20px;border-top:1px solid var(--border)}p,li{color:var(--soft)}.meta{color:#64748b}.lead{font-size:1.08rem;color:var(--text)}.hero-media{width:100%;aspect-ratio:2.04/1;object-fit:cover;border:1px solid var(--border);border-radius:8px;margin:18px 0 24px}pre{overflow:auto;background:#172033;color:#e2e8f0;padding:18px;border-radius:8px;line-height:1.6}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}p code,li code,td code{background:var(--surface);padding:2px 5px;border-radius:4px;color:#1d4ed8}table{width:100%;border-collapse:collapse;margin:18px 0}th,td{text-align:left;vertical-align:top;padding:11px;border-bottom:1px solid var(--border)}th{background:var(--surface)}.proof{border-left:4px solid var(--accent);background:#f0fdf4;padding:14px 16px;color:#14532d}.cta{margin-top:30px;padding:22px;border:1px solid var(--border);border-radius:8px}.cta a{font-weight:700}footer{padding:28px;background:#0f172a;color:#94a3b8;text-align:center}@media(max-width:800px){.nav-links{display:none}h1{font-size:1.65rem}}
</style>
</head>
<body>
<nav class="nav"><div class="container"><a class="nav-logo" href="/">Fun<span>ASR</span></a><div class="nav-links"><a href="/deploy/">部署</a><a href="/blog/">博客</a><a href="/ecosystem.html">生态</a></div><a href="/en/blog/funclip-v2-2-0-moss-speaker-clipping.html">EN</a><a class="nav-btn" href="https://github.com/modelscope/FunASR">GitHub</a></div></nav>
<article><div class="container">
<h1>FunClip v2.2.0:用 MOSS 做长音频说话人识别与视频剪辑</h1>
<p class="meta">2026-08-31 · FunClip Release</p>
<img class="hero-media" src="/img/funclip-v2-1-0-interface.jpg" alt="FunClip 本地视频、字幕识别和智能剪辑界面">
<p class="lead">FunClip v2.2.0 新增一条可选的 MOSS 路径:把长音频交给 vLLM 服务,FunASR 将模型输出归一化为文本、说话人身份和时间段,FunClip 再生成 SRT 或按 <code>spkS01</code>、<code>spkS02</code> 剪辑。</p>
<p><a href="https://github.com/OpenMOSS/MOSS-Transcribe-Diarize">MOSS-Transcribe-Diarize</a> 是 OpenMOSS 维护的第三方模型,不属于 FunASR 或 FunClip。集成固定使用 <code>OpenMOSS-Team/MOSS-Transcribe-Diarize</code> revision <code>e8681d68e7042738ffca8ac8212bc8fcb1131ab8</code>,并明确保留模型归属与支持边界。</p>

<h2>数据路径</h2>
<table><thead><tr><th>阶段</th><th>职责</th></tr></thead><tbody>
<tr><td>vLLM</td><td>加载固定 MOSS revision,通过 <code>/v1/audio/transcriptions</code> 返回带时间与说话人标记的 JSON。</td></tr>
<tr><td>FunASR 1.4.9+</td><td>解析转写结果并生成统一的 <code>text</code>、<code>timestamp</code> 与 <code>sentence_info</code>。</td></tr>
<tr><td>FunClip 2.2.0</td><td>渲染说话人 SRT、按说话人选段,或把时间段交给现有音视频剪辑流程。</td></tr>
</tbody></table>

<h2>1. 启动固定 revision 的 vLLM 服务</h2>
<pre><code>python -m venv .venv-moss
. .venv-moss/bin/activate
pip install -U vllm

vllm serve OpenMOSS-Team/MOSS-Transcribe-Diarize \
--revision e8681d68e7042738ffca8ac8212bc8fcb1131ab8 \
--served-model-name moss-transcribe-diarize \
--trust-remote-code --host 127.0.0.1 --port 8898</code></pre>
<p>先用真实音频检查服务契约。当前经过验证的格式是 <code>response_format=json</code>:</p>
<pre><code>curl -fsS http://127.0.0.1:8898/v1/audio/transcriptions \
-F file=@sample.wav \
-F model=moss-transcribe-diarize \
-F response_format=json \
-F max_completion_tokens=8192</code></pre>

<h2>2. 启动 FunClip</h2>
<pre><code>python -m pip install -U -r requirements.txt
python funclip/launch.py \
--model moss \
--moss-backend vllm \
--moss-base-url http://127.0.0.1:8898/v1 \
--moss-max-tokens 8192</code></pre>
<p>远端服务需要 bearer token 时,把凭据放进 <code>MOSS_API_KEY</code> 环境变量;FunClip 不要求把 token 写进命令行或仓库。</p>

<h2>能力与边界</h2>
<ul>
<li>支持长音频 ASR、说话人身份、SRT,以及按说话人剪辑,包括不足一秒的有效短说话片段。</li>
<li>MOSS 提供段级时间戳,适合按整段或说话人剪辑;任意文本的精确字符级剪辑仍应使用 Paraformer。</li>
<li>全局说话人身份依赖模型看到连续音频,因此不接外部 VAD 或说话人模型,避免预切块破坏身份一致性。</li>
<li>如果最后一个 MOSS 片段因 token 上限没有结束时间戳,FunClip 会明确报错并提示提高 <code>--moss-max-tokens</code>,不会静默丢掉尾段。</li>
</ul>
<p>完整生产部署、健康检查和容量边界见 <a href="/deploy/moss-transcribe-diarize.html">MOSS 双语部署指南</a>。</p>

<h2>下载与校验 v2.2.0</h2>
<pre><code>FunClip-2.2.0.tar.gz
SHA256 994c5d9cf392b74b36284d526eca8bada1560a3e7825ab7baa9c673a1b4ef216

FunClip-2.2.0.zip
SHA256 4f5a7d33d9ea65467f29b55b15ed5be18e64de7e57e2f9f36fe51a23b40557e7</code></pre>
<p>从 <a href="https://github.com/modelscope/FunClip/releases/tag/v2.2.0">FunClip v2.2.0 Release</a> 下载归档和 <code>SHA256SUMS</code>,不要从不明镜像复制二进制或凭据。</p>

<div class="proof">发布内容对应 commit <code>c205bf32a8b11226ff5e8acb9a3c7a1f00cd3b06</code>。仓库测试结果为 84 passed、1 skipped;H100 + vLLM 两说话人样例返回 S01/S02、有效 SRT,并成功按 S02 剪辑。这个验证证明发布链路可用,不代表所有语言、音频条件或并发规模。</div>
<div class="cta"><p>先按部署指南跑通一段真实双人音频,再进入 FunClip 处理自己的视频。</p><a href="https://github.com/modelscope/FunClip/releases/tag/v2.2.0">查看 FunClip v2.2.0 发布与下载</a></div>
</div></article>
<footer>© 2024-2026 Tongyi Lab, Alibaba Group</footer>
</body>
</html>
Loading
Loading