Teksti-kõneks (TTS)

Mayros saab konverteerida väljaminevaid vastuseid heliks kasutades ElevenLabs, OpenAI või Edge TTS. See töötab kõikjal, kus Mayros saab heli saata; Telegram saab ümmarguse häälmärkmiku mulli.

Toetatud teenused

  • ElevenLabs (peamine või varupakkuja)
  • OpenAI (peamine või varupakkuja; kasutatakse ka kokkuvõtete jaoks)
  • Edge TTS (peamine või varupakkuja; kasutab node-edge-tts, vaikimisi kui API võtmeid pole)

Edge TTS märkused

Edge TTS kasutab Microsoft Edge veebipõhist neuraalset TTS teenust node-edge-tts teegi kaudu. See on hostitav teenus (mitte kohalik), kasutab Microsofti lõpp-punkte ja ei nõua API võtit. node-edge-tts paljastab kõne konfiguratsiooni valikuid ja väljundformaate, kuid kõiki valikuid ei toeta Edge teenus. citeturn2search0

Kuna Edge TTS on avalik veebiteenns ilma avaldatud SLA või kvoodita, kohtle seda parimas usus. Kui vajad garanteeritud piire ja tuge, kasuta OpenAI või ElevenLabs. Microsofti Speech REST API dokumenteerib 10-minutilist heli piiri taotluse kohta; Edge TTS ei avalda piire, seega oletame sarnaseid või madalamaid piire. citeturn0search3

Valikulised võtmed

Kui soovid OpenAI või ElevenLabs:

  • ELEVENLABS_API_KEY (või XI_API_KEY)
  • OPENAI_API_KEY

Edge TTS ei nõua API võtit. Kui API võtmeid ei leita, langeb Mayros vaikimisi Edge TTS-le (välja arvatud juhul, kui keelatud messages.tts.edge.enabled=false kaudu).

Kui mitu pakkujat on konfigureeritud, kasutatakse valitud pakkujat esimesena ja teised on varuvalikud. Automaatne kokkuvõte kasutab konfigureeritud summaryModel (või agents.defaults.model.primary), seega peab see pakkuja olema samuti autenditud, kui lubad kokkuvõtteid.

Teenuste lingid

Kas see on vaikimisi lubatud?

Ei. Automaatne TTS on väljas vaikimisi. Luba see konfiguratsioonis messages.tts.auto abil või sessiooni kohta /tts always (alias: /tts on) abil.

Edge TTS on vaikimisi lubatud, kui TTS on sees, ja kasutatakse automaatselt kui OpenAI või ElevenLabs API võtmeid ei ole saadaval.

Konfiguratsioon

TTS konfiguratsioon asub messages.tts all mayros.json failis. Täielik skeem on Gateway konfiguratsioon.

Minimaalne konfiguratsioon (luba + pakkuja)

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

OpenAI peamine ElevenLabs varukopiaga

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 peamine (ilma API võtita)

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%",
      },
    },
  },
}

Keela Edge TTS

json5
{
  messages: {
    tts: {
      edge: {
        enabled: false,
      },
    },
  },
}

Kohandatud piirid + eelistuste tee

json5
{
  messages: {
    tts: {
      auto: "always",
      maxTextLength: 4000,
      timeoutMs: 30000,
      prefsPath: "~/.mayros/settings/tts.json",
    },
  },
}

Vasta ainult heliga pärast sissetulevat häälmärkust

json5
{
  messages: {
    tts: {
      auto: "inbound",
    },
  },
}

Keela automaatne kokkuvõte pikkade vastuste jaoks

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

Seejärel käivita:

/tts summary off

Märkused väljade kohta

  • auto: automaatne TTS režiim (off, always, inbound, tagged).
    • inbound saadab heli ainult pärast sissetulevat häälmärkust.
    • tagged saadab heli ainult siis, kui vastus sisaldab [[tts]] märgendeid.
  • enabled: pärand lüliti (doctor migreerib selle auto-ks).
  • mode: "final" (vaikimisi) või "all" (sisaldab tööriista/bloki vastuseid).
  • provider: "elevenlabs", "openai" või "edge" (varukoopia on automaatne).
  • Kui provider on määramata, eelistab Mayros openai (kui võti), seejärel elevenlabs (kui võti), vastasel juhul edge.
  • summaryModel: valikuline odav mudel automaatseks kokkuvõtteks; vaikimisi agents.defaults.model.primary.
    • Aktsepteerib provider/model või konfigureeritud mudeli aliast.
  • modelOverrides: luba mudelil emiteerida TTS direktiive (vaikimisi sees).
    • allowProvider vaikimisi false (pakkuja vahetamine on opt-in).
  • maxTextLength: kõva piir TTS sisendile (märgid). /tts audio ebaõnnestub kui ületatud.
  • timeoutMs: taotluse ajalõpp (ms).
  • prefsPath: alista kohalike eelistuste JSON tee (pakkuja/piir/kokkuvõte).
  • apiKey väärtused langevad tagasi env varsi (ELEVENLABS_API_KEY/XI_API_KEY, OPENAI_API_KEY).
  • elevenlabs.baseUrl: alista ElevenLabs API baas URL.
  • elevenlabs.voiceSettings:
    • stability, similarityBoost, style: 0..1
    • useSpeakerBoost: true|false
    • speed: 0.5..2.0 (1.0 = tavaline)
  • elevenlabs.applyTextNormalization: auto|on|off
  • elevenlabs.languageCode: 2-täheline ISO 639-1 (nt en, de)
  • elevenlabs.seed: täisarv 0..4294967295 (parimas usus determinism)
  • edge.enabled: luba Edge TTS kasutus (vaikimisi true; API võtit pole vaja).
  • edge.voice: Edge neuraalne hääle nimi (nt en-US-MichelleNeural).
  • edge.lang: keelekood (nt en-US).
  • edge.outputFormat: Edge väljundformaat (nt audio-24khz-48kbitrate-mono-mp3).
    • Vaata Microsoft Speech väljundformaate kehtivate väärtuste jaoks; kõiki formaate Edge ei toeta.
  • edge.rate / edge.pitch / edge.volume: protsendi stringid (nt +10%, -5%).
  • edge.saveSubtitles: kirjuta JSON subtiitrid heli faili kõrvale.
  • edge.proxy: proxy URL Edge TTS taotluste jaoks.
  • edge.timeoutMs: taotluse ajalõpu alistamine (ms).

Mudeli juhitud alistused (vaikimisi sees)

Vaikimisi saab mudel emiteerida TTS direktiive ühe vastuse jaoks. Kui messages.tts.auto on tagged, on need direktiivid nõutud heli käivitamiseks.

Kui lubatud, saab mudel emiteerida [[tts:...]] direktiive hääle alistamiseks ühe vastuse jaoks, pluss valikuline [[tts:text]]...[[/tts:text]] blokk, et pakkuda ekspressiivseid märgendeid (naer, laulmise vihjed jne), mis peaksid ilmuma ainult helis.

provider=... direktiive ignoreeritakse, välja arvatud juhul, kui modelOverrides.allowProvider: true.

Näidis vastuse kasulik koormus:

Siin on.

[[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
[[tts:text]](naerab) Loe laul veel kord.[[/tts:text]]

Saadaolevad direktiivi võtmed (kui lubatud):

  • provider (openai | elevenlabs | edge, nõuab allowProvider: true)
  • voice (OpenAI hääl) või voiceId (ElevenLabs)
  • model (OpenAI TTS mudel või ElevenLabs mudeli id)
  • stability, similarityBoost, style, speed, useSpeakerBoost
  • applyTextNormalization (auto|on|off)
  • languageCode (ISO 639-1)
  • seed

Keela kõik mudeli alistused:

json5
{
  messages: {
    tts: {
      modelOverrides: {
        enabled: false,
      },
    },
  },
}

Valikuline lubatud nimekiri (luba pakkuja vahetamine, hoides teised nupud konfigureeritavad):

json5
{
  messages: {
    tts: {
      modelOverrides: {
        enabled: true,
        allowProvider: true,
        allowSeed: false,
      },
    },
  },
}

Kasutajapõhised eelistused

Slash käsud kirjutavad kohalikud alistused prefsPath-i (vaikimisi: ~/.mayros/settings/tts.json, alista MAYROS_TTS_PREFS või messages.tts.prefsPath abil).

Salvestatud väljad:

  • enabled
  • provider
  • maxLength (kokkuvõtte lävi; vaikimisi 1500 märki)
  • summarize (vaikimisi true)

Need alistavad messages.tts.* selle hosti jaoks.

Väljundformaadid (fikseeritud)

  • Telegram: Opus häälmärkus (opus_48000_64 ElevenLabs-st, opus OpenAI-st).
    • 48kHz / 64kbps on hea häälmärkmiku kompromiss ja nõutud ümarguse mulli jaoks.
  • Teised kanalid: MP3 (mp3_44100_128 ElevenLabs-st, mp3 OpenAI-st).
    • 44.1kHz / 128kbps on vaikimisi tasakaal kõne selguse jaoks.
  • Edge TTS: kasutab edge.outputFormat (vaikimisi audio-24khz-48kbitrate-mono-mp3).
    • node-edge-tts aktsepteerib outputFormat, kuid kõik formaadid ei ole saadaval Edge teenusest. citeturn2search0
    • Väljundformaadi väärtused järgivad Microsoft Speech väljundformaate (sealhulgas Ogg/WebM Opus). citeturn1search0
    • Telegram sendVoice aktsepteerib OGG/MP3/M4A; kasuta OpenAI/ElevenLabs kui vajad garanteeritud Opus häälmärkusi. citeturn1search1
    • Kui konfigureeritud Edge väljundformaat ebaõnnestub, proovib Mayros uuesti MP3-ga.

OpenAI/ElevenLabs formaadid on fikseeritud; Telegram ootab Opus häälmärkmiku UX jaoks.

Automaatne TTS käitumine

Kui lubatud, Mayros:

  • vahele jätab TTS, kui vastus juba sisaldab meediat või MEDIA: direktiivi.
  • vahele jätab väga lühikesed vastused (< 10 märki).
  • võtab kokku pikad vastused, kui lubatud, kasutades agents.defaults.model.primary (või summaryModel).
  • lisab genereeritud heli vastusele.

Kui vastus ületab maxLength ja kokkuvõte on väljas (või puudub API võti kokkuvõtte mudeli jaoks), jäetakse heli vahele ja saadetakse tavaline teksti vastus.

Voodiagramm

Vastus -> TTS lubatud?
  ei  -> saada tekst
  jah -> on meedia / MEDIA: / lühike?
          jah -> saada tekst
          ei  -> pikkus > piir?
                   ei  -> TTS -> lisa heli
                   jah -> kokkuvõte lubatud?
                            ei  -> saada tekst
                            jah -> võta kokku (summaryModel või agents.defaults.model.primary)
                                      -> TTS -> lisa heli

Slash käsu kasutus

On üks käsk: /tts. Vaata Slash käsud lubamise üksikasjade jaoks.

Discord märkus: /tts on sisseehitatud Discord käsk, seega Mayros registreerib /voice natiivsena käsuna seal. Tekst /tts ... töötab endiselt.

/tts off
/tts always
/tts inbound
/tts tagged
/tts status
/tts provider openai
/tts limit 2000
/tts summary off
/tts audio Tere Mayros-ist

Märkused:

  • Käsud nõuavad volitatud saatjat (lubatud nimekiri/omaniku reeglid kehtivad endiselt).
  • commands.text või natiivne käsu registreerimine peab olema lubatud.
  • off|always|inbound|tagged on sessiooni kohta lülitid (/tts on on alias /tts always jaoks).
  • limit ja summary salvestatakse kohalikesse eelistustesse, mitte peamisse konfiguratsiooni.
  • /tts audio genereerib ühekordselt heli vastuse (ei lülita TTS-i sisse).

Agendi tööriist

tts tööriist konverteerib teksti kõneks ja tagastab MEDIA: tee. Kui tulemus on Telegram-ühilduv, sisaldab tööriist [[audio_as_voice]], nii et Telegram saadab häälmulli.

Gateway RPC

Gateway meetodid:

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