Whisper 3分钟跑通本地语音识别:一条命令把任意语言音频转成文字

Whisper 3分钟跑通本地语音识别:一条命令把任意语言音频转成文字

【免费下载链接】whisper Robust Speech Recognition via Large-Scale Weak Supervision 【免费下载链接】whisper 项目地址: https://gitcode.com/GitHub_Trending/whisp/whisper

播客编辑把 3 小时访谈录音丢给我,人工整理稿根本没法完成。她只给我一条命令:whisper interview.m4a,几分钟后完整文稿就躺在文件夹里。这就是 Whisper,一个可完全离线跑通的本地语音识别模型——不用 API、不上传云端,支持 98 种语言的转写与翻译。

项目能做什么

Whisper 是 OpenAI 用大规模弱监督数据训练的 Transformer 序列到序列模型,一个模型就把传统语音处理流水线的多个环节全包了:

  • 多语言语音识别:98 种语言直接输出原语言文字
  • 语音翻译:非英语音频可一键翻译成英文,--task translate 即可
  • 语言自动识别:不指定 --language 时,用前 30 秒音频自动判断语种
  • 多格式落盘:一次跑出 txt、srt、vtt、tsv、json、jsonl 六种文件

它的工作方式如下图:音频按 30 秒窗口进入编码器,变成 mel 频谱表示后,解码器逐词输出文本;token 序列里的一组特殊符号用来标记"正在执行哪个任务",识别、翻译、语种检测共用同一套权重。

Whisper语音识别的Transformer模型架构,单个模型同时完成转写、翻译与语言识别

三步跑通最小Demo

第一步:安装

唯一的外部依赖是 ffmpeg,负责解码各种音频格式,装完再装 Python 包:

sudo apt update && sudo apt install ffmpeg   # macOS 可换成 brew install ffmpeg
pip install -U openai-whisper

第二步:初始化

模型权重首次使用时会自动下载并缓存,之后直接复用:

import whisper
model = whisper.load_model("base")   # 缓存在 ~/.cache/whisper

第三步:调用

命令行最快,默认输出全部六种格式:

whisper meeting.mp3 --model base

程序里调用则只需要两行:

result = model.transcribe("meeting.mp3")
print(result["text"])

关键机制速览

30 秒滑动窗口。 编码器只认固定 30 秒的输入,长音频被切成连续的 30 秒窗口逐个处理,像读书翻页一样翻完为止。窗口切到哪里由模型输出里的时间戳 token 决定,所以断句和字幕时间码都是模型自己给的,不需要后处理。固定窗口、采样率 16 kHz 等参数都写死在 whisper/audio.py 顶部。

温度回退。 模型"没把握"时不会硬着头皮输出:先以温度 0 解码,若结果被判失败——文字压缩比超过 2.4(意味着大量重复),或平均对数概率低于 -1.0——就把温度调高 0.2 重试,直到 1.0。相当于先认真读一遍,读不通就放松重猜。这段逻辑在 whisper/transcribe.pydecode_with_fallback 里。

真实场景落地:外网公开课一键出字幕

需求:两小时日语公开课,要英文 SRT 字幕。流程很简单:先用小模型试跑确认语种,再用正式规格出片,最后只保留 srt 文件:

whisper lecture.mp4 --model medium --language Japanese --task translate --output_format srt

产出的 lecture.mp4.srt 可直接挂到播放器上。规格怎么选?下面是官方在 A100 上的相对速度数据(源自 README.md),实际快慢还要看你的机器:

规格参数量显存需求相对速度适用场景
tiny39 M~1 GB~10x草稿验证、低配机器
base74 M~1 GB~7x日常英语转写
small244 M~2 GB~4x多语种、精度要求更高
turbo809 M~6 GB~8x大批量转写(不支持翻译)
large1550 M~10 GB1x翻译任务、最高精度

turbo 是 large-v3 的加速版,精度损失小、速度接近 small,批量转写的首选;但注意它没有针对翻译任务训练,指定 --task translate 时只会原样输出。另外,语种已知就显式指定 --language,既稳定又能省掉检测步骤。

避坑清单

问题原因解法
启动就报 Failed to load audio系统缺少 ffmpeg先按第一步装上 ffmpeg
--task translate 后仍是原文turbo 模型未训练翻译能力换成 medium 或 large
.en 模型传其他语言被警告.en 是纯英文模型多语种一律用不带 .en 的规格
文稿陷入同一句话无限重复前文输出被当作下一窗口的提示,形成死循环--condition_on_previous_text False
开头长静音导致语种识别错误自动检测只取前 30 秒手动指定 --language

收尾

模型本身跑顺之后,纵深在下游:

  • --word_timestamps 拿词级时间码,做逐词高亮字幕
  • --initial_prompt 注入领域词表,纠正专有名词
  • 跑一遍 notebooks/Multilingual_ASR.ipynb 看完整多语种示例

更多细节可查 model-card.md。当音频变成文本流之后,检索、归档、翻译、喂给知识库就都只是普通的文本处理了。

【免费下载链接】whisper Robust Speech Recognition via Large-Scale Weak Supervision 【免费下载链接】whisper 项目地址: https://gitcode.com/GitHub_Trending/whisp/whisper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值