whisper-diarization

GitHub
5.5k 500 中等 1 次阅读 昨天BSD-2-Clause音频
AI 解读 由 AI 自动生成,仅供参考

whisper-diarization 是一款基于 OpenAI Whisper 构建的开源工具,专注于解决语音识别中的“说话人分离”难题。在多人对话场景中,传统的语音转文字工具往往只能输出纯文本,无法区分具体是谁在说话。whisper-diarization 通过整合语音活动检测(VAD)和说话人嵌入技术,能够自动识别并标记转录文本中每一句话对应的发言者,生成带有说话人标签的精准对话记录。

该工具的独特之处在于其严谨的多阶段处理流程:它首先提取人声以提升特征准确性,利用 Whisper 生成初始转录,随后借助 ctc-forced-aligner 对时间戳进行强制对齐以消除误差。接着,它调用 MarbleNet 模型剔除静音片段,并使用 TitaNet 提取说话人特征向量,最后结合标点符号模型进行微调,确保说话人身份与时间轴的高度匹配。

这款工具非常适合需要处理会议记录、访谈录音、播客或多角色影视素材的开发者、研究人员及数据分析师使用。对于希望从音频数据中挖掘更深层对话结构,或需要自动化生成带角色区分字幕的用户来说,whisper-diarization 提供了一个高效且可靠的解决方案。只需简单的 Python 环境配置,即可将复杂的音频流转化为结构清晰的对话文本。

使用场景

某法律科技团队正在处理数百小时的多方庭审录音,需要将其转化为可检索、可引用的结构化文字档案。

没有 whisper-diarization 时

  • 说话人混淆:原始转录文本将所有法官、律师和证人的发言混在一起,阅读时无法区分谁在说话,必须人工反复听音辨认。
  • 校对成本极高:由于缺乏时间戳对齐,人工整理一份 1 小时的录音需耗时 3-4 小时进行分段和标注,效率极低。
  • 关键信息遗漏:在多人同时插话或快速对话的场景下,传统工具容易漏掉短句,导致关键证词缺失。
  • 检索困难:无法通过“查找某位特定律师的发言”来快速定位内容,只能全文盲搜,准确率低下。

使用 whisper-diarization 后

  • 自动角色分离:利用 TitaNet 提取声纹特征,系统自动将文本标记为“说话人 A(法官)”、“说话人 B(原告律师)”,清晰还原对话现场。
  • 精准时间对齐:结合 ctc-forced-aligner 修正时间戳,确保每句话甚至每个单词都精确对应音频位置,校对时间缩短至 30 分钟以内。
  • 静音智能过滤:内置 MarbleNet 进行语音活动检测(VAD),自动剔除长时间静音和背景噪音,只保留有效人声片段。
  • 结构化数据输出:生成的日志直接包含说话人 ID 和时间段,支持按人物索引快速跳转,极大提升了案情复盘效率。

whisper-diarization 通过将高精度的语音识别与声纹分离技术深度融合,把原本繁琐的人工听写工作转变为自动化、结构化的数据生产流程。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

非绝对必需(默认使用 CUDA,若无则可能回退),推荐显存 >=10GB 以运行并行模式 (diarize_parallel.py)

内存

未说明

依赖
notes安装前必须预先安装 FFmpeg 和 Cython。若显存大于等于 10GB,可使用实验性的 diarize_parallel.py 脚本并行运行 NeMo 和 Whisper 以提升效率。该工具集成了语音活动检测 (VAD) 和说话人嵌入技术,并依赖 ctc-forced-aligner 进行时间戳校正。
python>=3.10 (3.9 需手动安装依赖)
ffmpeg
cython
openai-whisper
nvidia-nemo
demucs
ctc-forced-aligner
whisper-diarization hero image

快速开始

基于 OpenAI Whisper 的说话人分离

FreePalestine.Dev

构建状态 GitHub 星标 GitHub 问题 GitHub 许可证 Twitter 在 Colab 中打开

MahmoudAshraf97%2Fwhisper-diarization | 今日第9大仓库

基于 OpenAI Whisper 的说话人分离流水线

drawing 如果您欣赏我对社区的贡献,请在 GitHub 上为该项目点赞(见右上角)!

是什么

该仓库将 Whisper ASR 功能与语音活动检测 (VAD) 和说话人嵌入相结合,以识别 Whisper 生成的转录中每句话的说话人。首先从音频中提取人声,以提高说话人嵌入的准确性;然后使用 Whisper 生成转录;接着利用 ctc-forced-aligner 校正并对齐时间戳,从而减少因时间偏移导致的分离错误。随后,音频被送入 MarbleNet 进行 VAD 和分段处理,以排除静音部分;再使用 TitaNet 提取说话人嵌入,识别每个片段的说话人;最后将结果与 ctc-forced-aligner 生成的时间戳关联,根据时间戳检测每个词的说话人,并通过标点符号模型重新对齐,以补偿细微的时间偏移。

Whisper 和 NeMo 的参数已编码到 diarize.pyhelpers.py 中,后续我会添加 CLI 参数以便修改这些设置。

安装

需要 Python >= 3.10,虽然 3.9 也能运行,但您需要手动逐个安装依赖项。

安装依赖项前需先安装 FFMPEGCython

pip install cython

sudo apt update && sudo apt install cython3
# 在 Ubuntu 或 Debian 上
sudo apt update && sudo apt install ffmpeg

# 在 Arch Linux 上
sudo pacman -S ffmpeg

# 在 MacOS 上使用 Homebrew (https://brew.sh/)
brew install ffmpeg

# 在 Windows 上使用 Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# 在 Windows 上使用 Scoop (https://scoop.sh/)
scoop install ffmpeg

# 在 Windows 上使用 WinGet (https://github.com/microsoft/winget-cli)
winget install ffmpeg
pip install -c constraints.txt -r requirements.txt

使用方法

python diarize.py -a AUDIO_FILE_NAME

如果您的系统拥有足够的显存(>=10GB),可以改用 diarize_parallel.py,其区别在于它会并行运行 NeMo 和 Whisper。在某些情况下,这种方式可能更有优势,且由于两个模型相互独立,最终结果相同。不过目前这仍处于实验阶段,可能会存在一些问题和不足之处,欢迎提出您的反馈意见。

命令行选项

  • -a AUDIO_FILE_NAME: 待处理的音频文件名
  • --no-stem: 禁用音源分离
  • --whisper-model: 用于 ASR 的模型,默认为 medium.en
  • --suppress_numerals: 将数字转写为其发音字母而非数字形式,有助于提高对齐精度
  • --device: 指定使用的设备,默认为“cuda”(如可用)
  • --language: 手动选择语言,适用于语言检测失败的情况
  • --batch-size: 批量推理时的批次大小,若内存不足可调小,设为 0 则进行非批量推理

已知限制

  • 对于重叠说话的情况尚未解决。一种可能的方法是将音频文件分离,只保留一位说话人的部分,再将其输入到流程中,但这需要更多的计算资源。
  • 可能会出现一些错误,如有遇到请提交问题。

未来改进方向

  • 实现 SRT 文件中每句话的最大长度限制。

致谢

特别感谢 @adamjonas 对本项目的大力支持。 本工作基于 OpenAI's WhisperFaster WhisperNvidia NeMo 以及 Facebook's Demucs

引用

如果您在研究中使用了本项目,请引用如下:

@unpublished{hassouna2024whisperdiarization,
  title={Whisper Diarization: 基于 OpenAI Whisper 的说话人分离},
  author={Ashraf, Mahmoud},
  year={2024}
}

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

TTS

🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。

45k|★★★☆☆|2天前
音频开发框架图像

LocalAI

LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获

44.8k|★★★☆☆|3天前
图像音频语言模型

bark

Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。

39.1k|★★★☆☆|2天前
音频

airi

airi 是一款开源的本地化 AI 伴侣项目,旨在将虚拟角色(如“二次元老婆”或赛博生命)带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力,让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。 airi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手,airi 允许用户在本地运行,不仅保护了对话隐私,还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天,甚至能直接参与《我的世界》(Minecraft)和《异星工厂》(Factorio)等游戏,实现了从单纯对话到共同娱乐的跨越。 这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者,以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持(涵盖 Web、macOS 和 Windows)以及强大的游戏交互能力,让 AI 不仅能“说”,还能“玩”。通过容器化的灵魂设计,airi 为每个人创造专属数字生命提供了可能,让虚拟陪伴变得更加真实且触手可及。

37.1k|★☆☆☆☆|今天
语言模型音频Agent

MockingBird

MockingBird 是一款开源的实时语音克隆工具,旨在让用户仅需 5 秒的参考音频,即可快速合成任意内容的语音,并实现逼真的音色复刻。它有效解决了传统语音合成技术中数据采集成本高、训练周期长以及难以实时生成的痛点,让个性化语音生成变得触手可及。 这款工具特别适合开发者、AI 研究人员以及对语音技术感兴趣的技术爱好者使用。无论是用于构建交互式语音应用、进行声学模型研究,还是制作创意内容,MockingBird 都能提供强大的支持。普通用户若具备基础的编程环境配置能力,也可通过其提供的 Web 服务或工具箱体验前沿的变声效果。 在技术亮点方面,MockingBird 基于 PyTorch 框架,不仅完美支持中文普通话及多种主流数据集,还实现了跨平台运行,兼容 Windows、Linux 乃至 M1 架构的 macOS。其独特的架构设计允许复用预训练的编码器与声码器,只需微调合成器即可获得出色效果,大幅降低了部署门槛。此外,项目内置了现成的 Web 服务器功能,方便用户通过远程调用快速集成到自己的应用中。尽管原作者已转向云端优化版本,但 MockingBird 作为经典的本地部署方案

36.9k|★★★★☆|3天前
Agent音频图像