#7965: feat(tts): add Speechify as TTS provider
docs
gateway
stale
Cluster:
Text-to-Speech Provider Enhancements
## Summary
- Add Speechify as a new TTS provider alongside OpenAI, ElevenLabs, and Edge
TTS
- Speechify offers multilingual text-to-speech with two models:
`simba-english` and `simba-multilingual`
- Supports multiple audio formats: wav, mp3, ogg, aac, pcm
## Changes
- **Core implementation** (`src/tts/tts.ts`): Full Speechify API integration
with model, language, and audio format support
- **Config schema** (`src/config/types.tts.ts`,
`src/config/zod-schema.core.ts`): Add Speechify configuration types and
validation
- **Gateway RPC** (`src/gateway/server-methods/tts.ts`): Expose Speechify in
`tts.status`, `tts.setProvider`, and `tts.providers` methods
- **CLI commands** (`src/auto-reply/reply/commands-tts.ts`): Add Speechify to
`/tts` slash commands help, status, and provider validation
- **Documentation** (`docs/tts.md`): Document Speechify configuration and
usage
## Configuration
```json5
{
messages: {
tts: {
provider: "speechify",
speechify: {
apiKey: "your_speechify_api_key", // or use SPEECHIFY_API_KEY env var
voiceId: "george",
model: "simba-multilingual",
language: "en-US",
audioFormat: "mp3",
},
},
},
}
```
## Test plan
- pnpm build passes
- pnpm vitest run src/tts/ passes (33 tests)
- Manual test: /voice provider speechify accepted
- Manual test: /voice status shows Speechify key status
- Manual test: /voice audio <text> generates audio via Speechify
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
This PR adds Speechify as a new TTS provider across the stack: config types + zod validation, provider selection/fallback logic in `src/tts/tts.ts`, gateway RPC exposure (`tts.status`, `tts.setProvider`, `tts.providers`), CLI `/tts` help/status/provider validation, and documentation updates.
The integration follows the existing provider pattern (resolve config → choose provider order → try providers with per-request timeouts → write audio to temp file). The main issues are around Speechify-specific output handling (Telegram format/extension mismatch) and a couple of inconsistencies where existing control surfaces (directives, config audioFormat) don’t fully wire through to the new provider.
<h3>Confidence Score: 3/5</h3>
- This PR is close to merge-safe, but has a Telegram output handling bug and a couple of inconsistencies that should be fixed first.
- Core integration pattern matches existing providers and the changes are localized, but the Speechify Telegram output currently writes Ogg data with a .opus extension, and Speechify-specific options (audioFormat) / directive provider overrides aren’t fully wired through, which will surprise users and may break playback in Telegram scenarios.
- src/tts/tts.ts (Speechify output format/extension, directive provider parsing, audioFormat wiring); docs/tts.md (example defaults alignment).
<!-- greptile_other_comments_section -->
<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#7485: TTS: add Resemble AI provider support
by devshahofficial · 2026-02-02
82.1%
#20794: feat(tts): add Fish Audio provider with full docs, tests & gateway ...
by twangodev · 2026-02-19
81.5%
#7258: feat(tts): add Inworld AI TTS provider
by willsinghwilson · 2026-02-02
79.1%
#22086: fix(tts): honor explicit config provider and model/voice settings
by AIflow-Labs · 2026-02-20
78.5%
#8922: feat(voice-call): Add ElevenLabs WebSocket streaming TTS
by mikiships · 2026-02-04
77.3%
#6677: fix(tts): always load fresh config for voice selection
by Jinqiao · 2026-02-01
76.9%
#11745: ui: add server-side TTS for web chat via gateway endpoint
by wjlgatech · 2026-02-08
76.9%
#13389: feat(telegram): support native voice notes with automatic OGG/Opus ...
by leavingme · 2026-02-10
76.6%
#16569: feat(tts): add optional piper provider core support
by akalypse · 2026-02-14
76.6%
#14086: feat(tts,media): add base Sarvam TTS and STT providers
by kiranjd · 2026-02-11
76.4%