loudkit 是一个在自有硬件上运行的本地文本转语音工具,由 loudreader 开发,采用 Apache-2.0 许可证。它最初服务于阅读应用 LoudReader,作为其语音引擎。
主要能力
loudkit 提供 28 种声音,覆盖 10 种语言:英语、西班牙语、法语、德语、意大利语、波兰语、葡萄牙语、荷兰语、瑞典语和丹麦语。英语拥有 10 种声音,其余每种语言有 2 种。声音来自为语音技术捐赠的录音,或 CC0、CC-BY 语料库;VOICES.md 记录了每个声音的来源、许可证和同意依据。
它支持声音克隆:使用 5 到 10 秒的单人录音,可生成约 150 KB 的可移植声音配置文件。录音需为你自己拥有或已获授权使用的内容。默认克隆方式会在停顿处剪切录音并在结尾填充静音;Python 中的 lk.enroll(...) 以及各移植版本中的 enroll 会保留原始录音,如需获得 loudkit clone 的效果,可在 Python 中向 lk.enroll 传入 end_in_silence=True。
模型方面,loudreader/loudr-1 是默认模型,loudreader/loudr-1-turbo 速度更快但听起来略不自然。两者都可在所有后端和五种 SDK 中运行,通过传给 load 的字符串选择模型。首次运行会下载 747 MB 的模型和 28 种声音,之后即可离线运行。
SDK 与使用方式
loudkit 提供 Python、Swift、Go、Rust 和 TypeScript 原生 SDK。各移植版本按名称加载模型:首次调用会下载并校验模型,后续调用离线运行。Swift 版本基于 CoreML,支持 macOS 14 或 iOS 17;Go 和 Rust 版本基于 ONNX Runtime,需要机器上安装 libonnxruntime;TypeScript 版本基于 ONNX Runtime,要求 Node 20。五个实现均通过同一套一致性测试。
Python 使用示例:speak 默认写出 out.wav,--play 用系统播放器播放,-o hello.wav 指定文件名。其他英语声音用法相同,例如 --voice kathleen 或 --voice henry。除非传入 --language,否则声音使用自己的语言朗读文本。engine.voices() 列出 28 个名称,所有声音都在两个模型下载中并可按名称加载。synthesize 会将长文本拆分为块并返回一个波形;engine.stream(...) 逐块生成相同音频,因此可以提前开始播放。
服务与集成
loudkit 可以跨多个请求保持一个已加载的引擎,提供以下服务方式:
- loudkit serve:HTTP 服务器,包含 loudkit 自有路由、/v1/synthesize/stream 上的 Server-Sent Events 流式传输,以及返回完整话语的 OpenAI 兼容 /v1/audio/speech。使用 OpenAI 语音 API 的智能体(如 Hermes Agent 和 OpenClaw)仅通过配置即可连接。
- loudkit serve --grpc:同样的引擎,背后是带背压的类型化 schema。
- loudkit serve --mcp:基于 stdio 的 MCP 服务器,供智能体宿主使用(预览版)。 此外还有用于 Linux 屏幕阅读器的 Speech Dispatcher 模块(位于 integrations/)以及服务器的 Docker 镜像和 compose 配置。
输出与验证
默认情况下,从 Python 保存的 WAV 和服务器返回的 WAV 回复都携带一个无符号、机器可读的备注,说明音频是如何生成的,包括模型、声音、种子和后端,并包含音频的校验和。loudkit verify 可读取该备注。Go、Rust、JS 和 Swift 移植版本写入不含备注的普通 PCM。该备注不是 C2PA:没有任何签名,C2PA 工具也不会读取它。
限制
loudkit 是一个推理工具包,不提供账户、计费、多租户、模型训练或情绪控制。公开部署时需自行添加身份验证、速率限制和 TLS。维护者会关闭请求帮助进行未披露的冒充、绕过声音认证或从生成音频中剥离备注的 issue 和 pull request。
在评估方面,只有英语经过人工听测;其他九种语言有自动化检查,但没有母语者评审。
性能方面,根据 0.1.1 版本在 2026-09-06 的测量,批量工作负载下 token 生成器在 RTX 3090 上使用 loudr-1 时,批大小 1 可达 16.7 倍聚合吞吐量,批大小 64 可达 57.3 倍;使用 loudr-1-turbo 时为 42.0 倍到 155.0 倍。最高测量结果为 A100 上批大小 64 的 turbo 达到 223.6 倍(loudr-1 为 85.3 倍)。这些数字来自 research/bench_batch.py,它通过 token 生成器重放录制的 token 序列;采样、预填充和渲染不在计时循环内,因此这些数字既不是单请求延迟,也不是端到端 RTF。完整命令、硬件和注意事项见 Benchmarks。