乐于分享
好东西不私藏

OpenClaw技能故事 Day069 | sherpa-onnx-tts

OpenClaw技能故事 Day069 | sherpa-onnx-tts

OpenClaw技能故事 Day069 | sherpa-onnx-tts

林晓坐在书桌前,窗外的夜色已经深沉。作为科技伦理研究员,她刚刚整理完一份关于AI语音合成伦理问题的报告草稿,正准备为明天的演讲准备配图。

“这段关于离线语音合成的内容,如果能配上一段实际的声音演示,效果会好很多。”她自言自语道,手指在键盘上轻轻敲了几下。

报告的第五章,她深入探讨了云端TTS服务带来的隐私隐忧——每一次语音合成请求,都可能将敏感文本上传到第三方服务器。读者只能看到冰冷的论述,却无法直观感受”本地离线语音合成”的实际价值。

她打开OpenClaw技能列表,在搜索框中输入”tts”,一个名字吸引了她的注意:sherpa-onnx-tts

发现问题:云端TTS的隐忧

林晓点开了技能说明。sherpa-onnx-tts 是一个基于 sherpa-onnx 运行时的本地离线文本转语音工具,支持 macOS、Linux、Windows 三大平台,最关键的是——完全离线运行,无需任何云端API调用

“这正是我报告里提到的理想方案。”林晓眼前一亮。

她回想起上个月的一次调研:某知名云端TTS服务,在用户协议中明确写道”上传的文本可能被用于模型优化”。这意味着,当你让AI读出一段包含身份证号、家庭住址、商业机密的内容时,这些信息可能已经离开了你的掌控范围。

而 sherpa-onnx-tts 的核心理念恰恰相反——一切都在本地完成。sherpa-onnx 是一个开源的语音处理框架,支持 ONNX 格式的机器学习模型在本地推理,无需联网,无需API密钥,无需担心数据泄露。

开发技能:从0到1的封装

OpenClaw 对 sherpa-onnx-tts 的封装相当用心。

首先是运行时管理。技能提供了三个平台的运行时下载选项:macOS 的 universal2 版本、Linux x64 版本、Windows x64 版本,均来自 sherpa-onnx 的官方 GitHub Release。下载后自动解压到 ~/.openclaw/tools/sherpa-onnx-tts/runtime,整洁有序。

其次是语音模型管理。默认提供的模型是 vits-piper-en_US-lessac-high,一个高质量的英语女声模型,同样通过技能安装流程自动下载解压到 models 目录。如果需要其他语言或音色,用户可以自行从 sherpa-onnx 的 tts-models 发布页下载更多模型。

配置也非常简洁,只需在 ~/.openclaw/openclaw.json 中设置两个环境变量:

{
  skills: {
    entries: {
      "sherpa-onnx-tts": {
        env: {
          SHERPA_ONNX_RUNTIME_DIR: "~/.openclaw/tools/sherpa-onnx-tts/runtime",
          SHERPA_ONNX_MODEL_DIR: "~/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high"
        }
      }
    }
  }
}

技能还提供了一个友好的 wrapper 脚本,位于 {baseDir}/bin/sherpa-onnx-tts,直接调用即可生成语音,无需记忆复杂的命令行参数。

核心功能:一行命令,离线发声

林晓试着运行了一次:

sherpa-onnx-tts -o ./demo.wav "Hello from local TTS."

不到两秒钟,一段清晰的英语语音便保存到了 demo.wav 文件中。她戴上耳机播放——音质出乎意料地自然,语调和节奏都相当流畅,完全不像是一个完全离线运行的模型所能达到的效果。

sherpa-onnx-tts 支持几个实用的自定义选项:

  • --model-file:当模型目录中有多个 .onnx 文件时,可以指定使用哪一个
  • --tokens-file:自定义 token 文件路径
  • --data-dir:覆盖默认的数据目录
  • -o:指定输出 WAV 文件路径

对于中文用户,sherpa-onnx 的模型库中也包含多个中文语音模型,只需下载对应模型并调整 SHERPA_ONNX_MODEL_DIR 即可切换到中文发音。

实战回响:演讲中的惊艳一刻

第二天,林晓的演讲如期举行。

当她讲到”离线语音合成如何保护隐私”这一章节时,她没有只展示PPT上的文字说明,而是当场运行了一段演示:

sherpa-onnx-tts -o /tmp/demo.wav "这段文字包含敏感信息:我的身份证号是123456789012345678,家庭住址是北京市海淀区中关村南大街5号。这段内容从未离开过我的电脑。"

会场里响起清晰自然的语音,而她随后展示的网络监控工具上,没有任何对外连接的记录。

“这就是本地离线TTS的力量。”她说道,”你的数据,始终在你的机器上。”

台下响起了掌声。有听众事后找到她:”这个演示太有说服力了,我回去就准备部署一个。”

使用方法:三步上手

林晓在演讲结束后,整理了一份简易上手指南:

第一步:安装技能
在 OpenClaw 中通过技能管理安装 sherpa-onnx-tts,运行时会自动下载 Linux x64 运行时和默认的英语语音模型。

第二步:配置环境变量
编辑 ~/.openclaw/openclaw.json,填入运行时和模型路径(安装时已自动配置,通常无需手动修改)。

第三步:生成语音

sherpa-onnx-tts -o output.wav "你想要转成语音的文本内容"

如果需要中文语音,访问 sherpa-onnx tts-models[1] 下载中文模型,解压后更新 SHERPA_ONNX_MODEL_DIR 即可。

独特价值:隐私至上,离线为王

与 OpenClaw 已有的 sag(ElevenLabs TTS)和 tts 工具相比,sherpa-onnx-tts 有着鲜明的差异化定位:

特性 sherpa-onnx-tts sag (ElevenLabs) tts (通用)
离线运行 ✅ 完全离线 ❌ 需联网 取决于后端
隐私保护 ✅ 数据不出本机 ⚠️ 上传云端 ⚠️ 视服务商而定
音质 良好(VITS Piper) 优秀(ElevenLabs) 视模型而定
多语言 ✅ 多模型可选 ✅ 原生支持 视模型而定
安装复杂度 中等(需下载模型) 低(API密钥)

对于需要处理敏感内容的场景——法律文件、医疗记录、商业机密、个人隐私——sherpa-onnx-tts 是不可替代的选择。它让”语音合成”回归到了最本质的状态:在你的设备上,用你的算力,处理你的数据

明日预告

明天,林晓将探索一个新的技能,继续她的 OpenClaw 技能之旅。敬请期待 OpenClaw技能故事 Day070


OpenClaw技能故事系列,每天讲述一个 OpenClaw 技能的诞生与应用,用故事连接技术与人文。

引用链接

[1]sherpa-onnx tts-models: https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models