news 2026/9/29 3:34:40

用audio.cpp server搭建TTS/ASR API服务:OpenAI兼容接口完整实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用audio.cpp server搭建TTS/ASR API服务:OpenAI兼容接口完整实战指南

用audio.cpp server搭建TTS/ASR API服务:OpenAI兼容接口完整实战指南

【免费下载链接】audio.cppAn all-in-one, pure C++ inference engine for audio models, powered by ggml. Supports TTS, STT, VAD, voice conversion, music generation, and more, with highly optimized performance. No Python dependency.项目地址: https://gitcode.com/gh_mirrors/au/audio.cpp

audio.cpp是基于 ggml 的纯 C++ 音频模型推理引擎,无需任何 Python 依赖。它内置的audiocpp_server可以把本地的 TTS(文本转语音)和 ASR(语音识别)模型一键暴露为OpenAI 兼容的 HTTP 接口——POST /v1/audio/speech和POST /v1/audio/transcriptions,现有 OpenAI SDK 或任何标准 HTTP 客户端基本都能直接接入。本文带你从零完成构建、配置模型、启动服务并调通 TTS/ASR 两大接口,是一套开箱即用的本地语音 API 服务方案。

为什么选择 audio.cpp server

相比"Python 脚本 + 各种依赖"的传统本地部署路线,audio.cpp server 有几个明显优势:

优势说明
🚀 零 Python 依赖整个服务端是一个原生二进制,部署到 Docker / 裸机都极简
🔌 OpenAI 兼容/v1/audio/speech、/v1/audio/transcriptions对齐 OpenAI 约定,客户端几乎零改造
⚡ 高性能CUDA 优化路径,多个 TTS 路线实测比 Python 官方实现快 1.8x~8x,端到端延迟降低 45%~85%
🧩 会话复用每个模型保持一个常驻会话,重复请求复用 graph/缓存,避免重复建图开销
🖥 内置 WebUI可选启动浏览器界面,直接试听、上传录音,方便调试
📦 80+ 模型家族覆盖 TTS、语音克隆、ASR、说话人分离、VAD 等任务

第一步:构建 audiocpp_server

克隆仓库并启用你打算使用的推理后端(CUDA 为官方优化路径,CPU 始终可用):

git clone https://gitcode.com/gh_mirrors/au/audio.cpp cd audio.cpp cmake -S . -B build -DENGINE_ENABLE_CUDA=ON cmake --build build --parallel --target audiocpp_server

构建参数速查:

参数用途
-DENGINE_ENABLE_CUDA=ONNVIDIA GPU(推荐,性能最佳)
-DENGINE_ENABLE_VULKAN=ONAMD / 跨厂商 GPU
-DENGINE_ENABLE_METAL=ONApple Silicon
-DAUDIOCPP_BUILD_NATIVE_MODEL_MANAGER=ON开启 WebUI 的模型下载与动态管理

💡 详细构建与模式说明见 app/server/README.md。

第二步:编写 server.json 配置文件

服务通过一份 JSON 声明监听地址、后端和要加载的模型。仓库提供了现成模板 app/server/example.json,核心结构如下:

{ "host": "127.0.0.1", "port": 8080, "backend": "cuda", "lazy_load": true, "models": [ { "id": "pocket-tts", "family": "pocket_tts", "path": "/path/to/models/pocket-tts", "task": "tts", "mode": "offline", "default_voice_preset": { "voice_id": "alba" } }, { "id": "qwen3-asr", "family": "qwen3_asr", "path": "/path/to/models/Qwen3-ASR-0.6B", "task": "asr", "mode": "offline" } ] }

几个关键配置项:

  • id:模型在接口请求中的"名字",客户端调用model字段时填它;
  • family:模型家族名,决定使用哪套推理实现(可用audiocpp_cli --list-loaders查看);
  • lazy_load: true:启动时只注册模型,首次请求时才真正加载——多模型共存时能显著缩短启动时间、降低显存峰值;
  • mode:offline或streaming。流式 ASR/TTS 需要选支持 streaming 的模型,完整示例见 app/server/streaming_example.json;
  • max_loaded_models/idle_unload_ms:分别限制常驻显存上限和空闲卸载时间,显存紧张时建议开启。

模型家族与任务对应关系可参考 docs/tts.md(TTS 列表)和 docs/asr.md(ASR 列表)。

第三步:启动服务并验证

build/bin/audiocpp_server --config server.json

启动后先用健康检查和模型列表接口验证:

curl http://127.0.0.1:8080/health curl http://127.0.0.1:8080/v1/models

/v1/models返回 OpenAI 风格的模型条目,你可以把id直接填进任意 OpenAI SDK 的model参数。如果启用了 UI,浏览器打开http://127.0.0.1:8080还能直接试听与传录音(见 webui/README.md)。

调通 TTS 接口:/v1/audio/speech

这是与 OpenAI TTS 完全同构的接口,默认返回audio/wav:

curl http://127.0.0.1:8080/v1/audio/speech \ -H 'Content-Type: application/json' \ -o out.wav \ -d '{ "model": "pocket-tts", "input": "audio.cpp is serving this request.", "max_tokens": 96, "seed": 1234 }'

常见可选字段

字段作用
voice选择配置好的声音预设或voice_dir音色库中的音色
voice_ref声音克隆参考音频,支持服务器本地路径、{"type":"path"}或{"type":"base64"}内联 WAV
reference_text参考音频对应的文本(克隆时提高相似度)
speed语速倍数(模型支持时生效)
response_format默认 wav;"json"返回 base64 WAV

两个实用技巧:

  1. 声音预设:在模型配置里写default_voice_preset,客户端就可以省略voice_ref,每次请求自动使用同一音色,非常适合做固定"播报员"场景;
  2. 音色库voice_dir:把多个.wav音色放到一个目录,请求里传"voice": "demo_01_man"即可克隆,GET /v1/audio/voices?model=<id>可以列出全部可用音色,方便前端做音色下拉框。

调通 ASR 接口:/v1/audio/transcriptions

同样对齐 OpenAI Whisper API 约定,支持两种请求方式:

方式一:JSON + 服务器本地路径(模型和音频都在同一台机器上时最简单):

curl http://127.0.0.1:8080/v1/audio/transcriptions \ -H 'Content-Type: application/json' \ -d '{ "model": "qwen3-asr", "audio": "/path/to/input.wav" }'

方式二:multipart 文件上传(Open WebUI 等真实客户端的标准用法,音频不落盘、在内存中解码):

curl http://127.0.0.1:8080/v1/audio/transcriptions \ -F model=qwen3-asr \ -F language=en \ -F file=@/path/to/input.wav

对于mode: "streaming"的流式 ASR 模型,追加-F stream=true即可收到 OpenAI 风格的 SSE 事件流:先是一串transcript.text.delta增量文本,最后一条transcript.text.done携带完整转写,适合长音频降低首字等待。

📌 需要词级时间戳、分段或说话人标签时,改用扩展接口POST /v1/audio/transcriptions/details,普通接口的响应结构保持不变。

进阶能力一览

接口用途
POST /v1/batches/transcriptions多个 WAV 走同一批离线推理(模型需支持原生 batch),SSE 逐条返回结果
POST /v1/audio/transcriptions/live麦克风 PCM 边采边传、边说边出字,配合 ffmpeg 一行管道即可实现实时听写
POST /v1/audio/alignments强制对齐:已知文本 + 音频,返回词级时间戳
POST /v1/audio/speech/live语音到语音模型的实时接入端点
POST /v1/tasks/unload_models手动卸载指定模型释放显存,下次请求自动透明重载

完整端点说明见 app/server/README.md。

性能表现:长会话复用是最大亮点

由于每个模型保持一个常驻会话,audio.cpp server 在"长生命周期会话"下优势尤其明显——下图展示了多个 TTS/ASR 模型相对 Python 官方实现的推理加速比,PocketTTS、Qwen3 系普遍达到 2x~3x 以上:

而在"一次性冷启动"场景下,首次请求虽然包含模型加载与建图成本,多数模型仍明显快于 Python 路线(Parakeet-TDT 甚至接近 13x):

实际部署建议:

  • 🔥 保持lazy_load: true,让显存在首次请求时才被占用;
  • 🧮 显存不够时设max_loaded_models: 1,超出上限的模型会自动 LRU 换出;
  • ⏱ 长任务(如批量转写)注意busy_timeout_ms:同一模型的请求是串行锁执行的,超时后返回 503 供客户端重试,避免请求无限排队。

总结

用 audio.cpp server 搭建一套 OpenAI 兼容的 TTS/ASR API 服务,只需要三步:构建(两条 cmake 命令)→配置(一份声明 TTS/ASR 模型的 server.json)→启动(一条命令),即可获得/v1/audio/speech、/v1/audio/transcriptions等标准端点,外加流式转写、批量处理、声音克隆预设等生产级特性——全部零 Python 依赖。

常用资料索引:

  • 服务端完整文档:app/server/README.md
  • 配置示例:app/server/example.json、app/server/streaming_example.json
  • TTS 模型手册:docs/tts.md
  • ASR 模型手册:docs/asr.md
  • CLI 用法:docs/usage.md
  • WebUI 说明:webui/README.md

【免费下载链接】audio.cppAn all-in-one, pure C++ inference engine for audio models, powered by ggml. Supports TTS, STT, VAD, voice conversion, music generation, and more, with highly optimized performance. No Python dependency.项目地址: https://gitcode.com/gh_mirrors/au/audio.cpp

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 3:33:44

JavaWeb实战:基于SSM的商品预购平台设计与实现

每年毕业季总能看到一帮人在选题上反复横跳&#xff0c;Java方向的尤其多。今天想聊的这个项目——“基于Web的商品预购平台”&#xff0c;是我个人非常推荐的一个毕设方向。它没有复杂的推荐算法&#xff0c;也没有海量数据处理的压力&#xff0c;但它把Web开发的主干技术全都…

作者头像 李华
网站建设 2026/9/29 3:33:13

Makepad Agent Runbook:AI 代理在 Makepad 仓库中的协同开发工作流

前端UI组件3D渲染跨平台游戏开发 【免费下载链接】makepad Makepad is a creative software development platform for Rust that compiles to wasm/webGL, osx/metal, windows/dx11 linux/opengl 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ma/makepad 点击查看 免…

作者头像 李华
网站建设 2026/9/29 3:32:31

VScode+Latex Workshop 配 TaoToken:BibTex 文献管理配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 3:31:54

计算机基础试题填空题PDF:高频考点与三轮复习法

简介&#xff1a;计算机基础知识点填空题及答案整理&#xff0c;面向计算机专业学生、备考计算机等级考试及自学入门者&#xff0c;旨在通过填空练习系统检验对计算机核心概念的掌握程度。内容覆盖硬件系统与软件系统、主机与 CPU 组成、计算机六大分类、五大应用领域、总线结构…

作者头像 李华