Smallest AI — Ultra-Fast Voice Suite
Text-to-speech (sub-100ms) via Lightning v3.1 and speech-to-text (64ms TTFT) via Pulse.
Setup
- 1. Get API key from https://waves.smallest.ai → click "API Key" in left panel
- Set
SMALLEST_API_KEY in your environment:
CODEBLOCK0
Defaults
- - Default female voice:
sophia (American English) - Default male voice:
robert (American English) - Default language: INLINECODE3
- Default speed: INLINECODE4
- Default sample rate: INLINECODE5
Voice Selection Rules
Follow these rules to select the voice:
- 1. If user explicitly names a voice (e.g. "use advika"), use that voice.
- If user asks for a male voice, use the configured
defaultVoiceMale. - If user asks for a female voice, use the configured
defaultVoiceFemale. - If no gender preference, use
defaultVoiceFemale (sophia by default). - For Hindi content: use
advika (female) or vivaan (male). - For Spanish content: use
camilla (female) or carlos (male). - For Tamil content: use
anitha (female) or raju (male).
Always pass the configured defaultLanguage, defaultSpeed, and defaultSampleRate as --lang, --speed, and --rate flags unless the user overrides them.
Text-to-Speech
Generate speech audio from text using Lightning v3.1 model.
Shell (preferred — zero dependencies)
CODEBLOCK1
Python (requires pip install smallestai or just requests)
CODEBLOCK2
Voices
| Voice | Gender | Accent | Best For |
|---|
| sophia | Female | American | General use (default) |
| robert |
Male | American | Professional, reports (default) |
| advika | Female | Indian | Hindi content, code-switch |
| vivaan | Male | Indian | Bilingual English/Hindi |
| camilla | Female | Mexican/Latin | Spanish content |
| zara | Female | American | Conversational |
| melody | Female | American | Storytelling, greetings |
| arjun | Male | Indian | English/Hindi bilingual |
| stella | Female | American | Expressive, warm |
80+ more voices available. List all with: INLINECODE23
Options
- -
--voice <id>: Voice identifier (default: sophia) - INLINECODE25 : Sample rate — 8000 | 16000 | 24000 | 44100 (default: 24000)
- INLINECODE26 : Playback speed 0.5–2.0 (default: 1.0)
- INLINECODE27 : Language code (default: en). See INLINECODE28
- INLINECODE29 : Output file (default: auto-named
media/tts_<timestamp>.wav)
Output
Scripts print MEDIA: <filepath> on success. OpenClaw sends this as an audio attachment.
Multilingual
Supports 30+ languages. Pass --lang with ISO code:
CODEBLOCK3
Code-switching (mixing languages) works automatically — no flag needed:
CODEBLOCK4
Speech-to-Text
Transcribe audio files using Pulse model. Supports WAV, MP3, OGG, FLAC.
Shell
CODEBLOCK5
Python
CODEBLOCK6
Options
- -
--lang <code>: Language (default: en) - INLINECODE34 : Identify different speakers
- INLINECODE35 : Word-level timing
- INLINECODE36 : Detect emotional tone
Output
Returns JSON with transcription field. With --diarize, includes speaker labels per word.
When to Use
Trigger this skill when the user:
- - Asks to "say", "speak", "read aloud", or "generate speech/audio"
- Wants a "voice message", "voice note", or "audio file"
- Asks to "transcribe", "convert speech/audio to text"
- Mentions "Smallest AI", "Lightning TTS", or "Pulse STT"
- Needs fast or low-latency speech generation
- Wants Hindi, Spanish, multilingual, or code-switched voice output
- Asks to compare TTS providers or benchmark latency
Error Handling
- - Missing API key → tell user to set INLINECODE39
- HTTP 401 → invalid or expired API key
- HTTP 429 → rate limited, wait and retry
- HTTP 400 → check text length (max ~5000 chars per request). Split long text into chunks.
- Empty audio → verify voice_id is valid
Limits
- - Max text per request: ~5000 characters
- For longer text: split into sentences, synthesize each, concatenate with sox or ffmpeg
- Free tier: 30 minutes/month of TTS
- Basic ($5/mo): 3 hours of TTS + 1 voice clone
Smallest AI — 超快速语音套件
通过 Lightning v3.1 实现文本转语音(低于100毫秒),通过 Pulse 实现语音转文本(TTFT 64毫秒)。
设置
- 1. 从 https://waves.smallest.ai 获取 API 密钥 → 点击左侧面板中的API Key
- 在环境中设置 SMALLESTAPIKEY:
bash
export SMALLEST
APIKEY=your
keyhere
默认值
- - 默认女声:sophia(美式英语)
- 默认男声:robert(美式英语)
- 默认语言:en
- 默认语速:1.0
- 默认采样率:24000
语音选择规则
按以下规则选择语音:
- 1. 如果用户明确指定语音名称(例如使用 advika),则使用该语音。
- 如果用户要求男声,则使用配置的 defaultVoiceMale。
- 如果用户要求女声,则使用配置的 defaultVoiceFemale。
- 如果没有性别偏好,则使用 defaultVoiceFemale(默认为 sophia)。
- 对于印地语内容:使用 advika(女声)或 vivaan(男声)。
- 对于西班牙语内容:使用 camilla(女声)或 carlos(男声)。
- 对于泰米尔语内容:使用 anitha(女声)或 raju(男声)。
除非用户覆盖,否则始终将配置的 defaultLanguage、defaultSpeed 和 defaultSampleRate 作为 --lang、--speed 和 --rate 参数传递。
文本转语音
使用 Lightning v3.1 模型从文本生成语音音频。
Shell(推荐——零依赖)
bash
{baseDir}/scripts/tts.sh 要朗读的文本 --voice sophia --rate 24000 --speed 1.0 --lang en
Python(需要 pip install smallestai 或仅需 requests)
bash
python3 {baseDir}/scripts/tts.py 要朗读的文本 --voice sophia --speed 1.0 --lang en --out speech.wav
语音
| 语音 | 性别 | 口音 | 最佳用途 |
|---|
| sophia | 女声 | 美式 | 通用(默认) |
| robert |
男声 | 美式 | 专业、报告(默认) |
| advika | 女声 | 印度 | 印地语内容、语码转换 |
| vivaan | 男声 | 印度 | 英印双语 |
| camilla | 女声 | 墨西哥/拉丁 | 西班牙语内容 |
| zara | 女声 | 美式 | 对话 |
| melody | 女声 | 美式 | 讲故事、问候 |
| arjun | 男声 | 印度 | 英印双语 |
| stella | 女声 | 美式 | 富有表现力、温暖 |
还有80多种语音可用。使用以下命令列出所有语音:{baseDir}/scripts/voices.sh
选项
- - --voice :语音标识符(默认:sophia)
- --rate :采样率 — 8000 | 16000 | 24000 | 44100(默认:24000)
- --speed :播放速度 0.5–2.0(默认:1.0)
- --lang
:语言代码(默认:en)。参见 {baseDir}/references/languages.md - --out :输出文件(默认:自动命名 media/tts_.wav)
输出
脚本成功时输出 MEDIA: 。OpenClaw 将其作为音频附件发送。
多语言
支持30多种语言。使用 ISO 代码传递 --lang:
bash
{baseDir}/scripts/tts.sh नमस्ते, कैसे हैं आप? --voice advika --lang hi
{baseDir}/scripts/tts.sh Bonjour le monde --voice sophia --lang fr
{baseDir}/scripts/tts.sh Hola, buenos días --voice camilla --lang es
语码转换(混合语言)自动生效——无需标志:
bash
{baseDir}/scripts/tts.sh Hey, मुझे meeting remind कर दो --voice advika --lang hi
语音转文本
使用 Pulse 模型转录音频文件。支持 WAV、MP3、OGG、FLAC。
Shell
bash
{baseDir}/scripts/stt.sh /path/to/audio.wav
{baseDir}/scripts/stt.sh /path/to/audio.wav --diarize --timestamps --emotions
Python
bash
python3 {baseDir}/scripts/stt.py /path/to/audio.wav --diarize --timestamps --lang en
选项
- - --lang
:语言(默认:en) - --diarize:识别不同说话者
- --timestamps:词级时间戳
- --emotions:检测情感语气
输出
返回包含 transcription 字段的 JSON。使用 --diarize 时,包含每个词的说话者标签。
使用时机
当用户出现以下情况时触发此技能:
- - 要求说、朗读、读出来或生成语音/音频
- 想要语音消息、语音笔记或音频文件
- 要求转录、将语音/音频转换为文本
- 提到Smallest AI、Lightning TTS或Pulse STT
- 需要快速或低延迟的语音生成
- 想要印地语、西班牙语、多语言或语码转换的语音输出
- 要求比较 TTS 提供商或基准测试延迟
错误处理
- - 缺少 API 密钥 → 告知用户设置 SMALLESTAPIKEY
- HTTP 401 → API 密钥无效或已过期
- HTTP 429 → 请求频率受限,等待后重试
- HTTP 400 → 检查文本长度(每次请求最多约5000字符)。将长文本分块处理。
- 音频为空 → 验证 voice_id 是否有效
限制
- - 每次请求最大文本:约5000字符
- 对于更长的文本:拆分为句子,分别合成,使用 sox 或 ffmpeg 拼接
- 免费版:每月30分钟 TTS
- 基础版($5/月):3小时 TTS + 1个语音克隆