SenseVoice 部署指南:比 Whisper 快 15 倍的多语言语音识别
SenseVoice 是 FunAudioLLM 团队开源的多语言语音理解大模型。它不仅做语音识别(ASR),还能在一次前向推理中同时输出语种识别、情感识别、音频事件检测。模型采用非自回归结构,推理速度比 Whisper-Large 快约 15 倍,单条 10 秒音频的识别延迟可低至几十毫秒,非常适合工业级实时与批量场景。
本文用可直接复制运行的代码,带你 3 步把 SenseVoice 跑起来。
1. 安装
SenseVoice 通过 funasr 包提供,一行安装:
pip install -U funasr torch torchaudio
2. 三行代码跑通识别
下面的代码会自动下载 SenseVoiceSmall 模型并完成识别:
from funasr import AutoModel from funasr.utils.postprocess_utils import rich_transcription_postprocess model = AutoModel(model="iic/SenseVoiceSmall", device="cuda:0") # CPU 用 device="cpu" res = model.generate(input="audio.wav", language="auto", use_itn=True) print(rich_transcription_postprocess(res[0]["text"]))
模型 ID:ModelScope 为 iic/SenseVoiceSmall,HuggingFace 为 FunAudioLLM/SenseVoiceSmall。use_itn=True 表示输出带标点和逆文本归一化(数字、日期规整)。
3. 读懂输出:语种 + 情感 + 音频事件
SenseVoice 的原始输出带有富文本标签,例如:
<|zh|><|NEUTRAL|><|Speech|><|withitn|>欢迎大家来体验达摩院推出的语音识别模型。
<|zh|>:语种(zh 中文、en 英文、yue 粤语、ja 日语、ko 韩语)<|NEUTRAL|>:情感(HAPPY / SAD / ANGRY / NEUTRAL 等)<|Speech|>:音频事件(Speech / BGM / Applause / Laughter 等)
用 rich_transcription_postprocess() 可一键得到干净文本;如果你想保留这些标签做下游分析,直接读取 res[0]["text"] 即可。
4. 长音频:加 VAD 自动分段
处理几分钟以上的长音频时,搭配 FSMN-VAD 做语音端点检测、自动分段,效果与速度都更好:
model = AutoModel(
model="iic/SenseVoiceSmall",
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cuda:0",
)
res = model.generate(input="long_audio.wav", language="auto", use_itn=True, batch_size_s=60)
5. GPU 与 CPU 怎么选
| 场景 | 建议 |
|---|---|
| 高并发 / 批量转写 | GPU(device="cuda:0"),吞吐最高 |
| 轻量 / 边缘 / 离线 | CPU(device="cpu");SenseVoice 非自回归,CPU 上也很快 |
| 生产服务 | FunASR runtime(C++ / Docker 一键部署,多并发) |
6. 性能一览
| 维度 | SenseVoice-Small |
|---|---|
| 相对 Whisper-Large 速度 | 约 15× |
| 支持语言 | 中文 / 粤语 / 英文 / 日文 / 韩文 等 |
| 附加能力 | 语种识别 · 情感识别 · 音频事件检测 |
| 架构 | 非自回归(低延迟) |
| 许可证 | 开源(可商用) |
延伸阅读:FunASR vs Whisper 对比 · FunASR 快速上手 · 全部模型