SenseAudio-Let-Claw-Talk-Universal
当用户想要下面这些能力时,使用这个 skill:
- - 一直开着麦克风,开口就能和 AudioClaw 对话
- 不想切换到专门的 CLI 或 TUI,只要功能能跑
- 想在本机做持续语音问答、语音助手、免手打交互
- 想继续使用已经调通的 SenseAudio ASR 和 TTS
- 想在 macOS 和 Windows 上复用同一套语音助手逻辑
- 想按需开启 WeSpeaker 声纹验证,把后台模型常驻起来减少冷启动
高优先级触发说法:
- - 打开持续语音助手
- 开启持续监听语音模式
- 打开免手打语音模式
- 进入本机语音助手模式
- 帮我打开一直监听的语音助手
- 用
$senseaudio-let-claw-talk-universal 启动语音助手
不适合:
- - 只想转写单条语音
- 只想把一段文字转成语音
- 想做飞书消息内的一次性语音收发
Default behavior
这个 skill 默认:
- - 在 macOS 和 Windows 上都使用同一套持续监听主循环
- 默认优先使用
auto 录音后端:
- 如果
numpy + sounddevice + webrtcvad 可用,就走 Python 录音
- 如果在 macOS 上且 Python 录音不可用,就回退到原生 Swift 录音器
- - 导出的默认配置不会依赖 WeSpeaker、流式 TTS、状态音这些可选能力
- 用当前 skill 内置的 SenseAudio ASR 客户端做语音识别
- 用
audioclaw agent 跑对话 - 用当前 skill 内置的 SenseAudio TTS 客户端做语音播报,或用系统语音做本地兜底
- 导出的默认设置会先关闭 SenseAudio 流式 TTS,优先走整段播报,减少对
miniaudio 和流式链路调优的依赖 - 如果用户后面想启用流式 TTS,可以再手动打开
- 当前 skill 内置了常用音色目录和克隆音色登记,不依赖其他语音 skill
- 默认关闭状态提示音,减少平台差异和额外依赖
- 如果用户手动打开状态提示音,每次重新进入监听前,会先播一个轻提示音,告诉用户现在开始收音
- 默认启动时会先做一次自检:
- 检查 Python 解释器
- 检查录音后端依赖
- 检查 ASR / TTS API key
- 检查当前音色是否真的可用
- - 默认唤醒词是 INLINECODE5
- 默认睡眠词是 INLINECODE6
- 默认唤醒保持时间是
90 秒 - 默认启动后会先处于休眠状态,不会直接进入可对话态
- 休眠态默认会先走单独的唤醒识别模型,当前默认是 INLINECODE8
- 如果想改成更轻的唤醒模型,可以手动指定 INLINECODE9
- 默认语速是 INLINECODE10
- 导出的默认设置不会自动开启 WeSpeaker
- 导出的默认设置也不会默认开启流式 TTS
- 默认支持“播报时被新语音打断”
- 默认把打断敏感度调得更稳:
-
interrupt grace = 1.2s
-
interrupt min speech = 0.35s
-
interrupt threshold = -16dB
-
silence seconds = 1.6s
- - 默认会把回复整理成更简短、更口语化、更适合直接念出来的表达
- 默认会尽量借鉴更自然的陪伴式交互风格:
- 短句
- 少解释
- 少套话
- 被插话后优先顺着用户这句往下接
- - 默认会从
~/.audioclaw/workspace/state/voiceclaw_preferences.json 读取已记住的用户偏好 - 默认不会开启 WeSpeaker 声纹验证
- 如果开启 WeSpeaker:
- 会自动拉起后台常驻服务并预热模型
- 默认模型是
chinese
- 默认阈值是
0.72
- 后台状态和样本会保存在
~/.audioclaw/workspace/state/wespeaker
- 用户级 WeSpeaker 环境默认应放在
~/.audioclaw/workspace/tools/wespeaker/.venv
- 如果用户环境还没准备好,先看 INLINECODE20
环境要求
macOS 最小跑通环境
- - 已安装商汤输入法 AudioClaw,并且能找到 CLI:
-
/Applications/商汤输入法AudioClaw.app/Contents/Resources/claws/picoclaw/audioclaw-darwin-arm64
- 或
/Applications/商汤输入法AudioClaw.app/Contents/Resources/claws/picoclaw/audioclaw-darwin-amd64
- - 有可用的 INLINECODE23
- 已通过用户级凭据文件提供 SenseAudio key:
-
~/.audioclaw/workspace/state/senseaudio_credentials.json
- - 如果没有安装
numpy + sounddevice + webrtcvad,当前 skill 会优先回退到 macOS 原生 Swift 录音器 - 使用原生 Swift 录音器时,建议本机有可用的命令行开发工具:
- INLINECODE26
Windows 最小跑通环境
- - 已安装 Windows 版 AudioClaw,并且能找到内部 CLI:
-
C:\Program Files\AudioClaw\resources\claws\picoclaw\audioclaw.exe
-
Python 3.11 x64
- 或
Python 3.12 x64
- - Windows 不建议把
C:\Users\<用户名>\AppData\Local\Microsoft\WindowsApps\python.exe 当成真实 Python - 当前 Windows 版最小录音链路需要:
-
numpy
-
sounddevice
-
webrtcvad
-
setuptools
- INLINECODE35
推荐安装命令:
CODEBLOCK0
完整版服务环境
如果你想把这套 skill 开成更完整的桌面语音服务,建议补齐这些可选能力。
macOS / Windows 通用可选项:
-
miniaudio
- 建议单独准备用户级虚拟环境
- 不要塞进 skill 包
-
~/.audioclaw/workspace/state/senseaudio_credentials.json
- 或 INLINECODE38
WeSpeaker 完整环境建议:
-
Python 3.11
- macOS / Linux:
~/.audioclaw/workspace/tools/wespeaker/.venv
- Windows:
C:\Users\<用户名>\.audioclaw\workspace\tools\wespeaker\.venv
-
torch
-
torchaudio
-
soundfile
-
PyYAML
-
requests
-
onnxruntime
-
s3prl
-
openai-whisper
-
peft
- INLINECODE51
说明:
- - 当前导出包默认关闭 WeSpeaker
- 当前导出包默认关闭 SenseAudio 流式 TTS
- 这两项属于完整版增强能力,不影响最小跑通链路
- Windows 上如果说“录入我的声音”后明显卡很久,优先检查:
-
C:\Users\<用户名>\.audioclaw\workspace\state\wespeaker\service.log
- 以及 INLINECODE53
日志与排障
当前 skill 现在保留了 3 组用户级日志/状态文件:
-
~/.audioclaw/workspace/state/voiceclaw_runtime_state.json
-
~/.audioclaw/workspace/state/voiceclaw_runtime.log
- INLINECODE56
Windows 上对应路径是:
- - INLINECODE57
- INLINECODE58
- INLINECODE59
如果你遇到“聊着聊着突然听不到我说话了”,优先看:
常见判断方式:
- 更像是麦克风/VAD 没起录,先查录音环境和阈值
- 更像是录到了声音,但 ASR 没给出有效文本
- 更像是当前还在休眠态,没有命中唤醒词
- 再去看 INLINECODE65
Main command
默认最推荐直接用启动器,它会优先选择已经装好依赖的那套 Python,并带上更少依赖的默认参数:
CODEBLOCK1
Windows 可以直接运行:
CODEBLOCK2
说明:
- - Windows 端需要真实可用的 Python 解释器
- 推荐优先使用 INLINECODE66
- 如果系统里只有
C:\Users\<用户名>\AppData\Local\Microsoft\WindowsApps\python.exe 这种应用商店别名,启动器会直接提示你安装 Python,或手动设置 INLINECODE68 - 不建议把真实 SenseAudio key 写进 skill 包本身。更稳的做法是写到用户级文件:
-
C:\Users\<用户名>\.audioclaw\workspace\state\senseaudio_credentials.json
- 或用当前 skill 自带脚本写入:
INLINECODE70
如果要手动指定 Python,再用 SenseAudio TTS:
CODEBLOCK3
如果只想快速试运行,也可以先用系统播报:
CODEBLOCK4
默认启动后,先说:
CODEBLOCK5
再继续提问。
如果想让它立刻回到休眠,可以说:
CODEBLOCK6
如果想让它记住你的偏好,可以直接说:
CODEBLOCK7
如果想查看当前状态,可以直接说:
CODEBLOCK8
如果想开启或使用 WeSpeaker,可直接说:
CODEBLOCK9
说明:
- - 说
录入我的声音 后,现在默认只录 1 句来建档 - skill 会直接给出一条可照读的示例句,用户从下一句开始照读即可
- 开启后,后台会常驻预热,后续验证会更快
- 当前 WeSpeaker 是可选能力,不开就不会影响原来的持续语音助手流程
- 当前 skill 会优先过滤与最近播报内容高度相似的回录,避免把刚说过的话再次当成新的用户输入
- 如果上一轮播报被用户打断,当前 skill 不会额外加模型,也不会做复杂规则判断。
它只会把“上一轮回答播报到一半被打断了”这件事,用一句很轻的上下文告诉现有 agent,
让下一轮更自然地接话,避免重新铺垫上一整段。
如果想换音色,也可以直接说:
CODEBLOCK10
如果某个音色当前无权限或暂时不可用,skill 会优先保留当前可用音色,或者自动切到一个能正常播报的兜底音色。
一键启动:
CODEBLOCK11
如果要让 AudioClaw / OpenClaw 直接拉起这个长期语音模式,优先运行:
CODEBLOCK12
在 Windows 工具侧,优先运行:
CODEBLOCK13
原因:
- - 持续监听属于长期麦克风进程
- 不适合用
exec + nohup + & 在工具调用后台硬挂 - 更稳的做法是让 skill 直接打开一个新的终端窗口承载会话
- 这个启动器会按平台自动选择:
- macOS:Terminal +
osascript
- Windows:Python +
CREATE_NEW_CONSOLE
- Linux:常见 terminal emulator
Trigger-to-action rule
如果用户是在 AudioClaw / OpenClaw 里直接说:
- - “打开持续语音助手”
- “开启持续监听语音模式”
- “打开免手打语音模式”
- “进入本机语音助手模式”
- “打开本机语音助手”
不要只返回命令,也不要改用 nohup 后台启动。
也不要只回复“好,已进入。你直接说。”这类假状态切换。
优先直接执行:
CODEBLOCK14
如果当前运行环境是 Windows,优先执行:
CODEBLOCK15
不要在工具侧直接执行长期入口;工具调用更适合用 launch_*.py,它会拉起新终端后立刻返回 opened_terminal。
如果用户还补了偏好,再把参数附上,例如:
- - 唤醒词: INLINECODE78
- 打断播报: INLINECODE79
- 调试: INLINECODE80
这两个入口默认等价于:
- - INLINECODE81
- INLINECODE82
- INLINECODE83
- INLINECODE84
- INLINECODE85
- INLINECODE86
- INLINECODE87
- INLINECODE88
如果需要改默认值,可以在启动前设置:
CODEBLOCK16
如果想把流式模式升级成 miniaudio 的 MP3 解码播放,可选安装:
CODEBLOCK17
然后保持:
CODEBLOCK18
如果想强制只用这条后端,也可以显式传:
CODEBLOCK19
如果要启用唤醒词:
CODEBLOCK20
如果要默认开启 WeSpeaker 声纹验证:
CODEBLOCK21
如果用户环境还没装好,先按这个文件准备:
CODEBLOCK22
如果要关闭默认唤醒词:
CODEBLOCK23
如果要关闭默认睡眠词:
CODEBLOCK24
如果要启用播报打断:
CODEBLOCK25
如果想临时关闭默认打断:
CODEBLOCK26
What to adjust
如果用户说“容易误触发”或“环境噪音太大”,优先调这些参数:
- - INLINECODE90
- INLINECODE91
- INLINECODE92
如果用户想只测一轮,可以加:
CODEBLOCK27
如果用户想用现成音频文件做链路验证,可以加:
CODEBLOCK28
如果用户说“想先叫一声再开始对话”,优先加:
CODEBLOCK29
如果用户明确说“不需要唤醒词”或“直接开口就听”,优先加:
CODEBLOCK30
如果用户说“播报时我还想插话”,优先加:
CODEBLOCK31
Exit behavior
持续模式里:
- - 用户说“退出”“停止”“结束”会主动退出
- 用户说“
贾维斯休息”会主动进入休眠,但不会退出程序 - 或按
Ctrl+C 退出 - 如果开启了唤醒词,只有命中唤醒词或仍在唤醒窗口内时,当前这轮语音才会被送去对话
Runtime notes
- - 默认会复用
~/.audioclaw/workspace/state/senseaudio_credentials.json 里的 INLINECODE96 - 默认会把已记住的用户偏好保存在 INLINECODE97
- 默认会把当前运行状态摘要保存在 INLINECODE98
- INLINECODE99 现在自带当前 skill 内部的 SenseAudio ASR、SenseAudio TTS 和常用音色目录,不再依赖其他语音 skill
- 如果用户只要“实现功能”,不要再额外引导去做 TUI;直接启动这个 skill 的持续监听脚本
- 如果用户在意误触发,建议先不开
--interrupt-playback,先把阈值和唤醒词调顺 - 如果用户觉得播报被自己声音或外放误打断,优先加
--no-interrupt-playback,或调大 INLINECODE102
Resources
- 主入口,负责持续监听、ASR、agent 调用和语音播报
- 当前 skill 内置的 SenseAudio ASR 客户端
- 当前 skill 内置的 SenseAudio TTS 客户端
- 当前 skill 内置的常用音色目录和克隆音色登记
- macOS / Linux 命令行短入口
- 跨平台长期运行入口,负责设置默认环境并启动语音助手主循环
- 给 AudioClaw / OpenClaw 调用的跨平台稳定启动器,会按平台打开新的终端窗口并接管长期语音会话;Windows 端不再依赖 bat/ps1
- macOS 麦克风录音兜底实现
SenseAudio-Let-Claw-Talk-Universal
当用户想要下面这些能力时,使用这个 skill:
- - 一直开着麦克风,开口就能和 AudioClaw 对话
- 不想切换到专门的 CLI 或 TUI,只要功能能跑
- 想在本机做持续语音问答、语音助手、免手打交互
- 想继续使用已经调通的 SenseAudio ASR 和 TTS
- 想在 macOS 和 Windows 上复用同一套语音助手逻辑
- 想按需开启 WeSpeaker 声纹验证,把后台模型常驻起来减少冷启动
高优先级触发说法:
- - 打开持续语音助手
- 开启持续监听语音模式
- 打开免手打语音模式
- 进入本机语音助手模式
- 帮我打开一直监听的语音助手
- 用 $senseaudio-let-claw-talk-universal 启动语音助手
不适合:
- - 只想转写单条语音
- 只想把一段文字转成语音
- 想做飞书消息内的一次性语音收发
默认行为
这个 skill 默认:
- - 在 macOS 和 Windows 上都使用同一套持续监听主循环
- 默认优先使用 auto 录音后端:
- 如果 numpy + sounddevice + webrtcvad 可用,就走 Python 录音
- 如果在 macOS 上且 Python 录音不可用,就回退到原生 Swift 录音器
- - 导出的默认配置不会依赖 WeSpeaker、流式 TTS、状态音这些可选能力
- 用当前 skill 内置的 SenseAudio ASR 客户端做语音识别
- 用 audioclaw agent 跑对话
- 用当前 skill 内置的 SenseAudio TTS 客户端做语音播报,或用系统语音做本地兜底
- 导出的默认设置会先关闭 SenseAudio 流式 TTS,优先走整段播报,减少对 miniaudio 和流式链路调优的依赖
- 如果用户后面想启用流式 TTS,可以再手动打开
- 当前 skill 内置了常用音色目录和克隆音色登记,不依赖其他语音 skill
- 默认关闭状态提示音,减少平台差异和额外依赖
- 如果用户手动打开状态提示音,每次重新进入监听前,会先播一个轻提示音,告诉用户现在开始收音
- 默认启动时会先做一次自检:
- 检查 Python 解释器
- 检查录音后端依赖
- 检查 ASR / TTS API key
- 检查当前音色是否真的可用
- - 默认唤醒词是 贾维斯
- 默认睡眠词是 贾维斯休息
- 默认唤醒保持时间是 90 秒
- 默认启动后会先处于休眠状态,不会直接进入可对话态
- 休眠态默认会先走单独的唤醒识别模型,当前默认是 sense-asr-deepthink
- 如果想改成更轻的唤醒模型,可以手动指定 --wake-asr-model sense-asr-lite
- 默认语速是 1.25
- 导出的默认设置不会自动开启 WeSpeaker
- 导出的默认设置也不会默认开启流式 TTS
- 默认支持播报时被新语音打断
- 默认把打断敏感度调得更稳:
- interrupt grace = 1.2s
- interrupt min speech = 0.35s
- interrupt threshold = -16dB
- silence seconds = 1.6s
- - 默认会把回复整理成更简短、更口语化、更适合直接念出来的表达
- 默认会尽量借鉴更自然的陪伴式交互风格:
- 短句
- 少解释
- 少套话
- 被插话后优先顺着用户这句往下接
- - 默认会从 ~/.audioclaw/workspace/state/voiceclaw_preferences.json 读取已记住的用户偏好
- 默认不会开启 WeSpeaker 声纹验证
- 如果开启 WeSpeaker:
- 会自动拉起后台常驻服务并预热模型
- 默认模型是 chinese
- 默认阈值是 0.72
- 后台状态和样本会保存在 ~/.audioclaw/workspace/state/wespeaker
- 用户级 WeSpeaker 环境默认应放在 ~/.audioclaw/workspace/tools/wespeaker/.venv
- 如果用户环境还没准备好,先看 references/wespeaker
usersetup.md
环境要求
macOS 最小跑通环境
- - 已安装商汤输入法 AudioClaw,并且能找到 CLI:
- /Applications/商汤输入法AudioClaw.app/Contents/Resources/claws/picoclaw/audioclaw-darwin-arm64
- 或 /Applications/商汤输入法AudioClaw.app/Contents/Resources/claws/picoclaw/audioclaw-darwin-amd64
- - 有可用的 python3
- 已通过用户级凭据文件提供 SenseAudio key:
- ~/.audioclaw/workspace/state/senseaudio_credentials.json
- - 如果没有安装 numpy + sounddevice + webrtcvad,当前 skill 会优先回退到 macOS 原生 Swift 录音器
- 使用原生 Swift 录音器时,建议本机有可用的命令行开发工具:
- xcode-select --install
Windows 最小跑通环境
- - 已安装 Windows 版 AudioClaw,并且能找到内部 CLI:
- C:\Program Files\AudioClaw\resources\claws\picoclaw\audioclaw.exe
- Python 3.11 x64
- 或 Python 3.12 x64
- - Windows 不建议把 C:\Users\<用户名>\AppData\Local\Microsoft\WindowsApps\python.exe 当成真实 Python
- 当前 Windows 版最小录音链路需要:
- numpy
- sounddevice
- webrtcvad
- setuptools
- C:\Users\<用户名>\.audioclaw\workspace\state\senseaudio_credentials.json
推荐安装命令:
powershell
py -3 -m pip install --upgrade pip setuptools
py -3 -m pip install numpy sounddevice webrtcvad
完整版服务环境
如果你想把这套 skill 开成更完整的桌面语音服务,建议补齐这些可选能力。
macOS / Windows 通用可选项:
- miniaudio
- 建议单独准备用户级虚拟环境
- 不要塞进 skill 包
- ~/.audioclaw/workspace/state/senseaudio_credentials.json
- 或 C:\Users\<用户名>\.audioclaw\workspace\state\senseaudio_credentials.json
WeSpeaker 完整环境建议:
- Python 3.11
- macOS / Linux: ~/.audioclaw/workspace/tools/wespeaker/.venv
- Windows: C:\Users\<用户名>\.audioclaw\workspace\tools\wespeaker\.venv
- torch
- torchaudio
- soundfile
- PyYAML
- requests
- onnxruntime
- s3prl
- openai-whisper
- peft
- wespeaker
说明:
- - 当前导出包默认关闭 WeSpeaker
- 当前导出包默认关闭 SenseAudio 流式 TTS
- 这两项属于完整版增强能力,不影响最小跑通链路
- Windows 上如果说录入我的声音后明显卡很久,优先检查:
- C:\Users\<用户名>\.audioclaw\workspace\state\wespeaker\service.log
- 以及 voiceclaw_runtime.log
日志与排障
当前 skill 现在保留了 3 组用户级日志/状态文件:
- ~/.audioclaw/workspace/state/voiceclaw
runtimestate.json
- ~/.audioclaw/workspace/state/voiceclaw_runtime.log
- ~/.audioclaw/workspace/state/voiceclaw
agenterror.log
Windows 上对应路径是:
- - C:\Users\<用户名>\.audioclaw\workspace\state\voiceclawruntimestate.json
- C