
LocalAI 部署 Whisper三步跑通离线语音转文字【免费下载链接】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你手里有一段两小时的内部会议录音里面提到了未发布的项目名和客户的内部数据——这份文件不能发到任何云端接口。而 LocalAI 是一个开源的本地 AI 引擎可以把 LLM、图像、语音模型全部跑在你自己的机器上Whisper 语音识别正是它内置能力之一音频从磁盘读取、在本机解码、以文本返回全程不出你的内网。这篇文章不讲原理只解决三件事怎么把这套环境搭起来怎么把一次转录跑通以及中文识别不好、想换更大模型、想接进现有代码这三道坎怎么过。一、为什么是 LocalAI Whisper云服务的代价是数据出境。商用转录 API 按分钟计费接口稳定但每一秒音频都会经过对方的机房合同、录音、客服会话这类内容一旦外发合规审查往往直接卡住。本地方案反过来一次搭建所有音频处理都不出内网成本只付一次硬件费用。LocalAI 的取舍是慢半拍但全给你。它不如云端服务弹性大峰值并发有限换来的是接口和 OpenAI 的音频 API 保持一致客户端代码几乎不用改模型权重以 ggml 格式量化后的模型权重文件落盘在本地换机器就是拷文件。Whisper 模型家族里最小的 tiny 约 39M 参数base 约 74M 参数8GB 内存的机器跑 base 绑绑有余——精度对清晰人声足够嘈杂场景再往上调模型。二、最小可行路径三步跑通一次转录2.1 第 1 步把 LocalAI 跑起来有 Docker 就用 Docker一条命令启动docker run -p 8080:8080 --name local-ai -ti localai/localai:latest没有 GPU 就用上面的基础镜像有 NVIDIA 卡换成localai/localai:latest-gpu-nvidia-cuda-12并加上--gpus all。启动后浏览器打开http://localhost:8080能看到管理界面说明服务已就绪。2.2 第 2 步装一个 whisper 模型LocalAI 内置模型库里就有现成的 whisper-base 配置仓库里的gallery/whisper-base.yaml指定名字即可自动下载权重local-ai run whisper-base这行命令做了两件事生成模型配置backend 指向 whisper.cpp 引擎model参数指向权重文件名下载 ggml 格式的权重文件。下载完成会打印成功信息。想完全自定义也行——在 models 目录手写 YAML指定权重文件名即可参数只有两行。2.3 第 3 步发一条转录请求接口是/v1/audio/transcriptions参数风格与 OpenAI 一致。拿你手边的任意音频试curl http://localhost:8080/v1/audio/transcriptions \ -H Content-Type: multipart/form-data \ -F filemeeting.wav \ -F modelwhisper-base \ -F languagezh \ -F response_formatsrt把response_format换成json或verbose_json返回的是text全文加segments分段每段带起止时间后者适合做字幕。text、vtt、lrc也都支持。到这里一次完整的离线语音转文字就跑通了。三、按需进阶你接下来会遇到的坎3.1 中文识别效果不好转录参数怎么调language显式给zh中文音频让模型自动检测语言长段静音开头时经常猜错猜错之后整段用英文解码器跑偏。prompt塞上下文传一句包含专业词的引导语比如本次会议讨论的是订单履约流程解码会明显向你的领域词靠拢人名、产品名错字少一大截。分段异常用response_formatverbose_json排查看segments的时间轴是否连得上静音段被切碎了多半要换small模型。temperature保持默认 0转录任务调高温度等于鼓励模型自由发挥只会更乱。3.2 想换更大模型怎么办先说清楚代价模型参数量大致内存需求适合场景base74M约 1GB清晰人声、日常会议small244M约 2GB多人对话、带口音medium769M约 5GB长录音、高准确率要求large1.55B8GB 以上专业术语、多语种混杂换模型就是再装一个再调一次local-ai models install 模型名然后 curl 里的model参数改成新名字其他不变。建议先用 base 跑通流程确认准确率不够再升级别一上来就上 large。3.3 想把识别接进现有程序如果你已经在用 OpenAI SDK只改base_url这一处其他代码不动from openai import OpenAI client OpenAI(base_urlhttp://localhost:8080/v1, api_keynone) for name in [a.wav, b.wav, c.wav]: r client.audio.transcriptions.create( modelwhisper-base, filename, languagezh) print(name, -, r.text[:50])没有 SDK 依赖的环境直接 HTTP POST 也行请求就是第二节的 curl。长音频想边转边显示加-F streamtrue走 SSE 流式返回事件结构和 OpenAI 的流式一致。多人会议想区分谁在什么时候说话whisper 后端还支持diarize参数segments 里会带 speaker 字段。四、避坑清单现象请求返回找不到模型。原因模型没装成功或model参数和 YAML 里的name不一致大小写敏感。处理确认local-ai run那步执行成功名字逐字对照。现象输出为空或整段[BLANK_AUDIO]。原因文件无声、音轨是视频音轨但没转码或编码不支持。处理先用播放器确认有声输入侧支持 ffmpeg 能解的格式wav、mp3、ogg、flac、m4a拿不准就转成 16kHz 单声道 wav 再传。现象首次请求等很久之后变快。原因模型是第一次调用时才加载进内存。处理属正常现象追求低延迟可以在启动时预加载模型。现象中文输出夹杂英文单词或错字。原因语言没指定或音频里本身中英混杂。处理languagezh必填prompt补上术语表仍不理想就升到 small。现象启动 large 模型后内存告警甚至被系统杀掉。原因权重加运行缓冲超过可用内存。处理内存小于 16GB 就停在 small 或 medium。现象多人发言混在一段里无法区分。原因默认只输出纯文本流。处理whisper 后端加diarize参数segments 里会带说话人标签。五、下一步动作先别升级模型用 base 跑一份你手头十分钟以内的真实录音把返回的 JSON 分段逐句读一遍确认准确率够不够用。够用就把base_url指进现有代码收工不够用再装 small 对比同一份音频用结果说话。另外参数细节和更多后端faster-whisper、parakeet 等可以对照仓库里的官方文档docs/content/features/audio-to-text.md查证。【免费下载链接】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),仅供参考