← Back to PRs

#7965: feat(tts): add Speechify as TTS provider

by chaerla open 2026-02-03 11:37 View on GitHub →
docs gateway stale
## 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