Metinden sese (TTS)
Mayros, ElevenLabs, OpenAI veya Edge TTS kullanarak giden yanıtları sese dönüştürebilir. Mayros'un ses gönderebileceği her yerde çalışır; Telegram yuvarlak bir sesli not balonu alır.
Desteklenen servisler
- ElevenLabs (birincil veya yedek sağlayıcı)
- OpenAI (birincil veya yedek sağlayıcı; özetler için de kullanılır)
- Edge TTS (birincil veya yedek sağlayıcı;
node-edge-ttskullanır, API anahtarı olmadığında varsayılan)
Edge TTS notları
Edge TTS, node-edge-tts kütüphanesi aracılığıyla Microsoft Edge'in çevrimiçi nöral TTS hizmetini kullanır. Barındırılan bir hizmettir (yerel değil), Microsoft'un uç noktalarını kullanır ve bir API anahtarı gerektirmez. node-edge-tts, konuşma yapılandırma seçeneklerini ve çıktı formatlarını sunar, ancak tüm seçenekler Edge hizmeti tarafından desteklenmez.
Edge TTS, yayınlanmış bir SLA veya kota olmayan genel bir web hizmeti olduğundan, bunu en iyi çaba olarak değerlendirin. Garantili limitlere ve desteğe ihtiyacınız varsa, OpenAI veya ElevenLabs kullanın. Microsoft'un Speech REST API'si, istek başına 10 dakikalık bir ses limiti belgeler; Edge TTS limit yayınlamaz, bu nedenle benzer veya daha düşük limitler varsayın.
İsteğe bağlı anahtarlar
OpenAI veya ElevenLabs istiyorsanız:
ELEVENLABS_API_KEY(veyaXI_API_KEY)OPENAI_API_KEY
Edge TTS bir API anahtarı gerektirmez. Hiçbir API anahtarı bulunamazsa, Mayros Edge TTS'ye varsayılan olarak döner (messages.tts.edge.enabled=false ile devre dışı bırakılmadığı sürece).
Birden fazla sağlayıcı yapılandırılmışsa, seçilen sağlayıcı önce kullanılır ve diğerleri yedek seçeneklerdir.
Otomatik özet, yapılandırılan summaryModel'i (veya agents.defaults.model.primary) kullanır, bu nedenle özetleri etkinleştirirseniz o sağlayıcının da kimlik doğrulaması yapılmış olması gerekir.
Servis linkleri
- OpenAI Text-to-Speech kılavuzu
- OpenAI Audio API referansı
- ElevenLabs Text to Speech
- ElevenLabs Authentication
- node-edge-tts
- Microsoft Speech çıktı formatları
Varsayılan olarak etkin mi?
Hayır. Otomatik TTS varsayılan olarak kapalıdır. Yapılandırmada messages.tts.auto ile veya oturum başına /tts always ile (takma ad: /tts on) etkinleştirin.
Edge TTS, TTS açıldıktan sonra varsayılan olarak etkindir ve hiçbir OpenAI veya ElevenLabs API anahtarı kullanılamadığında otomatik olarak kullanılır.
Yapılandırma
TTS yapılandırması mayros.json içinde messages.tts altında bulunur.
Tam şema Ağ Geçidi yapılandırması'ndadır.
Minimal yapılandırma (etkinleştir + sağlayıcı)
json5{ messages: { tts: { auto: "always", provider: "elevenlabs", }, }, }
OpenAI birincil, ElevenLabs yedek
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 birincil (API anahtarı yok)
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%", }, }, }, }
Edge TTS'yi devre dışı bırak
json5{ messages: { tts: { edge: { enabled: false, }, }, }, }
Özel limitler + tercih yolu
json5{ messages: { tts: { auto: "always", maxTextLength: 4000, timeoutMs: 30000, prefsPath: "~/.mayros/settings/tts.json", }, }, }
Yalnızca gelen sesli nottan sonra sesle yanıt ver
json5{ messages: { tts: { auto: "inbound", }, }, }
Uzun yanıtlar için otomatik özeti devre dışı bırak
json5{ messages: { tts: { auto: "always", }, }, }
Ardından çalıştırın:
/tts summary off
Alanlara ilişkin notlar
auto: otomatik TTS modu (off,always,inbound,tagged).inboundyalnızca gelen sesli nottan sonra ses gönderir.taggedyalnızca yanıt[[tts]]etiketleri içerdiğinde ses gönderir.
enabled: eski geçiş (doctor bunuauto'ya taşır).mode:"final"(varsayılan) veya"all"(araç/blok yanıtları dahil).provider:"elevenlabs","openai"veya"edge"(yedek otomatiktir).providerayarlanmamışsa, Mayrosopenai'yi (anahtar varsa) tercih eder, ardındanelevenlabs'ı (anahtar varsa), aksi takdirdeedge.summaryModel: otomatik özet için isteğe bağlı ucuz model;agents.defaults.model.primary'ye varsayılan olarak döner.provider/modelveya yapılandırılmış bir model takma adını kabul eder.
modelOverrides: modelin TTS yönergelerini yaymasına izin ver (varsayılan olarak açık).allowProvidervarsayılan olarakfalse'tur (sağlayıcı değiştirme isteğe bağlıdır).
maxTextLength: TTS girişi için sabit üst sınır (karakterler). Aşılırsa/tts audiobaşarısız olur.timeoutMs: istek zaman aşımı (ms).prefsPath: yerel tercihler JSON yolunu geçersiz kıl (sağlayıcı/limit/özet).apiKeydeğerleri env değişkenlerine geri döner (ELEVENLABS_API_KEY/XI_API_KEY,OPENAI_API_KEY).elevenlabs.baseUrl: ElevenLabs API temel URL'sini geçersiz kıl.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normal)
elevenlabs.applyTextNormalization:auto|on|offelevenlabs.languageCode: 2 harfli ISO 639-1 (örn.en,de)elevenlabs.seed: integer0..4294967295(en iyi çaba determinizm)edge.enabled: Edge TTS kullanımına izin ver (varsayılantrue; API anahtarı yok).edge.voice: Edge nöral ses adı (örn.en-US-MichelleNeural).edge.lang: dil kodu (örn.en-US).edge.outputFormat: Edge çıktı formatı (örn.audio-24khz-48kbitrate-mono-mp3).- Geçerli değerler için Microsoft Speech çıktı formatlarına bakın; tüm formatlar Edge tarafından desteklenmez.
edge.rate/edge.pitch/edge.volume: yüzde dizeleri (örn.+10%,-5%).edge.saveSubtitles: ses dosyasının yanına JSON altyazıları yaz.edge.proxy: Edge TTS istekleri için proxy URL'si.edge.timeoutMs: istek zaman aşımı geçersiz kılma (ms).
Model odaklı geçersiz kılmalar (varsayılan açık)
Varsayılan olarak, model tek bir yanıt için TTS yönergeleri yayabilir.
messages.tts.auto tagged olduğunda, bu yönergeler sesi tetiklemek için gereklidir.
Etkinleştirildiğinde, model tek bir yanıt için sesi geçersiz kılmak için [[tts:...]] yönergeleri yayabilir, artı yalnızca seste görünmesi gereken etkileyici etiketleri (gülme, şarkı söyleme ipuçları, vb.) sağlamak için isteğe bağlı bir [[tts:text]]...[[/tts:text]] bloğu.
provider=... yönergeleri, modelOverrides.allowProvider: true olmadıkça göz ardı edilir.
Örnek yanıt yükü:
İşte burada.
[[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
[[tts:text]](güler) Şarkıyı bir kez daha oku.[[/tts:text]]
Kullanılabilir yönerge anahtarları (etkinleştirildiğinde):
provider(openai|elevenlabs|edge,allowProvider: truegerektirir)voice(OpenAI sesi) veyavoiceId(ElevenLabs)model(OpenAI TTS modeli veya ElevenLabs model kimliği)stability,similarityBoost,style,speed,useSpeakerBoostapplyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Tüm model geçersiz kılmalarını devre dışı bırak:
json5{ messages: { tts: { modelOverrides: { enabled: false, }, }, }, }
İsteğe bağlı izin listesi (diğer düğmeleri yapılandırılabilir tutarken sağlayıcı değiştirmeyi etkinleştir):
json5{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false, }, }, }, }
Kullanıcı başına tercihler
Slash komutları prefsPath'e yerel geçersiz kılmalar yazar (varsayılan: ~/.mayros/settings/tts.json, MAYROS_TTS_PREFS veya messages.tts.prefsPath ile geçersiz kılın).
Saklanan alanlar:
enabledprovidermaxLength(özet eşiği; varsayılan 1500 karakter)summarize(varsayılantrue)
Bunlar o ana bilgisayar için messages.tts.*'ı geçersiz kılar.
Çıktı formatları (sabit)
- Telegram: Opus sesli not (
opus_48000_64ElevenLabs'tan,opusOpenAI'dan).- 48kHz / 64kbps iyi bir sesli not dengesidir ve yuvarlak balon için gereklidir.
- Diğer kanallar: MP3 (
mp3_44100_128ElevenLabs'tan,mp3OpenAI'dan).- 44.1kHz / 128kbps, konuşma netliği için varsayılan dengedir.
- Edge TTS:
edge.outputFormatkullanır (varsayılanaudio-24khz-48kbitrate-mono-mp3).node-edge-ttsbiroutputFormatkabul eder, ancak tüm formatlar Edge hizmetinden kullanılamaz.- Çıktı formatı değerleri, Microsoft Speech çıktı formatlarını takip eder (Ogg/WebM Opus dahil).
- Telegram
sendVoice, OGG/MP3/M4A kabul eder; garantili Opus sesli notlara ihtiyacınız varsa OpenAI/ElevenLabs kullanın. - Yapılandırılan Edge çıktı formatı başarısız olursa, Mayros MP3 ile yeniden dener.
OpenAI/ElevenLabs formatları sabittir; Telegram, sesli not UX için Opus bekler.
Otomatik TTS davranışı
Etkinleştirildiğinde, Mayros:
- yanıt zaten medya veya bir
MEDIA:yönergesi içeriyorsa TTS'yi atlar. - çok kısa yanıtları atlar (< 10 karakter).
- etkinleştirildiğinde
agents.defaults.model.primary(veyasummaryModel) kullanarak uzun yanıtları özetler. - oluşturulan sesi yanıta ekler.
Yanıt maxLength'i aşarsa ve özet kapalıysa (veya özet modeli için API anahtarı yoksa), ses atlanır ve normal metin yanıtı gönderilir.
Akış diyagramı
Yanıt -> TTS etkin mi?
hayır -> metin gönder
evet -> medya / MEDIA: / kısa mı?
evet -> metin gönder
hayır -> uzunluk > limit mi?
hayır -> TTS -> ses ekle
evet -> özet etkin mi?
hayır -> metin gönder
evet -> özetle (summaryModel veya agents.defaults.model.primary)
-> TTS -> ses ekle
Slash komutu kullanımı
Tek bir komut vardır: /tts.
Etkinleştirme ayrıntıları için bkz. Slash komutları.
Discord notu: /tts yerleşik bir Discord komutudur, bu nedenle Mayros orada yerel komut olarak /voice kaydeder. Metin /tts ... hala çalışır.
/tts off
/tts always
/tts inbound
/tts tagged
/tts status
/tts provider openai
/tts limit 2000
/tts summary off
/tts audio Mayros'tan merhaba
Notlar:
- Komutlar yetkili bir gönderici gerektirir (izin listesi/sahip kuralları hala geçerlidir).
commands.textveya yerel komut kaydı etkinleştirilmelidir.off|always|inbound|taggedoturum başına geçişlerdir (/tts on,/tts alwaysiçin bir takma addır).limitvesummaryana yapılandırmada değil, yerel tercihlerde saklanır./tts audio, tek seferlik bir ses yanıtı oluşturur (TTS'yi açmaz).
Ajan aracı
tts aracı metni sese dönüştürür ve bir MEDIA: yolu döndürür. Sonuç Telegram uyumlu olduğunda, araç Telegram'ın bir ses balonu göndermesi için [[audio_as_voice]] içerir.
Ağ Geçidi RPC
Ağ Geçidi metodları:
tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers