Text-to-speech (TTS)

Mayros ElevenLabs, OpenAI या Edge TTS का उपयोग करके outbound replies को audio में convert कर सकता है। यह कहीं भी काम करता है जहां Mayros audio भेज सकता है; Telegram को एक round voice-note bubble मिलता है।

समर्थित सेवाएं

  • ElevenLabs (primary या fallback provider)
  • OpenAI (primary या fallback provider; summaries के लिए भी उपयोग किया जाता है)
  • Edge TTS (primary या fallback provider; node-edge-tts का उपयोग करता है, कोई API keys नहीं होने पर डिफ़ॉल्ट)

Edge TTS नोट्स

Edge TTS node-edge-tts library के माध्यम से Microsoft Edge की online neural TTS service का उपयोग करता है। यह एक hosted service है (स्थानीय नहीं), Microsoft के endpoints का उपयोग करती है, और API key की आवश्यकता नहीं है। node-edge-tts speech configuration विकल्प और output formats को expose करता है, लेकिन सभी विकल्प Edge service द्वारा समर्थित नहीं हैं।

क्योंकि Edge TTS बिना published SLA या quota के एक public web service है, इसे best-effort के रूप में treat करें। यदि आपको guaranteed limits और support की आवश्यकता है, तो OpenAI या ElevenLabs का उपयोग करें। Microsoft की Speech REST API प्रति request 10‑मिनट की audio limit को document करती है; Edge TTS limits publish नहीं करता, इसलिए समान या कम limits मान लें।

वैकल्पिक keys

यदि आप OpenAI या ElevenLabs चाहते हैं:

  • ELEVENLABS_API_KEY (या XI_API_KEY)
  • OPENAI_API_KEY

Edge TTS को API key की आवश्यकता नहीं है। यदि कोई API keys नहीं मिलते, तो Mayros डिफ़ॉल्ट रूप से Edge TTS करता है (जब तक कि messages.tts.edge.enabled=false के माध्यम से अक्षम न हो)।

यदि कई providers कॉन्फ़िगर हैं, तो चयनित provider पहले उपयोग किया जाता है और अन्य fallback विकल्प हैं। Auto-summary कॉन्फ़िगर किए गए summaryModel (या agents.defaults.model.primary) का उपयोग करता है, इसलिए यदि आप summaries सक्षम करते हैं तो उस provider को भी प्रमाणित किया जाना चाहिए।

Service लिंक

क्या यह डिफ़ॉल्ट रूप से सक्षम है?

नहीं। Auto‑TTS डिफ़ॉल्ट रूप से बंद है। इसे कॉन्फ़िगरेशन में messages.tts.auto या /tts always (alias: /tts on) के साथ प्रति session सक्षम करें।

Edge TTS TTS on होने के बाद डिफ़ॉल्ट रूप से सक्षम है, और स्वचालित रूप से उपयोग किया जाता है जब कोई OpenAI या ElevenLabs API keys उपलब्ध नहीं होते।

कॉन्फ़िगरेशन

TTS कॉन्फ़िगरेशन mayros.json में messages.tts के तहत रहता है। पूर्ण schema Gateway configuration में है।

न्यूनतम कॉन्फ़िगरेशन (सक्षम + provider)

json5
{
  messages: {
    tts: {
      auto: "always",
      provider: "elevenlabs",
    },
  },
}

ElevenLabs fallback के साथ OpenAI primary

json5
{
  messages: {
    tts: {
      auto: "always",
      provider: "openai",
      summaryModel: "openai/gpt-4.1-mini",
      modelOverrides: {
        enabled: true,
      },
      openai: {
        apiKey: "openai_api_key",
        model: "gpt-4o-mini-tts",
        voice: "alloy",
      },
      elevenlabs: {
        apiKey: "elevenlabs_api_key",
        baseUrl: "https://api.elevenlabs.io",
        voiceId: "voice_id",
        modelId: "eleven_multilingual_v2",
        seed: 42,
        applyTextNormalization: "auto",
        languageCode: "en",
        voiceSettings: {
          stability: 0.5,
          similarityBoost: 0.75,
          style: 0.0,
          useSpeakerBoost: true,
          speed: 1.0,
        },
      },
    },
  },
}

Edge TTS primary (कोई API key नहीं)

json5
{
  messages: {
    tts: {
      auto: "always",
      provider: "edge",
      edge: {
        enabled: true,
        voice: "en-US-MichelleNeural",
        lang: "en-US",
        outputFormat: "audio-24khz-48kbitrate-mono-mp3",
        rate: "+10%",
        pitch: "-5%",
      },
    },
  },
}

Auto-TTS व्यवहार

जब सक्षम हो, तो Mayros:

  • TTS skip करता है यदि reply में पहले से media या MEDIA: directive है।
  • बहुत छोटे replies (< 10 chars) skip करता है।
  • सक्षम होने पर agents.defaults.model.primary (या summaryModel) का उपयोग करके लंबे replies summarize करता है।
  • जेनरेट की गई audio को reply में attach करता है।

यदि reply maxLength से अधिक है और summary बंद है (या summary model के लिए कोई API key नहीं), तो audio skip है और सामान्य text reply भेजा जाता है।

Slash command उपयोग

एक single command है: /tts। Enablement विवरण के लिए Slash commands देखें।

Discord नोट: /tts एक built-in Discord command है, इसलिए Mayros /voice को native command के रूप में वहां register करता है। Text /tts ... अभी भी काम करता है।

/tts off
/tts always
/tts inbound
/tts tagged
/tts status
/tts provider openai
/tts limit 2000
/tts summary off
/tts audio Hello from Mayros

नोट्स:

  • Commands को एक authorized sender की आवश्यकता है (allowlist/owner नियम अभी भी लागू होते हैं)।
  • commands.text या native command registration सक्षम होना चाहिए।
  • off|always|inbound|tagged प्रति‑session toggles हैं (/tts on /tts always के लिए alias है)।
  • limit और summary local prefs में संग्रहीत हैं, मुख्य कॉन्फ़िगरेशन में नहीं।
  • /tts audio एक one-off audio reply जेनरेट करता है (TTS on नहीं करता)।

Agent tool

tts tool text को speech में convert करता है और एक MEDIA: path लौटाता है। जब result Telegram-compatible है, तो tool [[audio_as_voice]] शामिल करता है ताकि Telegram एक voice bubble भेजे।

Gateway RPC

Gateway methods:

  • tts.status
  • tts.enable
  • tts.disable
  • tts.convert
  • tts.setProvider
  • tts.providers