最省事的是用 Whisper,尤其对中文支持好、无需自搭模型、单命令即可运行;应避免 speech_recognition + pyaudio 或 Google Web Speech 方案,因其不支持批量、无内置中文模型、易受设备/格式/网络限制且识别质量差。

直接用 whisper 最省事,尤其对中文支持好、无需自己搭 ASR 模型、单条命令就能跑通;别碰 speech_recognition + pyaudio 这套老方案,它默认不支持批量、没内置中文模型、还容易卡在麦克风设备或格式兼容上。
用 whisper 命令行批量转录(推荐)
这是最快落地的方式,适合处理本地一堆 .mp3、.wav、.m4a 文件:
- 先装好
openai-whisper:pip install openai-whisper - 确保系统已安装
ffmpeg(Mac 用brew install ffmpeg,Windows 下载二进制后加到 PATH) - 执行批量识别(示例:当前目录下所有
.mp3):whisper *.mp3 --model medium --language zh --output_dir ./transcripts
-
--model可选tiny/base/small/medium/large,中文推荐medium起步,large精度高但显存吃紧 - 输出默认是
.txt和.srt,--output_format txt可限制只出纯文本
用 whisper Python API 控制更细的转录逻辑
当你要跳过某些文件、加进度条、提取时间戳、或拼接多段音频再识别时,得写代码:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 加载模型一次,复用给多个文件,别每个文件都
whisper.load_model() - 注意音频采样率:whisper 只接受 16kHz 单声道,用
pydub预处理:from pydub import AudioSegment<br>audio = AudioSegment.from_file("input.mp3").set_frame_rate(16000).set_channels(1)<br>audio.export("temp.wav", format="wav") - 调用识别时传
fp16=False避免显存不足报错(尤其在 CPU 或小显存机器上) - 中文识别必须显式指定
language="zh",否则自动检测常失败,尤其短音频
为什么别用 speech_recognition + Google Web Speech?
这个组合看似简单,实际坑多:
- Google 接口有调用量限制,批量跑几十个文件大概率触发
AttributeError: 'NoneType' object has no attribute 'get'或返回空结果 -
speech_recognition本身不支持直接读.mp3,必须先用pydub转成.wav,且要求 PCM 编码,否则报Could not find a WAV header - 中文识别质量差,连“你好”都常识别成“你号”,因为 Google Web Speech 默认优先适配英文语音模型
- 无法离线运行,网络抖动或防火墙会直接中断整个批量流程
whisper 的模型体积和推理耗时是主要代价——medium 模型约 1.7GB,1 分钟音频在 RTX 3060 上约需 20 秒。如果文件极多,记得加 try/except 包裹单个识别调用,避免一个失败就中断全部;另外,带背景音乐或多人对话的音频,whisper 容易串句,这时候得靠人工校对,算法目前真没法全自动兜底。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










