diff --git a/src/auto-reply/reply/commands-tts.ts b/src/auto-reply/reply/commands-tts.ts index 04b60a4e9..aca79d5c9 100644 --- a/src/auto-reply/reply/commands-tts.ts +++ b/src/auto-reply/reply/commands-tts.ts @@ -50,7 +50,8 @@ function ttsUsage(): ReplyPayload { `**Providers:**\n` + `• edge — Free, fast (default)\n` + `• openai — High quality (requires API key)\n` + - `• elevenlabs — Premium voices (requires API key)\n\n` + + `• elevenlabs — Premium voices (requires API key)\n` + + `• telnyx — Great quality, cheaper than ElevenLabs (requires API key)\n\n` + `**Text Limit (default: 1500, max: 4096):**\n` + `When text exceeds the limit:\n` + `• Summary ON: AI summarizes, then generates audio\n` + @@ -151,6 +152,7 @@ export const handleTtsCommands: CommandHandler = async (params, allowTextCommand if (!args.trim()) { const hasOpenAI = Boolean(resolveTtsApiKey(config, "openai")); const hasElevenLabs = Boolean(resolveTtsApiKey(config, "elevenlabs")); + const hasTelnyx = Boolean(resolveTtsApiKey(config, "telnyx")); const hasEdge = isTtsProviderConfigured(config, "edge"); return { shouldContinue: false, @@ -160,18 +162,24 @@ export const handleTtsCommands: CommandHandler = async (params, allowTextCommand `Primary: ${currentProvider}\n` + `OpenAI key: ${hasOpenAI ? "✅" : "❌"}\n` + `ElevenLabs key: ${hasElevenLabs ? "✅" : "❌"}\n` + + `Telnyx key: ${hasTelnyx ? "✅" : "❌"}\n` + `Edge enabled: ${hasEdge ? "✅" : "❌"}\n` + - `Usage: /tts provider openai | elevenlabs | edge`, + `Usage: /tts provider openai | elevenlabs | telnyx | edge`, }, }; } const requested = args.trim().toLowerCase(); - if (requested !== "openai" && requested !== "elevenlabs" && requested !== "edge") { + if ( + requested !== "openai" && + requested !== "elevenlabs" && + requested !== "telnyx" && + requested !== "edge" + ) { return { shouldContinue: false, reply: ttsUsage() }; } - setTtsProvider(prefsPath, requested); + setTtsProvider(prefsPath, requested as "openai" | "elevenlabs" | "telnyx" | "edge"); return { shouldContinue: false, reply: { text: `✅ TTS provider set to ${requested}.` },