
大家好,我是 Ai 学习的老章
最近语音识别也很热闹
阿里开源语音识别王炸,支持 52 种语言和方言,吊打 Whisper!
刚使用了一下微软开源的语音识别(ASR)模型——# VibeVoice
这是去年我的一个视频,里面有背景音和英文专业名词,识别效果还行,只是有些容易弄混的地方听错了,比如亿级转录成1级,不过这类错误估计其他模型也很难hold住。更妙的是,它可以识别时间,看官方演示音频,它还能识别不同的说话者

用过 Whisper 的朋友都知道,虽然它很强,但处理长音频一直是个痛点。Whisper 本质上是把音频切成 30 秒的小片段来处理的,这就导致了一个问题:上下文断裂。前一段的人名,后一段可能就识别错了;而且它原生并不支持说话人识别(Diarization),想知道“谁在说话”,还得挂一个 pyannote.audio 之类的外部模型,慢且麻烦。
微软刚刚开源的 VibeVoice-ASR,最大的突破在于:单次处理 60 分钟长音频。它拥有全局上下文,不仅识别更准,还能完美保持长距离的语义连贯性。
更绝的是,它把 ASR(语音转文字)、Diarization(说话人识别)、Timestamping(打时间戳) 三合一了。输出结果直接告诉你:谁(Who)、在什么时候(When)、说了什么(What)。
这是架构图,一看就懂:

VibeVoice ASR Architecture
核心功能与特点:

官方推荐使用 Docker,尤其是 NVIDIA 的容器环境,省去配环境的烦恼。
# 1. 启动 Docker 容器 (推荐 NVIDIA PyTorch 容器)
sudo docker run --privileged --net=host --ipc=host --ulimit memlock=-1:-1 --ulimit stack=-1:-1 --gpus all --rm -it nvcr.io/nvidia/pytorch:25.12-py3
# 2. 从 GitHub 克隆并安装
git clone https://github.com/microsoft/VibeVoice.git
cd VibeVoice
pip install -e .
如果你是本地 Python 环境,直接 pip install -e . 也可以,但要注意 flash-attn 的安装可能会有点折腾。
安装好后,可以直接用脚本跑文件:
python demo/vibevoice_asr_inference_from_file.py \
--model_path microsoft/VibeVoice-ASR \
--audio_files /path/to/your/audio.wav
想可视化体验?一行命令启动 Web UI:
# 只要装了 ffmpeg 就能跑
python demo/vibevoice_asr_gradio_demo.py --model_path microsoft/VibeVoice-ASR --share
这货最牛的地方是,微软官方直接提供了 vLLM 的支持文档。这意味着你可以把它部署成一个 OpenAI 兼容的 API 服务,并发吞吐量直接起飞。
# 使用 vLLM 部署为 API 服务
docker run -d --gpus all --name vibevoice-vllm \
-p 8000:8000 \
-v $(pwd):/app \
vllm/vllm-openai:latest \
-c "python3 /app/vllm_plugin/scripts/start_server.py"
启动后,你就可以像调用 GPT-4 一样调用它来做语音识别,还支持流式输出!
这是我整理的一些常见报错和填坑姿势,部署前必看:
--gpu-memory-utilization 或者减少 --max-num-seqs(并发数)。--max-model-len 来省显存。ffmpeg -version 确认一下。config.json 和权重文件。pip show vibevoice。虽然 VibeVoice 的零样本能力已经很强,但如果你是在医疗、法律或者某些垂直领域使用,通用模型肯定会有识别不准的术语。这时候 LoRA 微调 就派上用场了。
微软官方提供了完整的微调脚本,支持单卡和多卡训练。
数据格式:
你需要准备音频文件(mp3/wav)和对应的 JSON 标注文件。JSON 里除了文本和时间戳,最棒的是可以加入 customized_context(自定义上下文),让模型专门“背诵”这些领域术语。
{
"audio_path": "0.mp3",
"segments": [ ... ],
"customized_context": ["术语1", "术语2", "这是一句包含了特定背景的句子。"]
}
启动微调:
# 单卡 LoRA 微调示例
torchrun --nproc_per_node=1 lora_finetune.py \
--model_path microsoft/VibeVoice-ASR \
--data_dir ./your_dataset \
--output_dir ./output \
--lora_r 16 \
--learning_rate 1e-4 \
--bf16
训完之后,还可以用脚本把 LoRA 权重合并回基座模型,这样推理速度完全不受影响。
我看了一下官方给出的评测数据,在 MLC-Challenge 数据集上,VibeVoice-ASR 的表现相当亮眼。

DER Performance
特别是在 DER(说话人区分错误率) 上,很多语言都降到了极低的水平。比如越南语居然只有 0.16,日语 0.82。中文在 AISHELL-4 这种复杂场景下也有不错的表现。
对比传统的“拼接式”长音频方案,VibeVoice 这种 End-to-End 的长上下文模型,在处理多人会议、甚至是那类喜欢抢话的播客节目时,优势太明显了。它能记住“30分钟前是这个人在说话”,从而保持说话人 ID 的一致性。
微软这次开源的 VibeVoice-ASR,精准地切中了大模型时代语音识别的几个痛点:长音频、说话人区分、特定词汇纠正。
制作不易,如果这篇文章觉得对你有用,可否点个关注。给我个三连击:点赞、转发和在看。若可以再给我加个🌟,谢谢你看我的文章,我们下篇再见!