如何用 Whisper Diarization 三步从一段录音中拿到带说话人标签的转录稿
【免费下载链接】whisper-diarizationAutomatic Speech Recognition with Speaker Diarization based on OpenAI Whisper项目地址: https://gitcode.com/GitHub_Trending/wh/whisper-diarization
Whisper Diarization 是基于 OpenAI Whisper 的自动语音识别工具:它一次完成说话人分离与文字转写,输出带说话人标签的转录稿和标准 SRT 字幕文件。适合需要把会议录音、访谈、播客快速变成可检索文本的人。
🔊 一段录音不好翻,怎么知道谁说了什么
会议结束,留下一段两小时的录音。想查“这句话是谁说的”,只能把整段音频从头听到尾。就算转成了文字,没有说话人标签,文稿还是一大团,谁都不想看。
🚀 三条命令跑通:从克隆到出稿
先备好三样东西:Python 3.10+、FFmpeg、Cython。然后在项目目录里依次运行:
git clone https://gitcode.com/GitHub_Trending/wh/whisper-diarizationpip install -c constraints.txt -r requirements.txtpython diarize.py -a 你的音频文件.mp3跑完,带说话人标签的转录稿就出来了。
它是怎么做到的:四级流水线
先单独拎出人声
处理前先用 Demucs 把原音频里的人声轨分离出来,减少背景音乐和噪声对说话人识别的干扰。如果音频本身是纯人声,加--no-stem可跳过这一步,处理逻辑在 diarize.py 里。
用 Whisper 转写并逐词对齐
用 faster-whisper 做转写,默认模型medium.en。同时用 ctc-forced-aligner 做强制对齐,给每个词标出精确的起止时间戳,这是后面把词对到说话人名下的基础。
把每个词归给对的人
默认的 MSDD 模型给出每个说话人的活动时间段,也可以用--diarizer sortformer换成 Sortformer(上限 4 人)。流水线再按词的时间戳逐个匹配到对应说话人,模型在 diarization/ 目录中。
恢复标点修正句界
对英语、法语等受支持的语言,用标点恢复模型补回句末标点,再按句子重新对齐说话人归属,修正句首句尾的时间戳漂移。匹配逻辑见 helpers.py。
🎯 三个真实用法:纪要、字幕、并行加速
会议录音转带标签纪要
输入是会议录音。运行python diarize.py -a 会议.mp3,得到逐段标注 Speaker 0、1、2 的 .txt 文稿,外加一份对应的 .srt。
播客转视频直接可用的字幕
输入是播客音频,命令同上。得到的 .srt 每条都是“Speaker X:文字”格式并带时间码,可直接导入剪辑软件出字幕。
显存 10GB 以上的 GPU 走并行
运行python diarize_parallel.py -a 你的音频.mp3。它让 NeMo 与 Whisper 各占一个进程同时跑,结果与串行版一致,速度更快;作者标注该模式为实验特性。
常用参数怎么调
| 参数 | 作用 | 建议值 |
|---|---|---|
-a | 要处理的音频文件(必填) | 你的文件路径 |
--whisper-model | Whisper 转写模型 | medium.en(默认);非英语换对应多语言版本 |
--batch-size | 批量推理大小 | 默认 8;显存不足就调小,0 为关闭批量 |
--diarizer | 说话人分离模型 | msdd(默认,人数不限);sortformer限 4 人以内 |
--language | 手动指定语言 | 留空自动检测;检测失败时手动填 |
调优建议:出现显存不足先降--batch-size,再考虑--device cpu;文稿里数字很多就加--suppress_numerals,数字会转成文字形式,对齐更准。
📄 跑完你会得到哪两个文件
xxx.txt:分段的转录文稿,每段开头标注说话人标签。xxx.srt:标准 SRT 字幕文件,每条含时间码与说话人。- 运行中的临时文件(temp_outputs_*)结束后自动删除。
🔧 三个最常见的报错及对策
运行中显存不足(OOM)原因:批量太大或显存不够。对策:调小--batch-size(可到 0),或换更小的--whisper-model。
语言识别错、转写乱码原因:自动检测失败,或给仅支持英语的.en模型指定了其他语言。对策:手动指定--language;.en模型只处理英语音频。
说话人切换处错标、文稿数字多原因:数字符号干扰强制对齐,时间戳有轻微漂移。对策:加--suppress_numerals重跑。
谁该用,深入看哪里
需要把录音批量变成可检索文本的会议记录、字幕制作、客服分析场景,选它合适。想理解分离模型看 diarization/,想改说话人映射和字幕输出逻辑看 helpers.py。项目目前也在推进重叠说话处理与 SRT 句长限制两个方向。
现在就可以拿一段自己的音频,把那条命令跑起来。
【免费下载链接】whisper-diarizationAutomatic Speech Recognition with Speaker Diarization based on OpenAI Whisper项目地址: https://gitcode.com/GitHub_Trending/wh/whisper-diarization
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考