@MosiAI_Official: MOSS-Transcribe-Diarize-0.9B 现已在 @huggingface 上开源。采用端到端音频到结构化转录…
摘要
MOSS-Transcribe-Diarize-0.9B 是一个开源端到端音频理解模型,用于长篇幅多说话人转录、说话人识别和时间戳生成,由 Mosi AI 在 Apache 2.0 许可下发布。
查看缓存全文
缓存时间: 2026/07/09 15:38
MOSS-Transcribe-Diarize-0.9B 现已在 @huggingface 上开源。采用端到端音频到结构化转录本的范式构建:
0.9B 开源 ASR 模型 Apache 2.0 许可证 128k 长上下文转录 最多支持约 90 分钟音频输入 单次生成中带有说话人标签和时间戳 支持会议、打断和重叠语音的多说话人日志 针对姓名、术语和领域特定词汇的热词偏置 NVIDIA RTX 4090 上约 100 token/s,RTF ~0.017
感谢 @sgl_project @vllm_project @Prince_Canuma @lllucas 的 Day-0 支持!
Github: https://github.com/OpenMOSS/MOSS-Transcribe-Diarize… Huggingface: https://huggingface.co/spaces/OpenMOSS-Team/MOSS-transcribe-diarize… API: https://shorturl.at/DWwe3 Live demo: https://shorturl.at/wRZ3j Technical Report: http://arxiv.org/abs/2601.01554 HF Space: https://huggingface.co/spaces/OpenMOSS-Team/MOSS-transcribe-diarize… AtomGit: https://ai.atomgit.com/OpenMOSS/MOSS-Transcribe-Diarize… SGLang-Omni: https://github.com/sgl-project/sglang-omni… vLLM: https://github.com/vllm-project/vllm… MLX-audio: https://github.com/Blaizzy/mlx-audio… Discord: https://discord.gg/SmVQHGffZU
OpenMOSS/MOSS-Transcribe-Diarize
来源:https://github.com/OpenMOSS/MOSS-Transcribe-Diarize
MOSS-Transcribe-Diarize
MOSS-Transcribe-Diarize 0.9B 是一个开源的 SOTA 端到端音频理解模型,用于长时长多说话人转录、说话人日志、时间戳和声学事件感知。MOSS-Transcribe-Diarize Pro 是一个更强的模型,整体性能更高,即将通过 API 访问提供。
新闻
- 2026-07-09:开源了 MOSS-Transcribe-Diarize 0.9B。
目录
简介
MOSS-Transcribe-Diarize 是我们的旗舰 SOTA 模型系列,用于将现实世界中的长时长音频一次性转换为结构化的、带有说话人意识的转录本。这些模型不是将独立的 ASR 和说话人日志系统拼接在一起,而是联合执行语音转录和说话人日志,生成带时间对齐的文本,包括精确的时间戳和一致的说话人标签,如 [S01]、[S02] 等。专为会议、通话、播客、访谈、讲座和视频内容而构建,MOSS-Transcribe-Diarize 旨在处理长时长、杂乱、多说话人的录音,可靠性至关重要。它还可以输出可选的声学事件注释,使下游系统更丰富地了解发生了什么、谁说了话以及何时说的。
该模型接受原始音频并输出紧凑的时间戳转录本。规范的输出格式为:text [start_time][Sxx]transcribed speech[end_time]
时间戳以秒为单位表示,相邻片段连接成一个流,例如:text [0.48][S01]Welcome everyone[1.66][12.26][S02]The new transcription pipeline is ready for evaluation[13.81][14.36][S01]Great, include the diarization results in the report[18.76]
模型架构
| 组件 | 规格 |
|---|---|
| 文本骨干 | Qwen3-0.6B 风格的因果解码器 |
| 音频编码器 | Whisper-Medium 编码器配置 |
| 音频前端 | WhisperFeatureExtractor,16 kHz,80 mel bins,30 秒片段 |
| 音频-文本桥接 | 4 倍时间合并 + MLP 适配器 |
| 融合 | 通过 masked_scatter 用音频特征替换 `< |
| 输出格式 | 紧凑的 [start][Sxx]text[end] 转录本,带有说话人标签如 [S01] |
评估
客观评估
我们使用三个客观指标评估 MOSS-Transcribe-Diarize:字符错误率 (CER)、串联最小排列字符错误率 (cpCER) 和 Δcp。所有指标越低越好。最佳结果以粗体显示,次佳结果带下划线。短横线 (-) 表示结果不可用。
| 模型 | AISHELL-4 | Alimeeting | Podcast | Movies |
|---|---|---|---|---|
| CER↓ | cpCER↓ | Δcp↓ | CER↓ | |
| Doubao | 18.18 | 27.86 | 9.68 | 25.25 |
| ElevenLabs | 19.58 | 37.95 | 18.36 | 25.70 |
| GPT-4o | — | — | — | 14.37 |
| Gemini 2.5 Pro | 42.70 | 53.42 | 10.72 | 27.43 |
| Gemini 3 Pro | 22.75 | 27.43 | 4.68 | 26.75 |
| VIBEVOICE ASR | 21.40 | 24.99 | 3.59 | 27.40 |
| MOSS Transcribe Diarize 0.9B | 14.84 | 15.83 | 0.99 | 24.86 |
| MOSS Transcribe Diarize Pro | 13.78 | 14.02 | 0.24 | 18.22 |
快速开始
环境配置
使用干净的 Python 环境。该项目已在 Python 3.12 和 Transformers 5.x 上测试。
git clone https://github.com/OpenMOSS/MOSS-Transcribe-Diarize.git
cd MOSS-Transcribe-Diarize
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e ".[torch-runtime]" --torch-backend=auto
Python 使用
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
from moss_transcribe_diarize import parse_transcript
from moss_transcribe_diarize.inference_utils import (
build_transcription_messages,
generate_transcription,
resolve_device,
)
model_id = "OpenMOSS-Team/MOSS-Transcribe-Diarize"
audio_path = "audio.wav"
device = resolve_device("auto")
dtype = torch.bfloat16 if device.type == "cuda" else torch.float32
model = AutoModelForCausalLM.from_pretrained(
model_id, trust_remote_code=True, dtype="auto",
).to(dtype=dtype).to(device).eval()
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
messages = build_transcription_messages(audio_path)
result = generate_transcription(
model, processor, messages,
max_new_tokens=2048, do_sample=False,
device=device, dtype=dtype,
)
print(result["text"])
for segment in parse_transcript(result["text"]):
print(segment.start, segment.end, segment.speaker, segment.text)
消息流遵循常见的 Qwen 多模态模式。聊天模板由 AutoProcessor 从模型加载:
processor.apply_chat_template(messages, tokenize=False)用音频占位符渲染文本。process_audio_info(messages, sampling_rate)从相同的消息中加载音频波形。processor(text=text, audio=audios)计算 Whisper 输入特征并扩展音频占位符。model.generate(...)生成带时间戳的转录和说话人日志文本。
自定义提示词和热词
默认提示词针对带时间戳的转录和说话人日志进行了优化:
请将音频转写为文本,每一段需以起始时间戳和说话人编号([S01]、[S02]、[S03]...)开头,正文为对应的语音内容,并在段末标注结束时间戳,以清晰标明该段语音范围。
要添加热词,请在默认提示词后附加一个简短提示:
请将音频转写为文本,每一段需以起始时间戳和说话人编号([S01]、[S02]、[S03]...)开头,正文为对应的语音内容,并在段末标注结束时间戳,以清晰标明该段语音范围。热词提示:热词1, 热词2, 热词3
更多提示词配方可在 examples/prompts.md 中找到。相同的提示词可以传递给 build_transcription_messages、mtd-subtitle 和 mtd-subtitle-web。
使用 vLLM 提供服务
MOSS-Transcribe-Diarize 支持通过兼容 OpenAI 的转录 API 进行 vLLM 服务。请使用包含 MOSS-Transcribe-Diarize 模型注册的固定 vLLM 每日构建版本。选择以下命令之一:对于 CUDA 12 环境,使用 cu129;对于 CUDA 13 环境,使用 cu130。
uv pip install -U vllm \
--torch-backend=auto \
--extra-index-url https://wheels.vllm.ai/68b4a1d582818e67adc903bf1b8fc5a5447da2fa/cu129
或者:
uv pip install -U vllm \
--torch-backend=auto \
--extra-index-url https://wheels.vllm.ai/68b4a1d582818e67adc903bf1b8fc5a5447da2fa/cu130
vllm serve OpenMOSS-Team/MOSS-Transcribe-Diarize --trust-remote-code
curl http://localhost:8000/v1/audio/transcriptions \
-F model="OpenMOSS-Team/MOSS-Transcribe-Diarize" \
-F file=@"audio.wav" \
-F response_format="json" \
-F temperature="0"
使用 SGLang Omni 提供服务
推荐使用 SGLang Omni (https://github.com/sgl-project/sglang-omni) 通过兼容 OpenAI 的 /v1/audio/transcriptions 端点来服务 MOSS-Transcribe-Diarize。按照安装指南 (https://github.com/sgl-project/sglang-omni/blob/main/docs/get_started/installation.md) 安装 sglang-omni,然后下载模型:
hf download OpenMOSS-Team/MOSS-Transcribe-Diarize
服务模型:
sgl-omni serve \
--model-path OpenMOSS-Team/MOSS-Transcribe-Diarize \
--port 8000 \
--max-running-requests 16 \
--cuda-graph-max-bs 16 \
--mem-fraction-static 0.80
当需要解析的说话人片段时,请使用 response_format=verbose_json。json 仅返回原始转录文本。
curl -X POST http://localhost:8000/v1/audio/transcriptions \
-F model=OpenMOSS-Team/MOSS-Transcribe-Diarize \
-F [email protected] \
-F response_format=verbose_json
import requests
with open("audio.wav", "rb") as f:
resp = requests.post(
"http://localhost:8000/v1/audio/transcriptions",
data={
"model": "OpenMOSS-Team/MOSS-Transcribe-Diarize",
"response_format": "verbose_json",
},
files={"file": ("audio.wav", f, "audio/wav")},
timeout=300,
)
resp.raise_for_status()
payload = resp.json()
print(payload["text"])
for segment in payload.get("segments", []):
print(f"[{segment['start']:.2f}-{segment['end']:.2f}] {segment['text']}")
对于较长的多说话人音频,请提高 max_new_tokens 以便解码器能够完成完整的带说话人日志的转录本:
curl -X POST http://localhost:8000/v1/audio/transcriptions \
-F model=OpenMOSS-Team/MOSS-Transcribe-Diarize \
-F [email protected] \
-F response_format=verbose_json \
-F max_new_tokens=65536
| 参数 | 类型 | 默认值 | 描述 |
|—|—|—|—|—|
| file | file | 必需 | 以多部分表单数据上传的音频文件 |
| model | string | 服务器默认值 | 模型标识符 |
| language | string | 未设置 | 可选语言提示 |
| response_format | string | json | json、verbose_json 或 text |
| temperature | float | 模型默认值 (0.0) | 采样温度 |
| max_new_tokens | int | 5120 | 最大生成 token 数;对于长音频请提高,例如 65536 |
| prompt | string | 未设置 | 可选指令覆盖;省略则使用内置的转录+说话人日志提示词 |
有关基准测试、性能数据和实现细节,请参阅 SGLang Omni 指南 (https://github.com/sgl-project/sglang-omni/blob/main/docs/cookbook/moss_transcribe_diarize.md)。以下是在单个 H100 上针对短序列和长序列多说话人 ASR 任务报告的结果。
movies 短序列 ASR:
| 并发数 | 吞吐量 (req/s) | 平均延迟 (s) | 平均 RTF | audio_s/s |
|---|---|---|---|---|
| 1 | 2.57 | 0.388 | 0.0612 | 29.76 |
| 2 | 4.89 | 0.409 | 0.0659 | 56.55 |
| 4 | 6.62 | 0.513 | 0.0790 | 76.64 |
| 8 | 6.80 | 0.533 | 0.0810 | 78.70 |
| 16 | 7.08 | 0.659 | 0.0922 | 81.98 |
aishell4_long 长序列 ASR:
| 并发数 | 吞吐量 (req/s) | 平均延迟 (s) | 平均 RTF | audio_s/s |
|---|---|---|---|---|
| 1 | 0.022 | 45.2 | 0.0197 | 50.64 |
| 2 | 0.032 | 60.7 | 0.0265 | 74.25 |
| 4 | 0.036 | 105.6 | 0.0461 | 81.64 |
| 8 | 0.040 | 172.6 | 0.0754 | 90.62 |
| 16 | 0.043 | 282.8 | 0.1237 | 98.83 |
字幕 Web 应用
该软件包还包含一个本地字幕工作流,用于上传、审阅、字幕导出,以及可选的 FFmpeg 烧录:
mtd-subtitle-web \
--model OpenMOSS-Team/MOSS-Transcribe-Diarize \
--host 127.0.0.1 \
--port 7860
打开 http://127.0.0.1:7860,上传音频/视频文件,审阅解析后的字幕片段,然后下载 JSON/SRT/ASS 格式,或者如果 ffmpeg 和 ffprobe 在 PATH 中,则烧录 MP4。
对于批量处理:
mtd-subtitle /path/to/input.mp4 \
--model OpenMOSS-Team/MOSS-Transcribe-Diarize \
--out-dir runs/example \
--render
引用
如果您使用了 MOSS-Transcribe-Diarize,请引用技术报告:
@misc{moss_transcribe_diarize_2026,
title={MOSS Transcribe Diarize Technical Report},
author={{MOSI.AI}},
year={2026},
eprint={2601.01554},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2601.01554}
}
Star 历史
相似文章
@Open_MOSS: MOSS-Transcribe-Diarize 在 @huggingface 上跻身热门模型之列。发布数周后,该模型已…
MOSS-Transcribe-Diarize 是一款具备多说话人分离和热词偏置功能的开源ASR模型,发布后在Hugging Face上走红。
@MosiAI_Official: MOSS-TTS Local Transformer v1.5 现已推出。克隆任意声音。说任何语言。听到每一个细节。30多种语言,48 kHz …
MosiAI发布了MOSS-TTS Local Transformer v1.5,这是一款支持语音克隆、30多种语言以及48 kHz高质量输出的文本转语音模型。
@MosiAI_Official: MOSS-TTS-v1.5 刚刚以 20.6K 下载量登上 Hugging Face 热门排行榜的 Text-to-Speech 分类第一。一个多语言、可控…
MOSS-TTS-v1.5 是一个多语言可控 TTS 模型,支持语音克隆和长文本生成,以 20.6K 下载量登上 Hugging Face 热门排行榜第一名。
OpenMOSS-Team/MOSS-TTS-v1.5 · Hugging Face
MOSS-TTS v1.5是一个更新的开源文本转语音模型,具有改进的多语言合成(支持31种语言)、更稳定的零样本语音克隆以及显式的内联停顿控制。
OpenMOSS-Team/MOSS-TTS-Nano-100M
MOSS-TTS-Nano是一个开源的多语言语音生成模型,仅0.1B参数,专为实时TTS设计,可直接在CPU上运行而无需GPU。由OpenMOSS团队和MOSI.AI发布,它支持简单的本地部署,用于Web服务和产品集成。