HomeBrowseUpload
← Back to registry
// Skill profile

Windows TTS Notification Skill

name: windows-tts

by cmosakg · published 2026-03-22

日历管理开发工具
Total installs
0
Stars
★ 0
Last updated
2026-03
// Install command
$ claw add gh:cmosakg/cmosakg-windows-tts
View on GitHub
// Full documentation

---

name: windows-tts

description: "Push text notifications to Windows Azure TTS service for audio broadcast via Bluetooth speakers. Perfect for family reminders, alarms, and announcements."

homepage: https://github.com/openclaw/openclaw/skills/windows-tts

metadata: { "openclaw": { "emoji": "🔊", "requires": { "bins": [] } } }

tags: ["latest", "tts", "notification", "windows", "azure", "broadcast", "reminder"]

---

![ClawHub](https://img.shields.io/badge/ClawHub-windows--tts-blue)

![Version](https://img.shields.io/badge/version-1.0.0-green)

![License](https://img.shields.io/badge/license-MIT-yellow)

# Windows TTS Notification Skill

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.

When to Use

✅ **USE this skill when:**

  • "Remind my family to do homework"
  • "Announce dinner time through speakers"
  • "Create audio alarms and reminders"
  • "Broadcast messages to specific rooms"
  • "Play medication reminders"
  • "Send cross-device audio notifications"
  • Prerequisites

  • **Windows PC** with Azure TTS server running (e.g., `play_tts` Flask service)
  • **Network connectivity** between OpenClaw host and Windows PC (same LAN)
  • **Server URL** in format: `http://<windows-ip>:5000`
  • Quick Start

    1. Install the Skill

    cd /home/cmos/skills/windows-tts
    npm install
    npm run build

    2. Configure OpenClaw

    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
        }
      }
    }

    3. Use in Agent Heartbeat

    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

    Configuration Reference

    | 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 |

    Tool Reference

    `tts_notify`

    Send 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_status`

    Check 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_voices`

    List 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_volume`

    Set default volume level for TTS playback.

    **Input:**

    {
      volume: number;  // Required: Volume level (0.0-1.0)
    }

    **Example:**

    await tts_set_volume({ volume: 0.5 });

    Usage Examples

    1. Homework Reminder (Daily 19:00)

    Add to `life` agent's heartbeat or cron:

    await tts_notify({
      text: "亲爱的程老板,现在是晚上 7 点,该提醒孩子写作业了!"
    });

    2. Medication Reminder

    await tts_notify({
      text: "温馨提示:该吃药了,请记得服用今天的维生素。",
      volume: 0.7
    });

    3. Dinner Announcement

    await tts_notify({
      text: "晚饭准备好了,快来吃饭吧!",
      voice: "zh-CN-YunxiNeural"
    });

    4. Multi-Language Support

    // 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"
    });

    Error Handling

    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");
      }
    }

    Best Practices

    1. Network Reliability

  • Ensure Windows PC has static IP or DHCP reservation
  • Test connection with `tts_get_status` before critical reminders
  • Set appropriate timeout (10-30 seconds for TTS)
  • 2. Voice Selection

  • Use `zh-CN-XiaoxiaoNeural` for warm, friendly Chinese announcements
  • Use `zh-CN-YunxiNeural` for more formal notifications
  • Match voice to message tone (casual vs formal)
  • 3. Volume Management

  • Set lower volume (0.5-0.7) for frequent reminders
  • Use full volume (1.0) for urgent announcements
  • Avoid very low volume (<0.3) as TTS may be inaudible
  • 4. Message Design

  • Keep messages concise (10-30 seconds max)
  • Use clear, natural language
  • Include context (time, action needed)
  • Add polite markers for family harmony
  • Programmatic Usage

    Use 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}`);

    Troubleshooting

    "Connection refused" error

  • Verify Windows TTS server is running: `curl http://192.168.1.60:5000/status`
  • Check firewall allows port 5000
  • Ensure both devices are on same network
  • "Request timeout" error

  • Increase `timeout` in plugin config
  • Check network latency between devices
  • Verify Windows PC is not in sleep mode
  • TTS plays but wrong voice

  • Verify voice name is valid Azure TTS voice ID
  • Use `tts_list_voices` to see available voices
  • Check Windows TTS server supports voice selection
  • Related Skills

  • `openclaw-homeassistant` - Control smart home devices
  • `proactive-agent` - Build proactive reminder behaviors
  • `gws-calendar` - Schedule reminders based on calendar events
  • Version History

    1.0.0

  • Initial release with 4 tools
  • Basic HTTP client with timeout
  • Voice and volume configuration
  • Error handling and status checks
  • License

    MIT

    // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band