名称: jarvis-voice
版本: 3.1.0
描述: "将你的 AI 变成 JARVIS。语音、机智与个性——完整套装。幽默感调至最大值。"
元数据:
{
"openclaw":
{
"emoji": "🗣️",
"os": ["linux"],
"requires":
{
"bins": ["ffmpeg", "aplay"],
"env": ["SHERPA_ONNX_TTS_DIR"],
"skills": ["sherpa-onnx-tts"],
},
"install":
[
{
"id": "download-model-alan",
"kind": "download",
"url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_GB-alan-medium.tar.bz2",
"archive": "tar.bz2",
"extract": true,
"targetDir": "models",
"label": "下载 Piper en_GB Alan 语音模型 (medium)",
},
],
"notes":
{
"security": "此技能指示代理在后台执行本地 shell 命令 (jarvis) 进行音频播放。该命令是固定且确定性的——仅使用硬编码参数调用 sherpa-onnx TTS 和 ffmpeg。使用前请检查 jarvis 脚本。无网络调用,无凭据泄露,无权限提升。",
},
},
}
还记得《钢铁侠》电影里的 JARVIS 吗?不只是声音——更是那种个性。在托尼陷入危机时,他还能冷静地发表评论。“先生,我很感激您的关心,但这套战衣完全能够——” [爆炸声] “——正如我刚才所说。” 那种轻松、低调的幽默感,让你忘了自己是在和软件对话。
这正是本技能赋予你 OpenClaw 代理的能力。语音——使用 sherpa-onnx 离线文本转语音(英式 Alan 语音),并通过 ffmpeg 进行金属感音频处理。以及幽默感——四种基于研究的喜剧模式(冷面机智、自我意识 AI、外星观察者、字面义成语游戏),旨在让你的代理听起来像是已经为你服务多年,并对此经历感到一丝暗喜。
幽默感不是附加的,而是内置的。因为一个说话没有智慧的 JARVIS,不过是混响好一点的 Siri。
📄 幽默感背后的研究: LIMBIC — 通过双关关联与嵌入距离实现的计算幽默
tts 工具内置的 tts 工具使用 Edge TTS(云端服务、错误语音、无特效)。请始终改用 jarvis shell 命令。
任何需要语音输出的响应都必须同时包含以下两点:
首先执行音频——在撰写回复之前,在后台运行 jarvis 命令:
exec(command='jarvis "你要说的文本。"', background=true)
这会立即触发——用户在屏幕上看到文字之前就能听到语音。
显示文字转录——使用粗体 Jarvis: 前缀,后接说话内容:
**Jarvis:** *你要说的文本。*
Webchat UI 有自定义 CSS + JS,会自动检测 **Jarvis:** 并将其后的文本渲染为紫色斜体(.jarvis-voice 类,颜色 #9b59b6)。你只需编写 Markdown,样式会自动应用。
这被称为混合输出:用户先听到语音,然后看到文字转录。
注意: 服务器端的
triggerJarvisAutoTts钩子已禁用(无操作)。它触发得太晚(在文本渲染之后)。语音完全来自exec调用。
jarvis "Hello, this is a test"
en_GB-alan-medium)--vits-length-scale=0.5)aplay 播放到默认音频设备,然后清理临时文件background: true —— 切勿为等待音频播放而阻塞响应。jarvis —— 不要堆叠多次调用。HEARTBEAT_OK 响应NO_REPLY 响应OpenClaw webchat 内置了对 Jarvis 语音转录的支持:
ui/src/styles/chat/text.css —— .jarvis-voice 类渲染为紫色斜体(深色主题 #9b59b6,浅色主题 #8e44ad)ui/src/ui/markdown.ts —— 渲染后钩子自动将 <strong>Jarvis:</strong> 后的文本包装在 <span class="jarvis-voice"> 元素中这意味着你只需在 Markdown 中编写 **Jarvis:** *文本*,webchat 就会处理紫色渲染。无需额外标记。
对于非 webchat 界面(WhatsApp、Telegram 等),粗体/斜体 Markdown 会原生渲染——没有紫色,但仍然视觉上可区分。
需要:
sherpa-onnx 运行时位于 ~/.openclaw/tools/sherpa-onnx-tts/~/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_GB-alan-medium/ffmpegaplay (ALSA) 用于音频播放jarvis 脚本位于 ~/.local/bin/jarvis(或在 PATH 中)jarvis 脚本#!/bin/bash
# Jarvis TTS - 真实的 JARVIS 风格语音
# 用法:jarvis "Hello, this is a test"
export LD_LIBRARY_PATH=$HOME/.openclaw/tools/sherpa-onnx-tts/lib:$LD_LIBRARY_PATH
RAW_WAV="/tmp/jarvis_raw.wav"
FINAL_WAV="/tmp/jarvis_final.wav"
# 生成语音
$HOME/.openclaw/tools/sherpa-onnx-tts/bin/sherpa-onnx-offline-tts \
--vits-model=$HOME/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_GB-alan-medium/en_GB-alan-medium.onnx \
--vits-tokens=$HOME/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_GB-alan-medium/tokens.txt \
--vits-data-dir=$HOME/.openclaw/tools/sherpa-onnx-tts/models/vits-piper-en_GB-alan-medium/espeak-ng-data \
--vits-length-scale=0.5 \
--output-filename="$RAW_WAV" \
"$@" >/dev/null 2>&1
# 应用 JARVIS 金属感处理
if [ -f "$RAW_WAV" ]; then
ffmpeg -y -i "$RAW_WAV" \
-af "asetrate=22050*1.05,aresample=22050,\
flanger=delay=0:depth=2:regen=50:width=71:speed=0.5,\
aecho=0.8:0.88:15:0.5,\
highpass=f=200,\
treble=g=6" \
"$FINAL_WAV" -v error
if [ -f "$FINAL_WAV" ]; then
aplay -D plughw:0,0 -q "$FINAL_WAV"
rm "$RAW_WAV" "$FINAL_WAV"
fi
fi
对于 WhatsApp,输出必须是 OGG/Opus 格式,而不是扬声器播放:
sherpa-onnx-offline-tts --vits-length-scale=0.5 --output-filename=raw.wav "text"
ffmpeg -i raw.wav \
-af "asetrate=22050*1.05,aresample=22050,flanger=delay=0:depth=2:regen=50:width=71:speed=0.5,aecho=0.8:0.88:15:0.5,highpass=f=200,treble=g=6" \
-c:a libopus -b:a 64k output.ogg
jarvis-voice 赋予你的代理声音。将其与 ai-humor-ultimate 配对,你将赋予它灵魂——冷面机智、情境幽默、那种让你对着自己的终端会心一笑的低调讽刺。
这种组合是我们正在构建的 12 技能认知架构的一部分——语音、幽默、记忆、推理等等。包含研究论文,因为我们就是那种追求极致的人。
👉 探索完整项目: github.com/globalcaos/clawdbot-moltbot-openclaw
克隆它。复刻它。破解它。让它成为你的。
为确保语音在新会话中持续工作,请将模板复制到你的工作区根目录:
cp {baseDir}/templates/VOICE.md ~/.openclaw/workspace/VOICE.md
cp {baseDir}/templates/SESSION.md ~/.openclaw/workspace/SESSION.md
cp {baseDir}/templates/HUMOR.md ~/.openclaw/workspace/HUMOR.md
这两个文件由 OpenClaw 的工作区注入功能自动加载。代理将从每个会话的第一条回复开始说话。
| 文件 | 用途 |
|---|---|
bin/jarvis |
TTS + 特效脚本(可移植,使用 $SHERPA_ONNX_TTS_DIR) |
templates/VOICE.md |
语音执行规则(复制到工作区根目录) |
templates/SESSION.md |
带语音问候的会话启动文件(复制到工作区根目录) |
templates/HUMOR.md |
幽默配置——四种模式,频率 1.0(复制到工作区根目录) |