Install
openclaw skills install windows-ttsPush text notifications to Windows Azure TTS service for audio broadcast via Bluetooth speakers. Perfect for family reminders, alarms, and announcements.
openclaw skills install windows-tts
Push text notifications from OpenClaw to your Windows PC's Azure TTS service for audio broadcast through Bluetooth speakers or any connected audio output.
🔥 Perfect for: Family reminders, medication alerts, homework notifications, dinner announcements, and any cross-device audio broadcast scenarios.
✅ USE this skill when:
play_tts Flask service)http://<windows-ip>:5000cd /home/cmos/skills/windows-tts
npm install
npm run build
Add plugin configuration to your openclaw.json:
{
"plugins": {
"windows-tts": {
"url": "http://192.168.1.60:5000",
"defaultVoice": "zh-CN-XiaoxiaoNeural",
"defaultVolume": 1.0,
"timeout": 10000
}
}
}
Edit your life agent's HEARTBEAT.md:
# Family Reminder Check (every 30 minutes)
- Check if it's homework time (19:00-21:00)
- Check if it's medication time
- Check if there are urgent announcements
- Use tts_notify to broadcast reminders
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | - | Windows TTS server base URL (e.g., http://192.168.1.60:5000) |
defaultVoice | string | No | zh-CN-XiaoxiaoNeural | Default Azure TTS voice ID |
defaultVolume | number | No | 1.0 | Default volume level (0.0-1.0) |
timeout | number | No | 10000 | HTTP request timeout in milliseconds |
tts_notifySend text to Windows TTS for immediate audio broadcast.
Input:
{
text: string; // Required: Text to speak
voice?: string; // Optional: Override default voice
volume?: number; // Optional: Override default volume (0.0-1.0)
}
Example Usage:
// Basic notification
await tts_notify({
text: "程老板,该提醒孩子写作业了!"
});
// With custom voice and volume
await tts_notify({
text: "Attention: Meeting in 5 minutes",
voice: "en-US-JennyNeural",
volume: 0.8
});
Response:
{
"status": "success",
"message": "播报完成"
}
tts_get_statusCheck Windows TTS server connection status.
Input: None
Example:
const status = await tts_get_status();
// Returns: { status: "success", connected: true, serverUrl: "http://192.168.1.60:5000" }
tts_list_voicesList available Azure TTS voices.
Input:
{
language?: string; // Optional: Filter by language code (e.g., "zh-CN", "en-US")
}
Example:
// List all Chinese voices
const voices = await tts_list_voices({ language: "zh-CN" });
// Returns: [{ name: "zh-CN-XiaoxiaoNeural", language: "zh-CN", gender: "Female", ... }]
tts_set_volumeSet default volume level for TTS playback.
Input:
{
volume: number; // Required: Volume level (0.0-1.0)
}
Example:
await tts_set_volume({ volume: 0.5 });
Add to life agent's heartbeat or cron:
await tts_notify({
text: "亲爱的程老板,现在是晚上 7 点,该提醒孩子写作业了!"
});
await tts_notify({
text: "温馨提示:该吃药了,请记得服用今天的维生素。",
volume: 0.7
});
await tts_notify({
text: "晚饭准备好了,快来吃饭吧!",
voice: "zh-CN-YunxiNeural"
});
// English announcement
await tts_notify({
text: "Good evening! Dinner is ready.",
voice: "en-US-JennyNeural"
});
// Japanese announcement
await tts_notify({
text: "夕ご飯の準備ができました。",
voice: "ja-JP-NanamiNeural"
});
The skill throws WindowsTtsError when the server returns an error:
try {
await tts_notify({ text: "Test message" });
} catch (error) {
if (error instanceof WindowsTtsError) {
console.error(`TTS Server error: ${error.status}`);
} else if (error.message.includes("timeout")) {
console.error("TTS request timed out - check network connection");
}
}
tts_get_status before critical reminderszh-CN-XiaoxiaoNeural for warm, friendly Chinese announcementszh-CN-YunxiNeural for more formal notificationsUse as a library in your TypeScript/JavaScript code:
import { WindowsTtsClient, validateConfig } from "./index";
const config = validateConfig({
url: "http://192.168.1.60:5000",
defaultVoice: "zh-CN-XiaoxiaoNeural",
defaultVolume: 0.8
});
const client = new WindowsTtsClient(config);
// Send notification
await client.notify({
text: "Hello from OpenClaw!"
});
// Check status
const status = await client.getStatus();
console.log(`Connected: ${status.connected}`);
curl http://192.168.1.60:5000/statustimeout in plugin configtts_list_voices to see available voicesopenclaw-homeassistant - Control smart home devicesproactive-agent - Build proactive reminder behaviorsgws-calendar - Schedule reminders based on calendar eventsMIT