Local text-to-speech (TTS) and speech-to-text (STT) using FluidAudio on Apple Silicon. Sub-second voice synthesis and transcription running entirely on-device via the Apple Neural Engine. Use when setting up local voice capabilities, voice assistant integration, or replacing cloud TTS/STT services.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install local-voice或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install local-voice⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/local-voice/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: local-voice description: Local text-to-speech (TTS) and speech-to-text (STT) using FluidAudio on Apple Silicon. Sub-second voice synthesis and transcription running entirely on-device via the Apple Neural Engine. Use when setting up local voice capabilities, voice assistant integration, or replacing cloud TTS/STT services. ---
Sub-second local voice AI for Apple Silicon Macs using FluidAudio's CoreML models.
brew install espeak-ng
cd /path/to/skill/sources
swift build -c release
mkdir -p ~/clawd/bin
cp .build/release/StellaVoice ~/clawd/bin/
cp -R .build/arm64-apple-macosx/release/ESpeakNG.framework ~/clawd/bin/
install_name_tool -add_rpath @executable_path ~/clawd/bin/StellaVoice
cat > ~/Library/LaunchAgents/com.stella.tts.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.stella.tts</string>
<key>ProgramArguments</key>
<array>
<string>$HOME/clawd/bin/StellaVoice</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>$HOME/.clawdbot/logs/stella-tts.log</string>
<key>StandardErrorPath</key>
<string>$HOME/.clawdbot/logs/stella-tts.err.log</string>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.stella.tts.plist
The daemon listens on http://127.0.0.1:18790:
# Simple text to WAV
curl -X POST http://127.0.0.1:18790/synthesize -d "Hello world" -o output.wav
# With speed control (0.5-2.0)
curl -X POST "http://127.0.0.1:18790/synthesize?speed=1.2" -d "Fast!" -o output.wav
# JSON endpoint
curl -X POST http://127.0.0.1:18790/synthesize/json \
-H "Content-Type: application/json" \
-d '{"text": "Hello", "speed": 1.0, "deEss": true}'
curl -X POST http://127.0.0.1:18790/transcribe \
--data-binary @audio.wav \
-H "Content-Type: audio/wav"
# Returns: {"text": "transcribed text"}
curl http://127.0.0.1:18790/health
# Returns: ok
Default voice is af_sky. Change by modifying the source code.
Top Kokoro voices (American female):
af_heart (A grade) - warm, naturalaf_bella (A-) - expressiveaf_sky (C-) - clear, lightAll 54 voices: See references/VOICES.md
speed=0.8 → Calm, relaxedspeed=1.0 → Natural pacespeed=1.2 → Energetic, upbeat! → Excited tone? → Rising intonation. → Neutral, falling... → Pauses<phoneme ph="kəkˈɔɹO">Kokoro</phoneme>
<sub alias="Doctor">Dr.</sub>
<say-as interpret-as="date">2024-01-15</say-as>
See scripts/stella-tts.sh for a convenient wrapper:
scripts/stella-tts.sh "Hello world" output.wav
scripts/stella-tts.sh "Hello world" output.mp3 # Auto-converts
For voice assistants, update your voice proxy to use local endpoints:
// STT
const response = await fetch('http://127.0.0.1:18790/transcribe', {
method: 'POST',
headers: { 'Content-Type': 'audio/wav' },
body: audioData
});
const { text } = await response.json();
// TTS
const audio = await fetch('http://127.0.0.1:18790/synthesize', {
method: 'POST',
body: textToSpeak
});
Library not loaded (ESpeakNG)
install_name_tool -add_rpath @executable_path /path/to/binarySlow first request
x86 vs ARM
uname -m (should show arm64)The daemon source is in sources/ directory. It's a Swift package using:
Rebuild after modifying:
cd sources && swift build -c release安装 Local Voice (FluidAudio TTS/STT) 后,可以对 AI 说这些话来触发它
Help me get started with Local Voice (FluidAudio TTS/STT)
Explains what Local Voice (FluidAudio TTS/STT) does, walks through the setup, and runs a quick demo based on your current project
Use Local Voice (FluidAudio TTS/STT) to local text-to-speech (TTS) and speech-to-text (STT) using FluidAudi...
Invokes Local Voice (FluidAudio TTS/STT) with the right parameters and returns the result directly in the conversation
What can I do with Local Voice (FluidAudio TTS/STT) in my design & creative workflow?
Lists the top use cases for Local Voice (FluidAudio TTS/STT), with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/local-voice/ 目录(个人级,所有项目可用),或 .claude/skills/local-voice/(项目级)。重启 AI 客户端后,用 /local-voice 主动调用,或让 AI 根据上下文自动发现并使用。
Local Voice (FluidAudio TTS/STT) 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Local Voice (FluidAudio TTS/STT) 可免费安装使用。请查阅仓库了解许可证信息。
Local text-to-speech (TTS) and speech-to-text (STT) using FluidAudio on Apple Silicon. Sub-second voice synthesis and transcription running entirely on-device via the Apple Neural Engine. Use when setting up local voice capabilities, voice assistant integration, or replacing cloud TTS/STT services.
Automate my design & creative tasks using Local Voice (FluidAudio TTS/STT)
Identifies repetitive steps in your workflow and sets up Local Voice (FluidAudio TTS/STT) to handle them automatically
Local Voice (FluidAudio TTS/STT) 属于「Design & Creative」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。