☰
Whisper 本地部署指南:10 分钟用 LocalAI 跑通离线语音识别
2026/10/24 7:54:31 网站建设 项目流程

Whisper 本地部署指南:10 分钟用 LocalAI 跑通离线语音识别

【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI

3 小时的会议录音,走云端接口要过公网、按分钟计费;换成 LocalAI 做本地语音识别,同一条 curl 在内网离线跑完,返回的还是标准 JSON。这篇文章按「先跑起来、再调对、最后提速」的顺序,带你把 Whisper 本地部署完整走一遍。

一、先跑起来:一条命令拉起 LocalAI 与 whisper 模型

1. 启动服务

装 Docker 的机器上,这条命令就是最短路径:

docker run -ti --name local-ai -p 8080:8080 localai/localai:latest

服务默认监听 8080。不想用 Docker 也可以下载官方发布的二进制直接运行,参数一样是--host和--port,细节可翻仓库里的 Dockerfile 与文档 docs/content/features/。

2. 加载 Whisper 模型

容器起来后,在宿主机执行local-ai run whisper-base,LocalAI 会从内置模型库(gallery)里解析这个条目,拉取对应的 whisper.cpp 权重并注册到服务。仓库中该条目就是 gallery/whisper-base.yaml,想看它长什么样,第三节有完整解析。

3. 验证服务在线

执行curl http://localhost:8080/v1/models,返回的模型列表里出现whisper-base即加载成功。打开浏览器访问http://localhost:8080还能看到控制台首页:

二、发第一个请求:语音转录 API 的调用姿势

1. 最小可用 curl

端点/v1/audio/transcriptions完全对齐 OpenAI 的 Whisper 接口,multipart 表单提交:

curl http://localhost:8080/v1/audio/transcriptions \ -F file=@audio.wav \ -F model=whisper-base \ -F language=zh

响应里有text(全文)、segments(带起止时间的分段)。处理逻辑可对照源码 core/http/endpoints/openai/transcription.go。

2. 常用参数对照表

参数必填说明
file是音频文件,wav/ogg/mp3/flac/m4a 等常见格式均可
model是模型名,如whisper-base
language否ISO-639-1 两位代码(zh、en、ja…),不传则自动检测
translate否传true时把非英语音频翻译成英语
prompt否起始提示词,适合纠正专有名词与术语
temperature否采样温度,默认 0
response_format否json(默认)、verbose_json、txt、srt、vtt、lrc
timestamp_granularities否取segment或word,让分段/分词带时间戳
stream否传true时以 SSE 增量输出转写文本
diarize否LocalAI 扩展项,说话人分离,默认开启,传false关闭

3. 换输出格式与流式转写

response_format传srt或vtt,返回的就是可直接挂到视频上的字幕文件;stream=true则进入流式模式,按transcript.text.delta事件逐段推送文本,最后以[DONE]收尾,做低延迟应用时很有用。

三、Whisper 模型怎么选:tiny 到 large 五档对比

1. 参数量与适用场景

模型参数量定位
tiny39M草稿与低延迟场景,速度最快
base74M日常转写的性价比之选,多数 CPU 可实时
small244M精度与速度的平衡点,中文访谈推荐先试这档
medium769M长音频、专业术语多的内容
large1550M精度上限,对内存要求最高(建议 16GB 起步)

选型口诀:先 base 后 small,听感不行再往上加档;资源紧张就降档而不是堆内存。

2. 模型配置长什么样

模型条目由两部分构成:名字 + 后端声明。whisper 系列的条目核心只有一行backend: whisper:

name: "whisper-base" config_file: | backend: whisper

LocalAI 依据声明路由到 whisper.cpp 后端(实现见 backend/go/whisper/,C++ 侧接的就是 whisper.cpp 推理核)。已持有.bin权重文件的,可自建配置文件指向本地文件,避免重复下载。

四、让转写更快:硬件底线与调参

1. 硬件要求

部件跑通 whisper-base 底线日常使用建议
CPU2 核4~8 核,x86 需支持 AVX2
内存2GB8GB 以上(large 档 16GB 起步)
磁盘权重文件 + 若干 GB 余量预留 10GB
GPU无需(CPU 即可推理)有 NVIDIA 卡可换带 CUDA 的镜像提速

2. CPU 侧三个调优点

第一是线程数:在模型配置的parameters里设置threads,一般取物理核数;第二是模型档位:精度够用就别上 large;第三是输入长度:超过几分钟的音频先分段再转,单段排队更短、内存峰值更低。whisper 后端内部带 VAD 辅助切分长音频,减少无效区间的计算。

3. 输入音频预处理

采样率统一到 16kHz、单声道即可;格式五花八门时用 ffmpeg 转一次 wav 最稳妥。预处理后同一文件的转写耗时通常更平稳,也省去了后端解码的差异。

五、排错手册:按报错现象定位

1. 下载阶段卡住

大模型在慢速网络上很容易长时间无进度。两个办法:换稳定网络重拉,或按 gallery/whisper-base.yaml 同目录的条目对照文件名,手工把权重放进模型目录后重启服务。

2. 推理阶段 OOM 或无输出

先看dmesg是否触发 OOM;其次把档位降一级、threads减到物理核数。长时间无输出多半是线程数远超物理核导致的上下文切换风暴。

3. 模型名对不上

请求里的model必须和/v1/models返回的注册名完全一致,whisper-base写成whisper base或base都会 404。

六、接入你的应用:兼容层与下一步

1. OpenAI 兼容意味着零改造

现有代码只要把 base_url 指到http://localhost:8080/v1、密钥位填任意字符串即可,SDK 不需要换。这也是 LocalAI 的设计目标之一:本地语音识别服务对上游应用完全透明。

2. 三条可以今天就做的下一步

  1. 用response_format=srt转一段 5 分钟视频,导入播放器核对时间轴对齐质量。
  2. 同一份中文访谈分别跑whisper-base与whisper-small,把两版文本贴在一起对比术语准确率。
  3. 给转写请求加上stream=true,写一个最小的 SSE 消费脚本,观察增量文本的到达节奏。

【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI

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

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

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

立即咨询