如何用Transformers把多人会议录音转成文字
【免费下载链接】transformers🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers
Transformers 的自动语音识别功能,能把一段多人混在一条音轨上的会议录音转成文字,并用时间戳标出每句话在录音中的位置。想象一下:一场三个人开的会,录音里你一句我一句,你想快速找到“预算”那段讨论,从头听完不现实,转成文字并带上时间戳后,可以直接定位到那几秒。读完本文,你可以在自己的录音上跑通这条转写流程,并知道两个最影响效果的参数怎么调。
🎧 先看效果
输入是一段多人同时说话的 WAV 会议录音,得到的东西是两部分:一段完整文字转写,外加一个“时间点 + 句子”的列表,可以顺着列表找到某句话出现在录音的哪一秒。
下图里两个人并排干活、声音混在一起的场景,就是模型要处理的状态:多路人声同处一条音轨。
安装与环境准备
环境假设:Python 3.10+,Linux 或 macOS。CPU 也能跑,有 GPU 会明显快一些。最短路径是两条命令:
git clone https://gitcode.com/GitHub_Trending/tra/transformers pip install transformers soundfilesoundfile用来读写 WAV 文件,transformers提供识别管道本身。如果你只想看官方怎么调 ASR 训练参数,语音识别示例目录 里有现成脚本可参考。
最小可运行示例
下面是全文唯一的核心代码块,保存为transcribe.py即可直接运行:
from transformers import pipeline import soundfile as sf asr = pipeline("automatic-speech-recognition", model="openai/whisper-large-v3") audio, sr = sf.read("meeting_3people.wav") out = asr(audio, sampling_rate=sr, chunk_length_s=30, batch_size=8, return_timestamps=True) print(out["text"]) for seg in out.get("chunks", []): print(seg["timestamp"], seg["text"])逐行看它在做什么:
pipeline("automatic-speech-recognition")把识别模型和音频特征提取器拼成一条即用管道,首次运行会自动下载模型权重sf.read读出音频数据audio和它的真实采样率sr,两者一起传给管道,采样信息才不会丢chunk_length_s=30让长录音按 30 秒一段切着喂给模型,避免整段一次加载导致显存爆掉return_timestamps=True给每句附加时间段,这是你之后“定位原录音位置”的关键- 最后循环打印每个分句的时间戳和文字,
meeting_3people.wav换成你自己的文件即可
两个最关键的参数怎么选
| 参数 | 作用 | 建议值 |
|---|---|---|
chunk_length_s | 长录音切段长度:太短句子容易被拦腰截断,太长显存占用高 | 从 15 到 30 之间试,普通会议录音取 30 通常稳妥 |
sampling_rate | 告诉管道“这段音频的真实采样率”,传错会导致语速、音调判断异常 | 永远传sf.read返回的sr,不要手写 |
其余参数保持默认即可。如果录音明显偏长且机器配置高,可以调大batch_size提高吞吐;反之就调小。
放进真实项目
把转写接进你已有的整理流程,思路是:先拿到带时间戳的句子列表,再按关键词扫描,命中就打印所在位置。比如:
for seg in out["chunks"]: if "预算" in seg["text"]: print("原录音位置(秒):", seg["timestamp"][0])验收标准很简单:把打印出的时间戳代回原录音播放,对应的发言内容和说话顺序应与转写一致;能对上,说明流程已经可用,下一步再把结果导出成带章节的会议纪要。
踩坑速查
- 现象:转写整句乱码、漏词多。原因:两人声音重叠。解法:重叠说话是识别里最难的部分,预期会差一些,尽量用不重叠的片段做验收。
- 现象:长录音一跑就显存不足。原因:一次性处理整段。解法:调小
chunk_length_s和batch_size,分段喂入。 - 现象:听感像变了调,时间对不上。原因:采样率信息传错。解法:把
sf.read返回的sr原样传进管道,或先把音频重采样到 16kHz 再读。 - 现象:第一次运行特别慢。原因:在下载模型。解法:换个带宽好的机器先跑一次把权重下完,之后就走本地缓存。
接下来可以做什么
如果转写在你的目标语言上不够准,可以按 语音识别示例文档 里的流程,用自己的标注数据继续微调 Whisper 模型。若在示例脚本里发现 bug,按 贡献指南 提交 PR 即可,仓库维护者会跟进。
【免费下载链接】transformers🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考