Files
jarvis-memory/skills/kimi-tts-custom/SKILL.md

2.7 KiB

name, description
name description
kimi-tts-custom Custom TTS handler for Kimi that generates voice messages with custom filenames (Kimi-XXX.ogg) and optionally suppresses text output. Use when user wants voice-only responses with branded filenames instead of default OpenClaw TTS behavior.

Kimi TTS Custom

Overview

Custom TTS wrapper for local Kokoro that:

  • Generates voice with custom filenames (Kimi-XXX.ogg)
  • Can send voice-only (no text transcript)
  • Uses local Kokoro TTS at 10.0.0.228:8880

When to Use

  • User wants voice responses with "Kimi-" prefixed filenames
  • User wants voice-only mode (no text displayed)
  • Default TTS behavior needs customization

Voice-Only Mode

⚠️ CRITICAL: Generation ≠ Delivery

Simply generating a voice file does NOT send it. You must use proper delivery method:

Correct Way: Use voice_reply.py

python3 /root/.openclaw/workspace/skills/kimi-tts-custom/scripts/voice_reply.py "1544075739" "Your message here"

This script:

  1. Generates voice file with Kimi-XXX.ogg filename
  2. Sends via Telegram API immediately
  3. Cleans up temp file

Wrong Way: Text Reference

Do NOT do this:

[Voice message attached: Kimi-20260205-185016.ogg]

This does not attach the actual audio file — user receives no voice message.

Alternative: Manual Send (if needed)

If you already generated the file:

# Use OpenClaw CLI
openclaw message send --channel telegram --target 1544075739 --media /path/to/Kimi-XXX.ogg

Configuration

Set in messages.tts.custom:

{
  "messages": {
    "tts": {
      "custom": {
        "enabled": true,
        "voiceOnly": true,
        "filenamePrefix": "Kimi",
        "kokoroUrl": "http://10.0.0.228:8880/v1/audio/speech",
        "voice": "af_bella"
      }
    }
  }
}

Scripts

scripts/generate_voice.py

Generates voice file with custom filename and returns path for sending.

⚠️ Note: This only creates the file. Does NOT send to Telegram.

Usage:

python3 generate_voice.py "Text to speak" [--voice af_bella] [--output-dir /tmp]

Returns: JSON with filepath, filename, duration

Combined script: generates voice + sends via Telegram in one command.

This is the correct way to send voice replies.

Usage:

python3 voice_reply.py "1544075739" "Your message here" [--voice af_bella]

This generates the voice file and sends it immediately (voice-only, no text).

Key Rule

Task Use
Generate voice file only generate_voice.py
Send voice reply to user voice_reply.py
Text reference to file Does NOT work

Remember: Generation and delivery are separate steps. Use voice_reply.py for complete voice reply workflow.