返回 2026-04-29
🤖 AI / ML

微软开源 VibeVoice:带说话人分离的语音转文本模型microsoft/VibeVoice

simonwillison.net·2026-04-27

微软发布 MIT 许可的开源音频模型 VibeVoice,基于 Whisper 架构实现高精度语音转文本,并内置说话人分离(speaker diarization)功能。模型大小为 5.71GB,可通过 uv + mlx-audio 在 macOS 上快速运行。该项目展示了微软在语音 AI 领域的开放态度和技术实力。

Simon Willison

microsoft/VibeVoice。VibeVoice 是微软开发的类 Whisper 语音转文本音频模型,采用 MIT 许可协议,并内置说话人分离功能。

微软于2026年1月21日发布该模型,但直到今天我才尝试使用。以下是在 Mac 上使用 uv、mlx-audio(由 Prince Canuma 开发)以及 5.71GB 的 mlx-community/VibeVoice-ASR-4bit MLX 转换版本(基于 17.3GB 的原始 VibeVoice-ASR 模型)运行的一行命令,用于转录我最近一次与 Lenny Rachitsky 共同参与的播客录音:

uv run --with mlx-audio mlx_audio.stt.generate \
  --model mlx-community/VibeVoice-ASR-4bit \
  --audio lenny.mp3 --output-path lenny \
  --format json --verbose --max-tokens 32768

工具返回结果如下:

Processing time: 524.79 seconds
Prompt: 26615 tokens, 50.718 tokens-per-sec
Generation: 20248 tokens, 38.585 tokens-per-sec
Peak memory: 30.44 GB

因此,在一小时音频的转录任务中,耗时 8 分 45 秒(在配备 128GB 内存的 M5 Max MacBook Pro 上运行)。

我已测试过 .wav 和 .mp3 格式的文件,两者均能正常工作。

若省略 --max-tokens 参数,默认值为 8192,可处理约 25 分钟的音频内容。我通过反复试验发现这一点,并将该值提升至四倍以确保完整转录一小时的内容。

该命令运行时峰值占用 30.44GB RAM,但在活动监视器中观察到预填充阶段使用了 61.5GB 内存,生成阶段则约为 18GB。

以下是生成的 JSON 文件内容,其关键结构如下所示:

{
  "text": "And an open question for me is how many other knowledge work fields are actually prone to these agent loops?",
  "start": 13.85,
  "end": 19.5,
  "duration": 5.65,
  "speaker_id": 0
},
{
  "text": "Now that we have this power, people almost underestimate what they can do with it.",
  "start": 19.5,
  "end": 22.78,
  "duration": 3.280000000000001,
  "speaker_id": 1
},
{
  "text": "Today, probably 95% of the code that I produce, I didn't type it myself. I write so much of my code on my phone. It's wild.",
  "start": 22.78,
  "end": 30.0,
  "duration": 7.219999999999999,
  "speaker_id": 0
}

由于这是一个对象数组,我们可以将其导入 Datasette Lite 以便更轻松地浏览数据。

有趣的是,Datasette Lite 视图显示共有三位说话人——系统识别出了对话中的我和 Lenny,另外还有一个独立的“Lenny”对应额外片头及赞助商旁白部分!

VibeVoice 最多只能处理一小时的音频,因此上述命令仅转录了播客的前一小时内容。如需转录更长的音频,需先将其分割为多个片段,理想情况下每段之间保留约一分钟重叠部分,以避免因单词未完全转录而导致的错误;同时还需要将各片段中识别出的说话人 ID 进行对齐处理。

需要完整排版与评论请前往来源站点阅读。