如何让1小时录音15分钟转完:faster-whisper 语音转文字上手指南
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
昨晚整理客户电话录音,2 小时音频丢给转写工具,凌晨才跑完——这种等待,其实没必要。faster-whisper 是对 OpenAI Whisper 模型基于 CTranslate2 推理引擎的重实现:同样的识别准确率,速度最高快 4 倍,内存占用更低,还支持 8 位量化进一步压缩资源。本文按"最短路径"带你从安装到跑通第一个转写任务,再到几个真正用得上的进阶能力。
先说清楚:谁会用到它,用后得到什么
- 做视频/播客内容的人:批量产出带词级时间戳的字幕稿,不再逐句对时间轴。
- 开发者:一个 Python 库直接集成进现有服务,无需维护 FFmpeg 环境。
- 做访谈、课程、会议整理的人:长音频自动跳过静音段,输出干净的段落文本。
一句话定位:它不是又一个"能转写的库",而是把 Whisper 的推理过程换了引擎——识别质量不变,机器负担变小。
三分钟装好,跑通第一条转录
环境要求只有一个:Python 3.9 及以上。与原版 Whisper 不同,系统不需要安装 FFmpeg——音频解码由随包分发的 PyAV 库完成,它内嵌了 FFmpeg 能力。
pip install faster-whisper最小可运行示例(仓库测试用例中使用的正是tiny模型,几秒出结果):
from faster_whisper import WhisperModel # 首次运行会自动下载模型到本地缓存 model = WhisperModel("small", device="cpu", compute_type="int8") # int8 是 CPU 最省内存的模式 segments, info = model.transcribe("recording.mp3") print(info.language, info.language_probability) # 自动检测语言及置信度 for segment in segments: # 注意:转写是在这里迭代时才真正开始执行 print(f"[{segment.start:.1f}s -> {segment.end:.1f}s] {segment.text}")跑通这段代码,你就完成了从音频到"带时间戳文本"的完整链路。
选对档位:按硬件挑模型与精度
模型大小决定精度上限,compute_type决定资源消耗。下面是按常见硬件场景整理的建议(turbo即 large-v3-turbo,配合批量推理使用):
| 你的硬件 | 推荐模型 | compute_type | 说明 |
|---|---|---|---|
| NVIDIA 显卡,显存 ≥8GB | large-v3 或 distil-large-v3 | float16 | 精度优先,distil 版本更快 |
| NVIDIA 显卡,显存紧张 | base / small | int8_float16 | 量化后显存明显下降 |
| 普通 CPU(i5 / R5 级别) | small 或 base | int8 | 日常办公录音足够 |
| 只处理英语 | tiny.en / base.en | int8 | .en变体单语模型,速度更快 |
| GPU 服务器批量任务 | turbo | float16 | 搭配批量推理,吞吐最高 |
仓库 benchmark/ 目录下有完整的复现脚本,官方数据可作为选型参考:13 分钟音频、large-v2 模型在 RTX 3070 Ti 上,faster-whisper 的 FP16 耗时约 1 分 03 秒,而原版实现约 2 分 23 秒;换成 int8 加批量(batch_size=8)只需 16 秒。
四个值得深挖的能力
以下每个能力都遵循同一个思路:先说你能拿到什么,再给关键参数。
① 词级时间戳——字幕生产的直接原料
segments, _ = model.transcribe("video_audio.mp3", word_timestamps=True) for segment in segments: for word in segment.words: print(word.start, word.end, word.word)每个词都有起止时间,导出 SRT 字幕几乎是纯格式转换的工作。适用于视频字幕、逐字稿对齐。
② 静音段自动过滤——长录音不再空转
segments, _ = model.transcribe("long_talk.wav", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500)) # 默认只滤除 2 秒以上静音底层集成了 Silero VAD 语音活动检测(源码见 faster_whisper/vad.py),阈值、最短语音时长等参数都可调。适用于访谈、课堂、演讲这类停顿多的录音。
③ 热词与开场提示——专名识别不再靠运气
segments, _ = model.transcribe("meeting.mp3", hotwords="CTranslate2 推理引擎 量化", initial_prompt="这是一段技术评审会议")hotwords会把指定词组优先纳入解码候选,initial_prompt提供语境提示。适用于人名、产品名、术语密集的场景。
④ 批量推理——吞吐量的正解
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") pipeline = BatchedInferencePipeline(model=model) segments, info = pipeline.transcribe("audio.mp3", batch_size=16)BatchedInferencePipeline是WhisperModel.transcribe的直接替代,GPU 上把多个片段并行处理。README 基准显示:同样的 13 分钟音频,FP16 从 1 分 03 秒降到 17 秒。
三个真实工作流:输入、处理、产出
工作流 A:播客批量出字幕输入是 10 期节目的音频文件;处理用BatchedInferencePipeline+word_timestamps=True,逐期循环即可;产出是每个词带时间戳的字幕稿,稍加格式转换就是 SRT。整个流程无人值守,跑一夜绰绰有余。
工作流 B:访谈档案化输入是客户访谈录音;处理时打开vad_filter并传入hotwords(公司名、产品名);产出是干净的段落文本,直接粘进文档工具做归档检索。静音段被滤掉后,文字稿的阅读密度明显更高。
工作流 C:会议速记 + 二次加工输入是 1 小时会议录音;用 CPU int8 的 small 模型先出草稿(1 小时录音约 15 分钟量级),再对草稿做摘要、提取行动项。草稿不必完美,够用即可——这也是先选小模型、不够再升级的思路。
选型参考:和另外两条路线比比
| 维度 | faster-whisper | 原版 openai/whisper | 在线转写服务 |
|---|---|---|---|
| 系统依赖 | 无需 FFmpeg,pip 装完即用 | 需自行安装 FFmpeg | 无,但音频要上传 |
| 长音频资源消耗 | 支持 int8 量化 + 批量推理 | 仅常规精度 | 由服务商承担 |
| 词级时间戳 | 内置参数开启 | 支持 | 视服务而定 |
| 数据是否离机 | 完全本地 | 完全本地 | 经过网络 |
| 二次开发自由度 | 参数细,可接热词、批量、VAD | 中等 | 低 |
如果你的顾虑是"换库会不会掉精度",可以先拿同一段音频对比两家的输出——两者的解码参数默认值并不完全相同(例如 beam size),直接对比 README 中的基准说明 会更公平。
三个容易踩的坑
⚠️坑一:以为调用transcribe()转写就开始了。segments是生成器,真正的推理发生在你迭代它的时候。想在脚本里"一口气跑完",记得segments = list(segments)。
坑二:GPU 起不来,报 CUDA 相关错误。较新版本的 CTranslate2 只支持 CUDA 12 + cuDNN 9,还依赖 cuBLAS。版本对不上时要么补齐对应库,要么退回 CPU + int8,先让流程跑通再谈加速。
坑三:用.en模型处理非英语音频。tiny.en、base.en这类单语模型只识别英语,对它传language="zh"没有意义。多语言场景请用不带.en的多语言版本,或显式指定language参数。
下一步行动清单
- 用
small+int8转写一段你自己的录音,确认环境可用。 - 加
word_timestamps=True跑一次,尝试导出 SRT。 - 精度不够时再升级:CPU 上换
large-v3,GPU 上试distil-large-v3或turbo批量方案。 - 更多解码参数(
temperature、condition_on_previous_text、compression_ratio_threshold等)见 WhisperModel 的完整实现。 - 需要现成的 GPU 运行环境,可以参考仓库里的 Docker 配置,里面已预置 CUDA 相关依赖。
工具的价值不在于"能转写",而在于把转写变成一条可预期、可批量、可集成的流水线。按上面的路径走完,你的音频处理流程应该比原来快了不止一个量级。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考