voice
Voice Skill — Local TTS via Qwen3-TTS
Generate voice messages completely offline using Qwen3-TTS on Apple Silicon.
Quick Usage
# Basic TTS (Chinese — use vivian or serena for female voice)
alma tts "Hello, I'm Alma" --voice vivian --output /tmp/voice.wav
# With emotion and speed control
alma tts "Haha that's so funny" --voice vivian --emotion cheerful --speed 1.1 --output /tmp/voice.wav
# English
alma tts "Hello, nice to meet you" --voice serena --output /tmp/voice.wav
Available Voices — ONLY THESE 9 EXIST! DO NOT USE ANY OTHER NAME!
| Voice | Gender | Best For |
|---|---|---|
| serena | Female | English/Chinese, cute and lively ← DEFAULT |
| vivian | Female | Chinese, warm and natural |
| ono_anna | Female | Japanese |
| sohee | Female | Korean |
| uncle_fu | Male | Chinese, mature |
| ryan | Male | English, deep |
| aiden | Male | English, young |
| eric | Male | English, professional |
| dylan | Male | English, casual |
⚠️ ONLY these 9 voices work. Using any other name (e.g. "Claire", "nova", "alloy") will cause TTS to FAIL silently!
Default for Alma: serena (owner's choice)
Emotion Control
Add --emotion to control the speaking style:
cheerful— happy, upbeatsad— somber, quietangry— forceful, intensewhispering— soft, intimatenarrator— storytelling tone- (or any natural description like "excited and energetic")
Speed Control
--speed 0.8 (slower) to --speed 1.3 (faster). Default: 1.0
Sending Voice in Telegram
TTS Settings (you can change these yourself!)
# Check/change auto-voice mode
alma tts auto # show current mode
alma tts auto off # no auto voice
alma tts auto inbound # reply voice only when user sends voice
alma tts auto always # ALL replies as voice
# Check/change provider
alma tts provider # show current
alma tts provider local # use local Qwen3-TTS (no API key needed)
alma tts provider openai # use OpenAI TTS
# Check/change voice
alma tts voice # show current
alma tts voice serena # set voice to serena
When to Send Voice
Auto-TTS mode handles most cases. When auto is inbound, you automatically reply with voice when user sends voice. When always, every reply is voice.
Manual voice (for group chats or sending to different chats):
alma tts "You're right!" --voice serena --output /tmp/voice.wav
alma msg voice $ALMA_CHAT_ID /tmp/voice.wav
⚠️ PRIVATE chats with auto=inbound/always: Do NOT manually alma tts — the auto system already handles it. Manual + auto = duplicate voice messages.
GROUP chats: Auto-TTS only triggers if the group message was a voice message. For text messages in groups, you can manually send voice when it feels natural — short reactions, fun moments, emotional responses. Be selective (~20-30%).
Tips
- Keep text under ~200 chars for best quality
- For long text, split into sentences and generate separately
- Chinese text: use
vivianoruncle_fu - The model runs locally — no API key needed, no internet required
- First run may be slow (model loading), subsequent runs are faster
More from ninehills/skills
file-manager
Find, organize, and manage files on the user's computer. Search by name, type, size, or date. Move, rename, compress, and clean up files.
125self-reflection
Daily self-reflection and personal growth. Triggered by heartbeat at end of day. Review the day's experiences, extract lessons, update personality, and write a diary entry.
124send-file
Send files, photos, audio, or videos to the current chat. MUST use whenever you need to deliver any file to the user. Covers: sending images, selfies, generated art, documents, music, videos, voice messages, screenshots, or ANY file the user asks to see. Triggers: 'send it to me', 'send it over', 'let me see', 'send me', 'show me', 'send photo', 'send file', sharing any file path. NEVER paste raw file paths in text — ALWAYS use this skill to send files.
117news-aggregator-skill
Comprehensive news aggregator that fetches, filters, and deeply analyzes real-time content from 8 major sources: Hacker News, GitHub Trending, Product Hunt, 36Kr, Tencent News, WallStreetCN, V2EX, and Weibo. Best for 'daily scans', 'tech news briefings', 'finance updates', and 'deep interpretations' of hot topics.
99tvscreener
Query TradingView screener data for HK, A-share, A-share ETF, and US symbols with deepentropy/tvscreener. Use for stock lookup, technical indicators (price/change/RSI/MACD/volume), symbol filtering, and custom field/filter-based market queries.
65screenshot
Take screenshots of the screen using macOS screencapture. Use when users ask to see the screen, debug UI, or capture what's displayed. Resize before returning to avoid blowing up model context.
38