diff --git a/docs/moss_transcribe_diarize.md b/docs/moss_transcribe_diarize.md index a7e348642..b6bf1b089 100644 --- a/docs/moss_transcribe_diarize.md +++ b/docs/moss_transcribe_diarize.md @@ -13,6 +13,9 @@ MOSS-Transcribe-Diarize jointly generates transcription, timestamps, and speaker labels such as `[S01]`. An application therefore does not need to assemble an external VAD, ASR, and diarization pipeline. This is a deployment property, not a claim that the model has no internal segmentation or chunking. +The labels are anonymous within a recording: `[S01]` does not identify a known +person, verify an enrolled voiceprint, or necessarily map to `[S01]` in another +recording. ## Pinned sources @@ -33,7 +36,7 @@ floating model revision in a production service. Use an isolated Python 3.10+ environment with Transformers 5.6 or newer for the local backend. MOSS performs long-form transcription and speaker diarization in one generation, so do **not** pass `vad_model` or `spk_model`. -External VAD segmentation would break the model's global speaker identity +External VAD segmentation would break consistent anonymous speaker assignment across chunks. ```python diff --git a/docs/moss_transcribe_diarize_zh.md b/docs/moss_transcribe_diarize_zh.md index 6f5803800..6fc4e32ea 100644 --- a/docs/moss_transcribe_diarize_zh.md +++ b/docs/moss_transcribe_diarize_zh.md @@ -11,6 +11,8 @@ MOSS-Transcribe-Diarize 会联合生成转写、时间戳和 `[S01]` 等说话人标签,应用侧 不必再拼接外部 VAD、ASR 和 diarization 管线。这里描述的是部署形态,不表示模型 内部没有分块或分段。 +这些是单次录音内的匿名说话人标签:`[S01]` 不能识别已知人物,不做已注册声纹 +验证,也不保证与另一段录音中的 `[S01]` 是同一个人。 ## 固定上游版本 @@ -28,8 +30,8 @@ MOSS-Transcribe-Diarize 会联合生成转写、时间戳和 `[S01]` 等说话 ## FunASR AutoModel 契约 本地后端应使用隔离的 Python 3.10+ 环境,并安装 Transformers 5.6 或更新版本。 -MOSS 在一次生成中完成长音频转写与说话人识别,因此不要传 `vad_model` 或 -`spk_model`。外部 VAD 会把长音频切开,并破坏跨分块的全局说话人身份。 +MOSS 在一次生成中完成长音频转写与说话人分离,因此不要传 `vad_model` 或 +`spk_model`。外部 VAD 会把长音频切开,并破坏跨分块的匿名标签一致性。 ```python from funasr import AutoModel @@ -288,7 +290,7 @@ for segment in result["sentence_info"]: 不要传入 `vad_model` 或 `spk_model`:MOSS 在一次生成中联合完成分段和匿名说话人 归属,外部分段会破坏长轮次中的说话人一致性。适配器把上游带标签原文保存在 `raw_text`,只从标准化 segment 中移除已经校验的 `[Sxx]` 前缀;如果 SGLang -没有返回此前缀,则明确失败,不会伪造说话人身份。 +没有返回此前缀,则明确失败,不会伪造说话人标签。 原生 runtime 已通过 SGLang Omni [#914](https://github.com/sgl-project/sglang-omni/pull/914) 合并。其单张 H100 diff --git a/docs/repository_roles.md b/docs/repository_roles.md index ed2a4ff22..f891a4260 100644 --- a/docs/repository_roles.md +++ b/docs/repository_roles.md @@ -37,7 +37,7 @@ The four repositories share models and tooling but their responsibility boundari |---|---| | Use Python for speech recognition / training / fine-tuning | [modelscope/FunASR](https://github.com/modelscope/FunASR) | | Deploy a realtime streaming ASR service, recommend **Fun-ASR-Nano + vLLM** | [modelscope/FunASR/fun_asr_nano](https://github.com/modelscope/FunASR/tree/main/examples/industrial_data_pretraining/fun_asr_nano) — **canonical implementation, see below** | -| Transcribe long multi-speaker audio with timestamps and speaker identities in one model pass | [MOSS-Transcribe-Diarize deployment guide](./moss_transcribe_diarize.md) — an OpenMOSS model integrated with FunASR through local Transformers or vLLM, and independently available through native SGLang Omni; no separate external VAD or speaker model | +| Transcribe long multi-speaker audio with timestamps and anonymous speaker labels in one model pass | [MOSS-Transcribe-Diarize deployment guide](./moss_transcribe_diarize.md) — an OpenMOSS model integrated with FunASR through local Transformers or vLLM, and independently available through native SGLang Omni; no separate external VAD or speaker model. Labels distinguish speakers within the recording and do not identify a known person. | | Understand Fun-ASR-Nano / MLT capabilities, checkpoints, benchmarks, or use Transformers / vLLM / GGUF integrations | [QwenAudio/Fun-ASR](https://github.com/QwenAudio/Fun-ASR) | | Use emotion recognition / audio event detection | [QwenAudio/SenseVoice](https://github.com/QwenAudio/SenseVoice) | | Generate video subtitles / clip videos | [modelscope/FunClip](https://github.com/modelscope/FunClip) | diff --git a/docs/repository_roles_zh.md b/docs/repository_roles_zh.md index 0a77cfb1a..feb7a033f 100644 --- a/docs/repository_roles_zh.md +++ b/docs/repository_roles_zh.md @@ -35,7 +35,7 @@ |---|---| | 用 Python 做语音识别 / 训练 / 微调 | [modelscope/FunASR](https://github.com/modelscope/FunASR) | | 部署实时流式 ASR 服务,推荐 Fun-ASR-Nano + vLLM 做实时识别 | [modelscope/FunASR/fun_asr_nano](https://github.com/modelscope/FunASR/tree/main/examples/industrial_data_pretraining/fun_asr_nano) —— **推荐实现,见下节** | -| 用一个模型完成长音频多人转写、时间戳与说话人身份识别 | [MOSS-Transcribe-Diarize 部署指南](./moss_transcribe_diarize_zh.md) —— OpenMOSS 模型通过本地 Transformers 或 vLLM 接入 FunASR,也可通过原生 SGLang Omni 独立服务,不需要额外的外部 VAD 或说话人模型 | +| 用一个模型完成长音频多人转写、时间戳与匿名说话人标签 | [MOSS-Transcribe-Diarize 部署指南](./moss_transcribe_diarize_zh.md) —— OpenMOSS 模型通过本地 Transformers 或 vLLM 接入 FunASR,也可通过原生 SGLang Omni 独立服务,不需要额外的外部 VAD 或说话人模型。标签只区分本段录音中的说话人,不能识别已知人物。 | | 了解 Fun-ASR-Nano / MLT 的能力范围、权重、评测,或使用 Transformers / vLLM / GGUF 集成 | [QwenAudio/Fun-ASR](https://github.com/QwenAudio/Fun-ASR) | | 需要情感识别 / 音频事件检测 | [QwenAudio/SenseVoice](https://github.com/QwenAudio/SenseVoice) | | 做视频字幕 / 剪辑 | [modelscope/FunClip](https://github.com/modelscope/FunClip) | diff --git a/tests/test_moss_transcribe_diarize_docs.py b/tests/test_moss_transcribe_diarize_docs.py index 234740899..efb45a045 100644 --- a/tests/test_moss_transcribe_diarize_docs.py +++ b/tests/test_moss_transcribe_diarize_docs.py @@ -14,6 +14,24 @@ ROOT / "docs" / "deployment_matrix_ja.md", ROOT / "docs" / "deployment_matrix_ko.md", ) +BOUNDARY_DOCS = ( + *GUIDES, + ROOT / "docs" / "repository_roles.md", + ROOT / "docs" / "repository_roles_zh.md", + ROOT + / "web-pages" + / "product-site" + / "legacy" + / "en" + / "blog" + / "funclip-v2-2-0-moss-speaker-clipping.html", + ROOT + / "web-pages" + / "product-site" + / "legacy" + / "blog" + / "funclip-v2-2-0-moss-speaker-clipping.html", +) @pytest.mark.parametrize("guide", GUIDES) @@ -78,3 +96,20 @@ def test_all_deployment_matrices_link_moss_guide(matrix: Path) -> None: "FunASR 소유 model 또는 `AutoModel` backend가 아닙니다", ): assert stale_claim not in moss_row + + +def test_moss_docs_describe_anonymous_labels_not_known_person_identity() -> None: + combined = "\n".join(path.read_text(encoding="utf-8") for path in BOUNDARY_DOCS) + + for misleading_claim in ( + "speaker identity", + "speaker identities", + "说话人身份", + "身份识别", + ): + assert misleading_claim not in combined + + assert "anonymous speaker labels" in combined + assert "匿名说话人标签" in combined + assert "does not identify a known person" in combined + assert "不能识别已知人物" in combined diff --git a/web-pages/product-site/content/legacy-manifest.json b/web-pages/product-site/content/legacy-manifest.json index 1615cc60d..d79d14130 100644 --- a/web-pages/product-site/content/legacy-manifest.json +++ b/web-pages/product-site/content/legacy-manifest.json @@ -21,7 +21,7 @@ "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/funclip-v2-2-0-moss-speaker-clipping.html": "0d50747d3992301fb3062ad2cdf903bd427bec3db1f1e4fab1f06de207928bc9", "blog/generate-subtitles-srt-vtt-from-audio-video.html": "f1133235673d441cc654310581f59a319f182314ab7c0b0824af87da9f4a0591", "blog/index.html": "0698ce3d08c4b61c1e1e3f94142d3564581d162765081437229d2c4f3fff5ff7", "blog/japanese-speech-recognition.html": "399f5ce84e68ac00854bdf70b52b1cde6795efca7c800fd6492035a37a7c1b68", @@ -60,7 +60,7 @@ "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/funclip-v2-2-0-moss-speaker-clipping.html": "644159267f0fa4e7aab9d0eda98f68cd2b6365a9985038b639c626a5ea5ea7e8", "en/blog/generate-subtitles-srt-vtt-from-audio-video.html": "1530d4b9e94820a0b60d801e8d1c19b7aeb031b2f2b76c092657392e47706c6d", "en/blog/index.html": "fc46e28078b49173d9f124afc51bed070b94b3738850b077a7fffcdaa965bc3a", "en/blog/japanese-speech-recognition.html": "c476adcc2be1ed7c19e2345cc91b8ee6a0e04efd794b9b6476dd5d9b3a2c8b04", diff --git a/web-pages/product-site/legacy/blog/funclip-v2-2-0-moss-speaker-clipping.html b/web-pages/product-site/legacy/blog/funclip-v2-2-0-moss-speaker-clipping.html index fe29da7cc..05dc8d872 100644 --- a/web-pages/product-site/legacy/blog/funclip-v2-2-0-moss-speaker-clipping.html +++ b/web-pages/product-site/legacy/blog/funclip-v2-2-0-moss-speaker-clipping.html @@ -24,11 +24,12 @@
-

FunClip v2.2.0:用 MOSS 做长音频说话人识别与视频剪辑

+

FunClip v2.2.0:用 MOSS 做长音频说话人分离与视频剪辑

2026-08-31 · FunClip Release

FunClip 本地视频、字幕识别和智能剪辑界面 -

FunClip v2.2.0 新增一条可选的 MOSS 路径:把长音频交给 vLLM 服务,FunASR 将模型输出归一化为文本、说话人身份和时间段,FunClip 再生成 SRT 或按 spkS01spkS02 剪辑。

+

FunClip v2.2.0 新增一条可选的 MOSS 路径:把长音频交给 vLLM 服务,FunASR 将模型输出归一化为文本、匿名说话人标签和时间段,FunClip 再生成 SRT 或按 spkS01spkS02 剪辑。

MOSS-Transcribe-Diarize 是 OpenMOSS 维护的第三方模型,不属于 FunASR 或 FunClip。集成固定使用 OpenMOSS-Team/MOSS-Transcribe-Diarize revision e8681d68e7042738ffca8ac8212bc8fcb1131ab8,并明确保留模型归属与支持边界。

+

spkS01spkS02 只是当前录音内的匿名标签,不能识别已知人物、验证已注册声纹,也不保证不同录音中的同名标签对应同一个人。

数据路径

@@ -64,9 +65,9 @@

2. 启动 FunClip

能力与边界

完整生产部署、健康检查和容量边界见 MOSS 双语部署指南

diff --git a/web-pages/product-site/legacy/en/blog/funclip-v2-2-0-moss-speaker-clipping.html b/web-pages/product-site/legacy/en/blog/funclip-v2-2-0-moss-speaker-clipping.html index b19deb146..9b1e830d3 100644 --- a/web-pages/product-site/legacy/en/blog/funclip-v2-2-0-moss-speaker-clipping.html +++ b/web-pages/product-site/legacy/en/blog/funclip-v2-2-0-moss-speaker-clipping.html @@ -27,8 +27,9 @@

FunClip v2.2.0: Long-Form Speaker-Aware Video Clipping with MOSS

August 31, 2026 · FunClip Release

FunClip local video, subtitle recognition, and intelligent clipping interface -

FunClip v2.2.0 adds an opt-in MOSS path: send long audio to a vLLM service, normalize text, speaker identities, and time ranges through FunASR, then generate SRT or clip by spkS01, spkS02, and later speaker IDs.

+

FunClip v2.2.0 adds an opt-in MOSS path: send long audio to a vLLM service, normalize text, anonymous speaker labels, and time ranges through FunASR, then generate SRT or clip by spkS01, spkS02, and later speaker labels.

MOSS-Transcribe-Diarize is a third-party model maintained by OpenMOSS, not a FunASR or FunClip-owned checkpoint. The integration pins OpenMOSS-Team/MOSS-Transcribe-Diarize revision e8681d68e7042738ffca8ac8212bc8fcb1131ab8 and keeps ownership and support boundaries explicit.

+

spkS01 and spkS02 distinguish anonymous speakers within the current recording. The model does not identify a known person, verify an enrolled voiceprint, or promise that labels match across separate recordings.

Data path

阶段职责
@@ -64,9 +65,9 @@

2. Start FunClip

Capabilities and boundaries

See the bilingual MOSS production guide for health checks, runtime choices, and capacity boundaries.

StageResponsibility