news 2026/9/16 18:19:56

pyannote.audio 实战入门:10 分钟安装并跑通说话人日志

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pyannote.audio 实战入门:10 分钟安装并跑通说话人日志

pyannote.audio 实战入门:10 分钟安装并跑通说话人日志

【免费下载链接】pyannote-audioNeural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding项目地址: https://gitcode.com/GitHub_Trending/py/pyannote-audio

pyannote.audio是一个基于 PyTorch 的开源说话人日志(Speaker Diarization)工具包,它回答"录音里谁在什么时候说话"这个问题。它自带开箱即用的预训练管道,你可以直接在本地运行,也可以用自己的数据继续微调以获得更好的效果。

能力速览

你最常用到的四项能力:

  • 开箱即用的预训练管道:一行代码加载speaker-diarization-community-1,不用训练、不用调参,直接出说话人分割结果。
  • 社区版 / 高级版双档位:社区版完全本地运行;高级版precision-2错误率更低、速度快约 2.2 倍,一行代码即可切换。
  • Python 优先的 APIPipeline对象可直接调用,说话人数等可选参数随调用传入,方便嵌入你自己的应用。
  • 可持续微调:预训练模型支持基于 PyTorch Lightning 的多 GPU 训练,能适配你自己的领域数据。

环境准备与安装

把这 4 项准备好、装完包,你就具备跑通第一个示例的全部条件。

项目要求说明
Python≥ 3.10项目硬性要求
ffmpeg已安装torchcodec 音频解码库依赖它
CUDA可选有 NVIDIA GPU 时加速推理和训练
Hugging Face token需要创建用于下载模型并同意社区版用户条件
uv add pyannote.audio # 主推 pip install pyannote.audio # 备选

装完后在终端执行python -c "import pyannote.audio; print(pyannote.audio.__version__)",能打印出版本号就说明安装成功。

使用社区版前还要做两件事:在 Hugging Face 上同意pyannote/speaker-diarization-community-1的用户条件,并创建一个个人访问令牌。

在模型页面点 Files 标签页就能看到config.yaml(管道的配置文件),模型权重会在首次运行时自动下载。

跑通第一个示例

用下面这段代码加载社区版管道,对一个 wav 文件跑完说话人日志,并打印每段语音的起止时间和说话人标签。把audio.wav换成你自己的文件即可;手头没有音频的话,可以先用仓库里的示例文件tests/data/tst00.wav

import torch from pyannote.audio import Pipeline pipeline = Pipeline.from_pretrained( "pyannote/speaker-diarization-community-1", token="<你的TOKEN>") pipeline.to(torch.device("cuda")) # 送显卡,没有 GPU 就删掉这行 output = pipeline("audio.wav") # 在本地运行 for turn, speaker in output.speaker_diarization: print(f"{turn.start:.1f}s-{turn.end:.1f}s {speaker}")

输出长这样:

0.2s-1.5s speaker_0 1.8s-3.9s speaker_1 4.2s-5.7s speaker_0

每一行是一段连续的语音:开始时间、结束时间、说话人标签。相同标签代表同一个人,这正是说话人日志的完整输出。

场景化用法

下面两个场景都基于上一节的pipeline对象,按需取用。

已知说话人数:用 num_speakers 固定

会议录音这种场景,参与人数往往提前可知。把人数直接告诉管道,聚类会更稳,能明显减少"把一个人拆成两个标签"的错误。

output = pipeline("meeting.wav", num_speakers=4) # 或者给一个范围,让管道在区间内自行判断 output = pipeline("meeting.wav", min_speakers=2, max_speakers=10)
参数取值作用
num_speakersint固定说话人数,人数确定时准确度最高
min_speakers/max_speakersint给出人数下限 / 上限,仅在不传num_speakers时生效

对会议、访谈、播客这类人数固定的内容,固定人数意味着你可以把"多估计一个说话人"这类错误基本消除。

追求更高准确率:切换到高级版 precision-2

当你想要更低的错误率、又不想自己占 GPU 时,把Pipeline.from_pretrained的第一个参数换成pyannote/speaker-diarization-precision-2,token 换成 pyannoteAI 的 API key(新账号有免费额度)。调用会在 pyannoteAI 服务器上运行,返回的说话人标签形如SPEAKER_00SPEAKER_01

项目说明
token 来源pyannoteAI API key
运行位置pyannoteAI 服务器,不占用本地算力
速度收益AMI 约 1 小时长录音上比社区版快 2.2 倍,短录音快 2.6 倍

其余调用代码完全不变,pipeline("audio.wav")返回同样的speaker_diarization结构,你可以拿同一段音频对比两个版本的准确率再决定长期用哪个。

效果验证

选版本前,先看两档的真实说话人日志错误率(Diarization Error Rate,% 越低越好,官方 benchmark 数据更新于 2025-09):

数据集community-1precision-2
AISHELL-411.711.4
AMI (IHM)17.012.9
DIHARD 320.214.7
VoxConverse11.28.5

结论很直接:干净录音上两者接近,但在会议、电话等复杂数据(AMI、DIHARD 3)上高级版领先 4~5 个百分点——你的数据越嘈杂,越值得用高级版。

可选配置速查

想调整遥测(匿名使用指标)行为,只需要下面三处之一,全部列在表里:

配置项取值作用
环境变量PYANNOTE_METRICS_ENABLED1/0启用 / 禁用匿名遥测
set_telemetry_metrics(True / False)bool仅当前 Python 会话生效
set_telemetry_metrics(..., save_choice_as_default=True)bool全局持久生效,跨会话保留

遥测只记录模型名称、音频时长这类无法识别个人身份的信息;默认是开启的,不想参与就把环境变量设为0

项目地图与下一步

想深入源码或教程,从这几个位置入手:

  • src/pyannote/audio/pipelines/:说话人日志、语音活动检测等管道实现
  • src/pyannote/audio/models/:分割、说话人嵌入等模型定义
  • tutorials/:应用预训练管道、用自有数据微调等官方 notebook
  • FAQ.md:常见问题汇总

到这里你已经能对一个音频文件产出完整的说话人日志结果;下一步建议打开tutorials/adapting_pretrained_pipeline.ipynb,把社区版管道微调到你自己的标注数据上,进一步压低错误率。

【免费下载链接】pyannote-audioNeural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding项目地址: https://gitcode.com/GitHub_Trending/py/pyannote-audio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 18:19:22

星际争霸AI开发入门:BWAPI 4.4.0配置与ualbertabot编译运行全攻略

这几年看AI打《星际争霸》的视频&#xff0c;总觉得隔着层纱。直到我自己动手&#xff0c;把 BWAPI 4.4.0 和 ualbertabot 这套环境跑通&#xff0c;让电脑自己打了一局“人机对战”&#xff0c;才算真正明白那些 Bot 是怎么“想”的。这篇笔记就是我的 BWAI 学习记录第 001 篇…

作者头像 李华
网站建设 2026/9/16 18:18:36

STM32F407老人健康监测系统:心率跌倒检测与嵌入式医疗级设计

简介&#xff1a;本资源是一套面向嵌入式开发初学者与老年健康设备项目实践者的完整智能硬件方案&#xff0c;聚焦于STM32F4平台的老人健康监测智能手表设计&#xff0c;解决跌倒预警、生命体征实时采集与远程监护等实际需求&#xff0c;适用于课程设计、毕业设计及IoT健康终端…

作者头像 李华
网站建设 2026/9/16 18:18:07

RH850定时器中断实战:从TAU配置到GHS链接脚本全解析

简介&#xff1a;面向瑞萨RH850/F1K汽车级32位MCU开发者的定时器中断基础例程&#xff0c;集中演示定时器外设的初始化流程、中断服务程序挂载方式与中断向量表配置方法&#xff0c;覆盖从底层寄存器操作到GHS工程构建的关键环节&#xff0c;适合嵌入式工程师及单片机学习者快速…

作者头像 李华
网站建设 2026/9/16 18:16:20

STM32F103R6数字电压表:ADC双通道采样与数码管动态扫描时序协同设计

简介&#xff1a;本资源是一套基于Proteus与Keil MDK联合仿真的STM32F103R6数字电压表完整工程&#xff0c;面向嵌入式初学者及课程设计实践者&#xff0c;解决两路模拟电压采集、AD转换与数码管实时显示的核心教学需求。压缩包含599个文件&#xff0c;以337个C源码和106个头文…

作者头像 李华
网站建设 2026/9/16 18:16:01

NPUCTF2020 Web题刷题复盘:PHP代码审计与SQL注入过滤绕过实战

NPUCTF2020是前几年打得比较火的一场CTF&#xff0c;Web方向的题目数量不算多&#xff0c;但质量在入门到进阶的区间里卡得很准。我刷这套题的时候正好在补PHP代码审计和手工注入的基础&#xff0c;一轮下来收获最大的不是某一道题的flag&#xff0c;而是把几个高频绕过点串成了…

作者头像 李华
网站建设 2026/9/16 18:14:23

Pentagi:基于Docker+Neo4j+AI Agent的渗透测试智能工作流架构

1. “Pentagi”不是产品名&#xff0c;而是渗透测试AI代理架构的代号级命名最近在几个红队技术群和开源安全项目讨论区里&#xff0c;频繁看到“pentagi”这个词被当作一个技术代号使用——它既不是官方发布的软件包名&#xff0c;也不是PyPI或Docker Hub上可直接pull的镜像标签…

作者头像 李华