Transformers语音识别:3行代码搞定录音转文字
2026/8/28 16:19:59 网站建设 项目流程

Transformers语音识别:3行代码搞定录音转文字

【免费下载链接】transformers🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers

开会录音一小时的乱糟糟文件,手工整理得大半天?用 Transformers 的语音识别 pipeline,3 行代码把音频转成带时间戳的文字,GPU 上 10 秒的音频不到半秒就能出结果。

先说句实话:Transformers 本身没有"声源分离"这个任务,多人同时抢话的录音靠它做不到一人一句的拆分。但单说话人的录音、需要逐句定位的转写场景,它的automatic-speech-recognitionpipeline 非常能打。

一句话讲清它

一句话:把音频丢给一个预训练好的识别模型,吐出来就是文字,还能给你每个词的时间戳。

主流方案挑这几个就够:

  • whisper-base / whisper-small:多语言、鲁棒,日常转写首选
  • whisper-large-v3:准确率最高,重要场合的逐字稿
  • wav2vec2-base-960h:体积小,显存紧张时的轻量选择

三分钟跑通语音转文字

先装上依赖,克隆仓库:

git clone https://gitcode.com/GitHub_Trending/tra/transformers cd transformers pip install transformers torch soundfile

最小可运行代码,不到 10 行:

from transformers import pipeline import soundfile as sf # Whisper 做语音识别,一行加载 asr = pipeline("automatic-speech-recognition", model="openai/whisper-base") # 读入音频,重采样到 16kHz(Whisper 的输入要求) audio, _ = sf.read("meeting.wav", samplerate=16000) result = asr(audio) print(result["text"])

跑一次大概半分钟,主要时间花在下载模型上,之后都有缓存。想系统了解训练细节,可以看项目里的语音识别示例。

效果有多快

模型场景参考表现
whisper-base英文 10 秒短句约 0.3 秒出结果,WER 约 2%
whisper-small中英混合会议长音频也能稳,速度略降
wav2vec2 XLSR微调单条数据集约 1 小时 20 分钟(V100)

数字来自项目官方文档,实际快慢取决于音频长短和你的硬件:模型只加载一次,后面全是推理,越长越划算。

把转写质量拉满

三个参数最常用,什么时候调哪个看场景:

# 长录音批处理 + 时间戳 result = asr( audio, return_timestamps="word", # 每个词都带上起止时间 batch_size=16, # 分块批量推理,长音频提速关键 chunk_length_s=30, # 每块 30 秒送入模型 ) print(result["chunks"])
  • batch_size:长音频会先被切成小块再逐块识别,调大它就是批量送进模型,速度明显上来
  • chunk_length_s:块太短会切断句子,太长则吃显存,30 秒是常见平衡点

组合玩法:30 秒一段自动切分,逐段转写再合并,适合没有 ffmpeg 的场景:

from transformers import pipeline import numpy as np import soundfile as sf asr = pipeline("automatic-speech-recognition", model="openai/whisper-small") audio, sr = sf.read("long_meeting.wav", samplerate=16000) sec = 30 # 每段 30 秒 for i in range(0, len(audio), sec * sr): chunk = audio[i : i + sec * sr] text = asr(chunk, batch_size=8)["text"].strip() if text: print(f"[{i // sr:03d}s] {text}")

这几个坑先知道

模型下不下来?换个网络,或设置代理后再跑一次;模型下载完就存在本地缓存,不会反复拉。

识别出来全是外语?Whisper 会自动猜语种,中文环境偶尔猜错。传language="zh"手动锁定,误报率立刻降下来。

长录音跑得特别慢?batch_size=16chunk_length_s=30,基本是最明显的提速手段。

时间戳参数报错?return_timestamps只有 Whisper 支持,别的 seq2seq 模型会直接抛错,CTC 模型则要用"word""char"字符串。

最后说两句

项目路线图上,流式实时推理和小模型效率优化都在推进中,长音频场景只会越来越顺。觉得有用的话收藏这篇,有空可以翻翻 pipeline 官方文档,也欢迎提 PR 一起把生态做厚。

【免费下载链接】transformers🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询