如何使用Python实现音频转文本(ASR语音识别)

前言

音频转文本,业内一般称为ASR(Automatic Speech Recognition,自动语音识别)。日常场景非常多:会议录音转写、采访笔录、短视频字幕提取、电话录音归档、播客文字稿生成。

Python生态有大量成熟库,不用从零训练语音模型,几行代码就能完成音频转文字。本文从环境准备、本地轻量模型、调用大模型API、批量处理,还有踩坑要点,一次性讲清楚。

提示:本文代码均可直接复制运行,适合开发、数据分析、内容从业者快速上手。

一、技术方案选型

Python做音频转写主要两条路线,按需选择:

  1. 本地离线ASR(推荐Whisper):OpenAI开源Whisper,支持中英双语、多语种,不需要一直联网,支持wav/mp3,对电脑有一定算力要求。适合隐私敏感数据,录音文件不想上传第三方。
  2. 在线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)

优点:不用下载大模型,低配置机器也能用;缺点:音频文件上传外网,有成本,不适合涉密录音。

六、常见坑与优化技巧

  1. 音频质量影响巨大
    噪音大、远距离收音、多人重叠说话,识别率会暴跌。优先使用降噪后的wav音频,采样率16000Hz最佳。
  2. 内存不足问题
    medium/large模型对内存要求高,8G内存电脑尽量只用base/small。内存不够会直接OOM崩溃。
  3. 语言指定
    language="zh" 手动指定中文,比自动识别速度更快,准确率更高。
  4. 长音频处理
    Whisper内部会自动切割音频分片;如果几十小时超长录音,可以先使用pydub分割成小段再转写,降低失败风险。
  5. 输出字幕
    segments的时间戳可以直接生成.srt字幕文件,用于剪映、播放器加载字幕。

七、适用场景总结

✅ 会议录音自动转文字

✅ 播客、音频节目生成文稿

✅ 短视频批量提取字幕

✅ 电话客服录音内容归档

✅ 采访音频整理

结语

借助Python+Whisper,我们可以低成本搭建私有化音频转文本工具,不用依赖付费网页工具。离线本地部署还能保证数据不外流,结合后续NLP还可以继续做关键词提取、情感分析、摘要总结,把语音信息变成结构化文本数据。

如果你有需求,还可以继续扩展:音频降噪、语音区分说话人(声纹分割)、自动摘要、导出word字幕文件。

相关推荐
SunnyDays10111 小时前
使用 Python 将 PowerPoint 转换为视频(无需安装 Microsoft PowerPoint)
python·powerpoint·ppt 转 动画·ppt 转 mp4·ppt 转 wmv·幻灯片转动画·幻灯片转 mp4
飞Link1 小时前
零基础:离散数据积分与 Python 实现保姆级教程
python·算法
用户0332126663672 小时前
使用 Python 将 PDF 转换为 Word(转换单个与多个文件)
python
troy1282 小时前
Visual Studio Code 详细教程:从入门到高效开发
开发语言·python
夜雪一千2 小时前
Python ASR音频转文本 完整代码示例
python
JarmanYuo2 小时前
YOLO 涨点研究(十二):具身 CV 进阶篇——Sim2Real 域随机化与真机部署
人工智能·pytorch·python·yolo·计算机视觉
小蒜学长2 小时前
基于Python的微博热搜话题可视化分析系统的设计与实现(代码+数据库+LW)
后端·python·django·数据可视化·情感分析·微博热搜
梦帮科技2 小时前
从提示词到可复现音乐工作流:RNOISE 2.0 的 Prompt Engineering 架构
人工智能·python·mysql·ci/cd·架构·node.js·numpy
飞Link2 小时前
【Numpy】 第三部分:矩阵运算与线性代数(计算篇)
python·numpy