使用 Whisper 转写语音的完整教学

Whisper 安装

在常见的 Python 环境中,只需要一条指令即可安装开源版 Whisper:

bash 复制代码
pip install -U openai-whisper

如果系统没有 FFmpeg,需要自行安装,否则 Whisper 可能无法处理常见的 .mp3.wav.m4a 文件。

Whisper 的原始仓库中包含模型介绍、支持语言列表与部分示例代码:

Whisper GitHub
https://github.com/openai/whisper


基础转写示例(本地运行)

完成安装后,可以直接在命令行输入下列语句进行一次完整的语音转写:

bash 复制代码
whisper demo_audio.mp3 \
  --model medium \
  --language zh \
  --task transcribe \
  --output_format srt

执行后,Whisper 会自动解析音频并生成带时间轴的 .srt 文件。这种格式在视频剪辑、字幕生成和内容校对中都非常常用。

为了处理多段录音,可以将音频放入一个文件夹,并使用极简脚本进行批量转写:

bash 复制代码
#!/usr/bin/env bash
set -e

AUDIO_PATH="audio_inputs"
MODEL="medium"

for f in "$AUDIO_PATH"/*.mp3; do
  whisper "$f" --model "$MODEL" --language zh --task transcribe --output_format srt
done

此类脚本可根据需要加入日志、时间标记、自动整理文件等功能。


使用 Whisper 生态工具

随着开源社区不断扩展,已经出现多个针对 Whisper 的加速库、图形工具与 Web UI,其中包含更快的 C++ 推理、更轻量的模型格式等。整理这些扩展的一个社区列表如下:

Whisper 工具生态列表(awesome-whisper)
https://github.com/sindresorhus/awesome-whisper

这类工具通常适合需要更高转写速度、希望图形化操作、或需要部署 Web 服务的场景。


使用 API 方式转写(无需本地模型)

若不希望在本地安装模型,也可以直接通过在线 API 上传音频并获得文本结果。这适合轻量任务、跨平台使用或没有 GPU 的环境。

官方音频处理接口说明文档如下:

OpenAI Audio / Whisper API 文档
https://platform.openai.com/docs/guides/audio

使用 curl 的最小示例结构如下(接口名称可能因版本更新而略有调整,以官方文档为准):

bash 复制代码
curl https://api.openai.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@demo_audio.mp3" \
  -F "model=whisper-1" \
  -F "response_format=text"

Python 示例也很简单:

python 复制代码
import requests

url = "https://api.openai.com/v1/audio/transcriptions"
headers = {"Authorization": f"Bearer {API_KEY}"}

with open("demo_audio.mp3", "rb") as f:
    files = {"file": ("demo_audio.mp3", f, "audio/mpeg")}
    data = {"model": "whisper-1", "response_format": "text"}
    resp = requests.post(url, headers=headers, data=data, files=files)

text = resp.text
print(text)

在教学或企业流程中,这种方式通常更容易整合进自动化平台。


输出结果的后处理方式

Whisper 输出的文本有时会包含口语化表达、停顿语气词或背景对话。一般在实际使用中,会进行以下简易处理:

  • 统一标点
  • 校对人名、地名与专业术语
  • 调整字幕显示的时长与行数
  • 按段落拆分用于写文章或整理会议纪要

这种加工方式不依赖任何复杂算法,通常用基础脚本即可完成。例如从 .srt 中抽取长句作为大纲:

python 复制代码
from pathlib import Path

blocks = Path("demo_audio.srt").read_text(encoding="utf-8").split("\n\n")
outline = []

for block in blocks:
    lines = block.split("\n")
    if len(lines) >= 3:
        text = " ".join(lines[2:])
        if len(text) > 40:
            outline.append(text)

for o in outline:
    print("-", o)

这些简单方法足以满足日常的课堂记录、播客稿件梳理、内部会议文件生成等场景。

相关推荐
木圭的AI时代指南3 小时前
为了跑星火Spark-X2.5,我把 llama.cpp 重新编译了一遍
大数据·人工智能·ai·语言模型
程序员JerrySUN3 小时前
Jetson边缘嵌入式实战课程第九讲:Ultralytics YOLO模型实战,从目标检测到实时推理
人工智能·计算机视觉·目标跟踪
土星云SaturnCloud3 小时前
VILA 视觉语言模型边缘部署实战
服务器·人工智能·语言模型·自然语言处理·边缘计算
木卫四科技3 小时前
从函数劫持到智能体控制平面:Hook 如何从 Linux-Android 演化到 Agent Runtime
android·linux·人工智能·安全
YFJ_mily3 小时前
第四届成熟系列会议|SPIC2026信号处理与智能计算 IEEE会议|连续两届完成EI&Scopus检索|广州会议
人工智能·机器人·信号处理·智能计算·ieee会议·rdlink研发家·高届数会议
SL-staff3 小时前
离散制造企业如何应对频繁插单?智能排产系统带来新思路
大数据·数据库·人工智能·技术教程·智能排产·jvs-aps·排产系统
GEO实战经验分享3 小时前
GEO王涛解码智能核心:详解Transformer与注意力机制的工作原理
人工智能·深度学习·transformer
KKKlucifer3 小时前
AI深度赋能认证、授权、账号、审计全流程——智能身份安全防护体系实践
人工智能·安全
TMT星球3 小时前
IFA2026丨TCL华星携多款显示产品亮相,创新显示科技开启未来视界
大数据·人工智能·科技
Web极客码3 小时前
Pydantic 校验通过不等于答案正确:如何识别 LLM 的语义错误
服务器·人工智能·ai·llm