尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

WhisperX 完整指南:自动语音识别 + 说话人分离,把录音变成“谁在何时说了什么“

WhisperX 完整指南:自动语音识别 + 说话人分离,把录音变成“谁在何时说了什么“ WhisperX 完整指南自动语音识别 说话人分离把录音变成谁在何时说了什么【免费下载链接】whisperXWhisperX: Automatic Speech Recognition with Word-level Timestamps ( Diarization)项目地址: https://gitcode.com/gh_mirrors/wh/whisperX如果你手里攒着一堆会议录音、访谈音频或者播客节目WhisperX 大概是最值得一试的免费开源工具它能把一段混合多人声音的音频一次性变成带时间轴、带说话人标签的完整文字稿。这份完整指南面向零基础读者从环境搭建、第一次运行到调参优化、批量提速全程手把手带你把 WhisperX 跑通、用好。读完本文你将学会分清 WhisperX 的三大能力语音识别、单词级时间戳、说话人分离从零安装并运行第一条命令看懂它生成的各类输出文件识别不准、说话人张冠李戴时的排查与调参思路处理长音频、低配置电脑时的提速方法用 Python 接口把 WhisperX 嵌进你自己的脚本里。从一个真实的小烦恼说起上周一位做播客的朋友跟我吐槽一期 40 分钟的嘉宾对谈他花了大半天手工整理逐字稿还得自己一段段标注这是谁说的。更崩溃的是剪辑软件自动生成的字幕永远对不上时间轴——字已经说完了字幕还停在上一句。他的痛点其实很典型录音转写 ≠ 转写 对时间 分说话人。市面上的语音识别工具大多只做第一件事而 WhisperX 把后面两件也一起做了而且是自动化完成。先用三个关键词认识 WhisperXWhisperX 的官方定位是带单词级时间戳的自动语音识别并支持说话人分离。拆开看就是三样东西叠加语音识别ASR基于 OpenAI 的 Whisper 模型把音频转成文字支持多语言单词级时间戳通过音素对齐forced alignment把时间精度从一句话细化到每一个词误差控制在极小的范围内说话人分离Diarization通过声学特征差异判断这段话是谁说的并打上 SPEAKER_00、SPEAKER_01 之类的标签。打个比方普通语音识别像一位只负责听写的速记员记下内容但不管谁说的、什么时候说的WhisperX 则像一个三人小组——听写员、计时员和辨声员同时开工最后交给你一份标注得明明白白的会议纪要。下图是 WhisperX 的完整处理流水线可以看到音频经过语音活动检测VAD切分、批处理、Whisper 转录、音素模型强制对齐最终输出带单词级时间戳的文本问题一它和普通语音识别工具到底差在哪很多新手会问Whisper 不是已经能转文字了吗为什么还要 WhisperX关键在于三个普通工具做不到的细节。① 时间戳准到词。原版 Whisper 的时间戳是句子级的而且可能偏差好几秒。WhisperX 额外引入音素级对齐模型如 wav2vec2把文本逐词钉到音频波形上输出类似[00.12~0.44] Thats这样的词级时间轴。做字幕时词和画面就能精准卡点。② 能区分说话人。这是很多人最看重的功能。启用说话人分离后转录结果里每个片段都会带上speaker字段。会议录音里谁说了什么一目了然。③ 又快又能批量。借助 faster-whisper 后端和 VAD 分段的批量推理官方给出的数据是使用 large-v2 模型可以达到70 倍实时速度即 1 小时的音频约 1 分钟处理完GPU 环境且显存占用小于 8GB。这三个差异决定了它适合的人群需要做字幕的自媒体、整理会议纪要和访谈逐字稿的运营/行政/法律从业者、做播客剪辑的内容创作者以及任何想从音频里快速检索谁说了什么的人。问题二第一次运行怎么让 WhisperX 跑起来别被模型对齐这些词吓到实际动手只需要几步。第 1 步准备 Python 环境建议使用 Python 3.10。如果你装了 Anaconda可以用下面两条命令创建并激活独立环境避免污染系统环境conda create --name whisperx python3.10 conda activate whisperx然后安装 PyTorch以 CUDA 11.8 为例conda install pytorch2.0.0 torchaudio2.0.0 pytorch-cuda11.8 -c pytorch -c nvidia没有 GPU 也没关系纯 CPU 也能跑后面会讲怎么配置。另外系统里需要装好ffmpeg它是音频解码的基础依赖。第 2 步克隆项目并安装依赖git clone https://gitcode.com/gh_mirrors/wh/whisperX cd whisperX pip install -r requirements.txt小贴士安装依赖主要会拉取 PyTorch、faster-whisper、pyannote.audio、pandas 等核心库耐心等一会儿即可。如果只想快速试用也可以直接pip install whisperx但跟着本教程从源码安装能保证版本一致。第 3 步跑你的第一条命令准备好一个音频文件比如meeting.wav运行python -m whisperx meeting.wav --model medium这一条命令背后其实做了三件事先用 VAD 找出哪些片段有人声并切分再用 Whisper 批量转录最后用对齐模型把时间戳精修到单词级。默认情况下当前目录会生成 SRT、VTT、TXT、TSV、JSON 等多种格式的输出文件。第 4 步看懂输出文件SRT / VTT带时间轴的标准字幕文件可直接导入剪辑软件TXT纯文字稿方便复制粘贴TSV / JSON结构化数据包含每个片段甚至每个词的时间戳、置信度分数适合程序处理加--highlight_words True后SRT 字幕里还会给每个词加下划线做逐词高亮的卡拉 OK 效果。如果想指定输出目录或格式用--output_dir和--output_format。比如只要 SRT 和 TXTpython -m whisperx meeting.wav --model medium --output_format srt,txt --output_dir ./out第 5 步开启说话人分离要区分说话人只需加上--diarize参数。如果你知道音频里有几个人可以顺带告诉模型python -m whisperx meeting.wav --model medium --diarize --min_speakers 2 --max_speakers 4此时转录结果中每个片段都会带上说话人标签如 SPEAKER_00、SPEAKER_01JSON 文件里对应speaker: SPEAKER_01字段。⚠️注意说话人分离依赖 pyannote 的模型需要你先去 Hugging Face 注册并领取一个只读 Access Token同意模型的使用协议后通过--hf_token 你的token传入或者设置成环境变量否则这一步会报错。问题三识别不准、说话人张冠李戴怎么调第一次跑出来的结果往往能用但不够好。别急大部分问题都能通过下面几个参数解决。说话人分错了怎么办告诉模型准确人数把范围收紧比如确定只有两个人就写--min_speakers 2 --max_speakers 2减少误判换更大的识别模型--model large-v2在特征提取上更细腻说话人归属会更稳定先做降噪预处理背景音乐、空调声会严重干扰说话人区分先用工具降噪再喂给 WhisperX。文字识别错、专有名词被写歪换更大的模型从small/medium升级到large/large-v2准确率提升明显代价是更慢、更吃显存指定语言如果确定音频是德语加--language de避免语言检测兜圈子用--initial_prompt提供上下文可以塞入人名、公司名等专有名词模型会更倾向于正确拼写。时间戳对不齐、词被吞掉WhisperX 的词级对齐依赖语言对应的音素模型。目前官方默认支持en、fr、de、es、it、ja、zh、nl、uk、pt等语言会自动匹配如果你的语言不在列表里需要去模型库找一个对应的音素模型通过--align_model指定。另外数字、货币符号如 2014.、£13.60不在音素模型词典里可能无法对齐出时间戳这属于已知局限加--suppress_numerals可以缓解。语音重叠的片段两个人同时说话处理效果也不理想录会议时尽量让大家别抢话。静音段处理不干净VAD 有两个阈值参数--vad_onset默认 0.5和--vad_offset默认 0.363。如果发现该识别的话没被识别出来说明阈值偏高可以调低这两个值让 VAD 更敏感地把弱语音也圈进来。问题四录音很长、机器配置一般怎么跑得快WhisperX 把提速的旋钮都给你了按下面的优先级试。① 优先用 GPU加--device cuda即可用显卡加速。GPU 显存小于 8GB 时优先调小--batch_size默认 8可试 4 或 2。② 换更轻的计算精度加--compute_type int8。int8 比默认的 float16 更快、更省内存适合 CPU 或低显存机器代价是精度轻微下降。纯 CPU 机器包括 Mac建议直接python -m whisperx audio.wav --compute_type int8③ 合理选择模型大小日常场景推荐medium作为速度与精度的平衡点tiny/base最快但错字多追求最高准确率再上large-v2。④ 一次处理多个文件python -m whisperx支持一次传入多个音频路径模型只需加载一次多文件也能批量出结果省去反复加载模型的等待。提示处理超长音频时--chunk_size默认 30 秒控制 VAD 片段的合并长度如果发现某个片段太长导致显存溢出可以调小它。进阶玩法用 Python 接口写进自己的工作流命令行方便但如果你想批量处理几百个文件、或者把结果接进自己的系统可以用 Python 接口。核心调用顺序和命令行完全对应import whisperx device cuda # CPU 环境改成 cpu audio_file meeting.wav batch_size 16 # 1. 转录 model whisperx.load_model(large-v2, device, compute_typefloat16) audio whisperx.load_audio(audio_file) result model.transcribe(audio, batch_sizebatch_size) # 2. 对齐得到单词级时间戳 model_a, metadata whisperx.load_align_model(language_coderesult[language], devicedevice) result whisperx.align(result[segments], model_a, metadata, audio, device) # 3. 说话人分离并打标签 diarize_model whisperx.DiarizationPipeline(use_auth_token你的HF_TOKEN, devicedevice) diarize_segments diarize_model(audio, min_speakers2, max_speakers4) result whisperx.assign_word_speakers(diarize_segments, result) # result[segments] 里每个片段都带 start/end/text/speaker for seg in result[segments]: print(seg[speaker], seg[start], seg[end], seg[text])完整示例和更多语言的使用方式可以参考 EXAMPLES.md命令行参数全表在 whisperx/transcribe.py 里都有注释说明说话人分配的实现在 whisperx/diarize.py。真实场景盘点不同行业都怎么用它会议记录自动化行政或助理每周把例会录音丢给 WhisperX输出带发言人标签的纪要按人筛选观点查找上次张总对预算怎么说这类问题只需搜一下 JSON播客金句提取播客剪辑师转录整期节目后在 JSON 里筛出嘉宾的片段快速拼出金句集锦还能用词级时间戳做卡点字幕视频字幕生产自媒体用 SRT 输出配合剪辑软件自动生成字幕--highlight_words True还能做出逐词高亮的字幕效果访谈与学术记录研究者把访谈音频转成带时间戳的文字稿写论文引用时能精确定位到秒。写在最后从一份录音开始WhisperX 的价值不在于它能转写而在于它把转写、对齐、分人这三件原本要分开做、还很费人力的事合并成了一行命令。它开箱即用、完全免费配置门槛也不算高——你只需要一个 Python 环境、一个音频文件再加一点耐心读这篇指南的时间。现在就可以试试找一个你手头最短的录音按第 3 步的命令跑一遍亲眼看看谁在何时说了什么是怎么从一段音频里自动浮现出来的。跑通第一条命令之后剩下的所有优化都是锦上添花。【免费下载链接】whisperXWhisperX: Automatic Speech Recognition with Word-level Timestamps ( Diarization)项目地址: https://gitcode.com/gh_mirrors/wh/whisperX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表