前言
音频转文本,业内一般称为ASR(Automatic Speech Recognition,自动语音识别)。日常场景非常多:会议录音转写、采访笔录、短视频字幕提取、电话录音归档、播客文字稿生成。
Python生态有大量成熟库,不用从零训练语音模型,几行代码就能完成音频转文字。本文从环境准备、本地轻量模型、调用大模型API、批量处理,还有踩坑要点,一次性讲清楚。
提示:本文代码均可直接复制运行,适合开发、数据分析、内容从业者快速上手。
一、技术方案选型
Python做音频转写主要两条路线,按需选择:
- 本地离线ASR(推荐Whisper):OpenAI开源Whisper,支持中英双语、多语种,不需要一直联网,支持wav/mp3,对电脑有一定算力要求。适合隐私敏感数据,录音文件不想上传第三方。
- 在线API调用:阿里云、百度、OpenAI Audio接口。优点:本地不吃算力,低配电脑也能用;缺点:音频需要上传,有费用,有网络依赖。
本文重点使用 Whisper,是目前Python语音转文字最主流的方案。
二、环境安装
基础依赖
bash
# 安装whisper本体
pip install openai-whisper
# ffmpeg用来解析各类音频(mp3,wav,m4a)
# Windows:下载ffmpeg并配置环境变量;Linux: apt install ffmpeg;Mac: brew install ffmpeg
注意:ffmpeg是核心,缺少会直接报错无法读取音频。
Whisper内置多个模型,大小不同,按需选择:
tiny:最小,速度最快,精度一般,适合测试base:轻量,日常测试首选small:平衡速度和准确度,中文推荐medium:高精度,中文效果很好,需要显存/内存更高large:最强多语种,资源消耗大
三、最简示例:单音频转文本
python
import whisper
# 加载模型,第一次运行会自动下载模型文件
model = whisper.load_model("base")
# 识别音频,audio可以是mp3/wav/m4a文件路径
result = model.transcribe("meeting.mp3", language="zh")
# 输出全部文本
print(result["text"])
# 输出分段带时间戳的结果(做字幕必备)
for seg in result["segments"]:
print(f"【{seg['start']:.2f} - {seg['end']:.2f}】 {seg['text']}")
运行之后,不仅拿到完整文字,还附带每一句话的开始、结束时间,直接用来生成srt字幕文件。
四、进阶案例:批量音频转写
如果文件夹里一堆录音,批量处理代码:
python
import os
import whisper
model = whisper.load_model("base")
audio_dir = "./audio/"
output_dir = "./output/"
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(audio_dir):
if filename.endswith((".mp3", ".wav", ".m4a")):
audio_path = os.path.join(audio_dir, filename)
print(f"正在处理:{filename}")
res = model.transcribe(audio_path, language="zh")
# 保存文本到文件
out_name = os.path.splitext(filename)[0] + ".txt"
with open(os.path.join(output_dir, out_name), "w", encoding="utf-8") as f:
f.write(res["text"])
print("全部转写完成!")
五、方案2:调用在线API(以OpenAI Audio为例)
不想占用本地电脑算力,可以直接调用云端接口,适合短音频:
python
from openai import OpenAI
client = OpenAI(api_key="你的key")
audio_file = open("meeting.mp3", "rb")
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="zh"
)
print(transcript.text)
优点:不用下载大模型,低配置机器也能用;缺点:音频文件上传外网,有成本,不适合涉密录音。
六、常见坑与优化技巧
- 音频质量影响巨大
噪音大、远距离收音、多人重叠说话,识别率会暴跌。优先使用降噪后的wav音频,采样率16000Hz最佳。 - 内存不足问题
medium/large模型对内存要求高,8G内存电脑尽量只用base/small。内存不够会直接OOM崩溃。 - 语言指定
language="zh"手动指定中文,比自动识别速度更快,准确率更高。 - 长音频处理
Whisper内部会自动切割音频分片;如果几十小时超长录音,可以先使用pydub分割成小段再转写,降低失败风险。 - 输出字幕
segments的时间戳可以直接生成.srt字幕文件,用于剪映、播放器加载字幕。
七、适用场景总结
✅ 会议录音自动转文字
✅ 播客、音频节目生成文稿
✅ 短视频批量提取字幕
✅ 电话客服录音内容归档
✅ 采访音频整理
结语
借助Python+Whisper,我们可以低成本搭建私有化音频转文本工具,不用依赖付费网页工具。离线本地部署还能保证数据不外流,结合后续NLP还可以继续做关键词提取、情感分析、摘要总结,把语音信息变成结构化文本数据。
如果你有需求,还可以继续扩展:音频降噪、语音区分说话人(声纹分割)、自动摘要、导出word字幕文件。