Jeśli chcesz, aby Discord czytał tekst na głos — niezależnie od tego, czy jesteś streamerem kierującym czat Twitch do kanału głosowego, użytkownikiem, który woli pisać, czy programistą budującym niestandardowe narzędzie narracji — bot zamieniający tekst na mowę na Discord jest właściwym rozwiązaniem. Ten przewodnik obejmuje każdą praktyczną opcję dostępną w 2026 r.: boty hostowane, które możesz dodać jednym kliknięciem, natywne polecenie TTS Discord i krok po kroku instrukcje budowania niestandardowego bota z Discord.js i API ElevenLabs.
Streszczenie
- Natywne polecenie Discord /tts jest po stronie klienta — odtwarza audio poprzez lokalne głośniki słuchacza, a nie przez kanał głosowy.
- Streamcord TTS jest najpopularniejszą opcją hostowaną dla streamerów chcących odczytywać czat Twitch na głos w kanałach głosowych Discord.
- Voicemod TTS zapewnia komediowe i postaciowe głosy za pośrednictwem zarządzanego bota.
- Niestandardowy bot Discord.js + ElevenLabs daje ci najlepszą jakość głosu i pełną kontrolę, z czasem budowy poniżej godziny.
- Hotkeys do wyzwalania poleceń TTS można mapować za pomocą ustawień keybindu Discord lub zewnętrznych narzędzi, takich jak AutoHotkey.
- VoxBooster łączy się z botami TTS do hybrydowych przepływów pracy, w których chcesz zarówno syntetyzowaną narrację czatu, jak i na żywo zmodyfikowany głos.
Dlaczego istnieją boty TTS i co faktycznie robią
Wbudowane polecenie Discord /tts jest często źle rozumiane. Gdy wpiszesz /tts hello, klient pulpitu Discord czyta ten tekst na głos poprzez twoje głośniki, używając lokalnego aparatu TTS systemu operacyjnego. Inni użytkownicy w kanale go nie słyszą poprzez kanał głosowy — słyszą go tylko wtedy, gdy również mają włączony własny TTS Discord i ich klient czyta wiadomość lokalnie.
Bot zamieniający tekst na mowę na Discord działa inaczej. Bot to proces po stronie serwera z własnym połączeniem kanału głosowego. Po wyzwoleniu syntezuje mowę z tekstu i przesyła wynikowe audio do samego kanału głosowego. Wszyscy w tym kanale głosowym go słyszą, tak jak słyszeliby innego uczestnika mówiącego. Oznacza to rozróżnienie — lokalnie po stronie klienta w porównaniu z transmisją w kanale — całą przyczynę istnienia botów dla tego przypadku użycia.
Typowe scenariusze, w których to ma znaczenie:
- Konfiguracja transmisji: Transmitujesz na żywo na Twitch i chcesz, aby wiadomości czatu widzów były odczytywane na głos w rozmowie Discord, którą dzielisz ze współuczestniczącymi streamers.
- Dostępność: Członek serwera nie może lub woli nie korzystać z mikrofonu; bot TTS pozwala mu uczestniczyć w rozmowach głosowych, pisząc.
- Ogłoszenia: Bot czyta alerty moderacji, przypisania ról lub zaplanowane wiadomości do kanału bez ludzkiego operatora.
- Niestandardowa narracja: Programiści budują boty, które narracyjnie opisują zdarzenia gry, wyniki lub alerty w czasie rzeczywistym przy użyciu wysokiej jakości głosów AI.
Opcja 1: Natywne polecenie Discord /tts
Zanim sięgniesz po bota, sprawdź, czy wbudowane polecenie Discord obejmuje Twoje potrzeby.
Jak je włączyć: Na serwerze przejdź do Ustawienia serwera → Przegląd → Włącz tekst na mowę. W zaawansowanych ustawieniach kanału ustaw Zezwól każdemu na publikowanie wiadomości TTS (lub ogranicz do określonych ról).
Jak go używać: W dowolnym kanale tekstowym z włączoną funkcją TTS wpisz /tts [twoja wiadomość]. Discord czyta wiadomość na głos poprzez głośniki odbiorcy, korzystając z aparatu TTS jego systemu operacyjnego.
Ograniczenia:
- Audio trafia do lokalnych głośników, nie do transmisji kanału głosowego.
- Jakość głosu zależy od aparatu TTS systemu operacyjnego słuchacza (Microsoft David, Zira itd. na Windows).
- Każdy słuchacz musi włączyć TTS w Ustawienia → Dostępność → Zezwól na odtwarzanie i użycie polecenia /tts.
Najlepsze dla: Szybka dostępność, lub sytuacje, w których każdy użytkownik musi tylko słyszeć odczytywany tekst lokalnie — nie do transmisji lub ogłoszeń grupowych.
Opcja 2: Bot Voicemod TTS
Voicemod, znany głównie ze swojej zmieniaczki głosu na pulpicie, obsługuje bota Discord, który przenosi swoją bibliotekę do funkcji zamiany tekstu na mowę.
Co oferuje:
- Biblioteka komediowych i postaciowych głosów (robotyczne, kreskówkowe, głębokie i więcej).
- Prosty interfejs poleceń slash:
/tts [głos] [wiadomość]. - Brak przesyłania niestandardowego modelu głosu — jesteś ograniczony do predefiniowanej biblioteki Voicemod.
- Dostępna bezpłatna wersja; głosy premium wymagają subskrypcji Voicemod.
Konfiguracja:
- Odwiedź stronę bota Discord Voicemod i kliknij Dodaj do serwera.
- Autoryzuj bota za pomocą uprawnień Połącz, Mów i Czytaj wiadomości.
- Dołącz do kanału głosowego na serwerze.
- Użyj
/ttswraz z wybranym imieniem głosu i tekstem wiadomości.
Ograniczenia: Wybór głosu jest ograniczony do biblioteki Voicemod. Jeśli potrzebujesz naturalnego dźwięku głosu ludzkiego lub niestandardowej postaci, to nie będzie to obejmować.
Opcja 3: Streamcord TTS dla streamerów
Streamcord to bot zamieniający tekst na mowę na Discord z wyboru streamerów chcących odczytywać wiadomości czatu Twitch na głos w kanale głosowym Discord. Natywnie łączy Twitch i Discord.
Co oferuje:
- Łączy kanał Twitch z kanałem głosowym Discord.
- Czyta wiadomości czatu Twitch na głos z konfigurowalnym głosem, szybkością i tonem.
- Obsługuje TTS tylko dla subskrybentów, umorzenia punktów kanału jako wyzwalacze TTS i filtrowanie wiadomości.
- Konfiguracja poleceń slash i pulpitu nawigacyjnego.
Konfiguracja:
- Przejdź do streamcord.io i kliknij Dodaj do Discord.
- Autoryzuj na serwerze za pomocą wymaganych uprawnień.
- Użyj
/tts setupi postępuj zgodnie z monitami, aby połączyć kanał Twitch i wybrać docelowy kanał głosowy Discord. - Skonfiguruj ustawienia głosu na stronie streamcord.io/dashboard.
Routing kanału głosowego: Streamcord dołącza do kanału głosowego, który określisz podczas konfiguracji. Możesz zmienić kanał docelowy za pośrednictwem pulpitu nawigacyjnego bez ponownego zapraszania bota. Aby go podążył między kanałami, użyj polecenia /tts move.
Konfiguracja hotkey dla Streamcord: Sam Streamcord nie ma dedykowanego systemu hotkey na pulpicie. Streamers zwykle powiązują klawisz Push-to-Talk w Discord dla swoich własnych mikrofonów, a następnie używają oddzielnego keybindu w OBS lub StreamDeck do wyzwolenia poleceń czatu. Aby uzyskać bardziej szczegółową kontrolę, skrypty AutoHotkey mogą wysyłać polecenia /tts poprzez skróty klawiatury poprzez symulację wprowadzania Discord.
Opcja 4: Niestandardowy bot z Discord.js + API ElevenLabs
Aby uzyskać najwyższą jakość głosu i pełną kontrolę nad zachowaniem, zbuduj swój własny bot zamieniający tekst na mowę na Discord, korzystając z Discord.js v14 i API ElevenLabs. To daje ci dostęp do głosów w jakości studia ElevenLabs, klonowania głosu, syntezy wielojęzycznej i konfiguracji parametrów dla każdego żądania.
Wymagania wstępne
- Node.js 18+
- Aplikacja Discord i token bota (discord.com/developers)
- Klucz API ElevenLabs (elevenlabs.io)
- FFmpeg zainstalowany i w PATH (wymagany przez @discordjs/voice do kodowania audio)
Krok 1: Zainicjalizuj projekt
mkdir discord-tts-bot && cd discord-tts-bot
npm init -y
npm install discord.js @discordjs/voice @discordjs/opus elevenlabs libsodium-wrappers ffmpeg-static
Krok 2: Zarejestruj polecenie slash
Utwórz deploy-commands.js:
const { REST, Routes, SlashCommandBuilder } = require('discord.js');
const commands = [
new SlashCommandBuilder()
.setName('tts')
.setDescription('Speak text in your voice channel')
.addStringOption(opt =>
opt.setName('text').setDescription('Text to speak').setRequired(true)
)
].map(cmd => cmd.toJSON());
const rest = new REST({ version: '10' }).setToken(process.env.DISCORD_TOKEN);
(async () => {
await rest.put(
Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
{ body: commands }
);
console.log('Commands registered');
})();
Uruchom node deploy-commands.js raz, aby zarejestrować polecenie slash /tts na serwerze.
Krok 3: Zbuduj bota
Utwórz index.js:
const { Client, GatewayIntentBits } = require('discord.js');
const { joinVoiceChannel, createAudioPlayer, createAudioResource, AudioPlayerStatus } = require('@discordjs/voice');
const { ElevenLabsClient } = require('elevenlabs');
const { Readable } = require('stream');
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates] });
const eleven = new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_API_KEY });
const VOICE_ID = 'your-elevenlabs-voice-id'; // e.g. 'EXAVITQu4vr4xnSDxMaL' for Rachel
client.on('interactionCreate', async interaction => {
if (!interaction.isChatInputCommand() || interaction.commandName !== 'tts') return;
const text = interaction.options.getString('text');
const voiceChannel = interaction.member?.voice?.channel;
if (!voiceChannel) {
return interaction.reply({ content: 'Join a voice channel first.', ephemeral: true });
}
await interaction.deferReply({ ephemeral: true });
const audioStream = await eleven.textToSpeech.convertAsStream(VOICE_ID, {
text,
model_id: 'eleven_multilingual_v2',
voice_settings: { stability: 0.5, similarity_boost: 0.75 }
});
const connection = joinVoiceChannel({
channelId: voiceChannel.id,
guildId: interaction.guildId,
adapterCreator: interaction.guild.voiceAdapterCreator,
});
const player = createAudioPlayer();
const resource = createAudioResource(Readable.from(audioStream));
player.play(resource);
connection.subscribe(player);
player.on(AudioPlayerStatus.Idle, () => connection.destroy());
await interaction.editReply({ content: 'Speaking.' });
});
client.login(process.env.DISCORD_TOKEN);
Krok 4: Skonfiguruj zmienne środowiskowe
Utwórz .env:
DISCORD_TOKEN=your_bot_token
CLIENT_ID=your_app_client_id
GUILD_ID=your_server_id
ELEVENLABS_API_KEY=your_elevenlabs_key
Uruchom node index.js, dołącz do kanału głosowego na serwerze i wpisz /tts Hello, this is my custom TTS bot.
Wybieranie modelu głosu
ElevenLabs oferuje kilka modeli w 2026 r.:
| Model | Latency | Quality | Languages |
|---|---|---|---|
| eleven_turbo_v2_5 | ~250ms | Good | 32 |
| eleven_multilingual_v2 | ~400ms | Excellent | 29 |
| eleven_flash_v2_5 | ~75ms | Good | 32 |
Do użytku Discord w czasie rzeczywistym eleven_flash_v2_5 minimalizuje opóźnienie między poleceniem a mową. Aby ustalić priorytety jakości, eleven_multilingual_v2 jest lepszym wyborem.
Routing kanału głosowego: praktyczne wzorce
Niezależnie od tego, którego bota używasz, routing kanału głosowego podąża za tymi samymi podstawowymi wzorcami.
Wzorzec podążania za użytkownikiem: Bot dołącza do kanału głosowego, w którym znajduje się użytkownik wyzwalający w momencie użycia polecenia. To domyślnie dla większości botów i implementacja w powyższym przykładzie Discord.js. Nie jest wymagana żadna wstępna konfiguracja.
Wzorzec stałego kanału: Wyznaczasz określony identyfikator kanału w konfiguracji bota. Bot zawsze mówi w tym kanale niezależnie od tego, gdzie przebywa użytkownik wyzwalający. Najlepsze dla botów ogłoszeń lub dedykowanych pokoi TTS.
Wzorzec wielokanałowy: Bardziej złożona konfiguracja, w której różne kanały tekstowe mapują się na różne kanały głosowe. W Discord.js implementujesz to za pomocą obiektu mapy kanału i rozwiązujesz docelowy kanał głosowy z kanału tekstu źródła.
Dynamiczny wzorzec podążania: Bot monitoruje zdarzenia voiceStateUpdate i przemieszcza się, aby podążać za wyznaczonym użytkownikiem między kanałami głosowymi. Przydatne dla streamerów, którzy często przełączają się między pokojami podczas sesji.
Konfiguracja hotkey dla poleceń TTS
Większość botów TTS jest wyzwalana przez polecenia slash, a nie hotkeys. Ale możesz tworzyć efektywne przepływy pracy hotkey za pomocą kilku podejść.
Wbudowane keybindy Discord: Przejdź do Ustawienia Discord → Keybindy. Nie możesz tutaj powiązać dowolnych poleceń tekstowych — tylko push-to-talk, deafen, mute i podobne działania Discord. Dla TTS, keybindy nie mają bezpośredniego zastosowania.
AutoHotkey (Windows): Możesz mapować hotkey do wpisania polecenia /tts [preset message] i naciśnięcia Enter w oknie Discord:
^F1:: ; Ctrl+F1
WinActivate, Discord
Send, /tts Your preset message here{Enter}
return
StreamDeck: Jeśli korzystasz z Elgato StreamDeck, akcja „Tekst” może wysyłać naciśnięcia klawiszy do każdego aktywnego okna. Skonfiguruj przycisk StreamDeck, aby skupić się na wprowadzaniu tekstu Discord i wpisz polecenie /tts. Jest to szybsze i bardziej niezawodne niż AutoHotkey dla scenariuszy transmisji na żywo.
Słowa kluczowe po stronie bota: W przypadku niestandardowych botów możesz wdrożyć wyzwalacz prefiksu w kanale tekstowym zamiast polecenia slash — każda wiadomość w wyznaczonym kanale, która zaczyna się od skonfigurowanego prefiksu, jest automatycznie wysyłana do TTS. Zmienia to każdą wiadomość w wyzwalacz TTS bez hotkey.
Hybrydowe przepływy pracy: boty TTS + modyfikator głosu na żywo
Bot TTS obsługuje syntetyzowaną mowę z tekstu. Nie dotyka twojego mikrofonu. Oznacza to, że boty TTS i modyfikatory głosu na żywo, takie jak VoxBooster, współistnieją bez konfliktów w tym samym kanale głosowym.
Praktyczna konfiguracja hybrydowa dla streamerów:
- Streamcord TTS czyta wiadomości czatu Twitch na głos w kanale głosowym Discord, w którym znajdują się współpracujący streamers.
- VoxBooster modyfikuje twój głos mikrofonu na żywo w czasie rzeczywistym — niezależnie od tego, czy jest to tłumienie szumów, efekt tonu czy sklonowana persona głosu.
- Współpracujący streamers słyszą obie: bot TTS mówiący wiadomości widza i twój zmodyfikowany głos na żywo.
Dwa strumienie audio są niezależne. Bot TTS generuje audio z własnego połączenia. Audio mikrofonu przechodzi przez urządzenie wirtualne VoxBooster przed dotarciem do Discord. Discord miesza je tak samo, jak miesza każdych dwóch uczestników w kanale.
To hybrydowe podejście jest szczególnie skuteczne dla twórców treści, którzy chcą bogatszego środowiska audio bez wymagania od widzów lub współpracujących streamerów instalacji czegokolwiek poza Discord.
Rozwiązywanie typowych problemów
Bot dołącza, ale nie wytwarza audio: Sprawdź, czy FFmpeg jest w PATH i czy @discordjs/opus zainstalował się pomyślnie. Uruchom ffmpeg -version w terminalu, aby sprawdzić. Jeśli brakuje opus, spróbuj npm rebuild @discordjs/opus.
Polecenie TTS ma duże opóźnienie: Opóźnienie API ElevenLabs zależy od wybranego modelu i długości tekstu wejściowego. Przełącz na eleven_flash_v2_5 dla niższego opóźnienia. Dla wiadomości dłuższych niż ~200 znaków rozważ podzielenie tekstu przed wysłaniem.
Bot rozłącza się w trakcie odtwarzania: Zwykle jest to limit czasu połączenia głosowego. Dodaj procedurę obsługi connection.on('error') i ponownie połącz w przypadku awarii. Upewnij się, że serwer ma stabilną łączność wychodzącą UDP na porcie 443 (protokół głosu Discord).
Bot Streamcord TTS nie czyta wszystkich wiadomości: Streamcord filtruje pewne typy wiadomości domyślnie. Sprawdź pulpit nawigacyjny Streamcord w sekcji Filtry, aby zezwolić na wiadomości inne niż subskrybent i wyłączyć filtrowanie treści w razie potrzeby.
Polecenie Discord /tts nie działa: Potwierdź, że TTS jest włączone w ustawieniach serwera i że określony kanał zezwala na TTS. Użytkownicy indywidualni muszą również włączyć odtwarzanie TTS w swoich ustawieniach dostępności Discord.
Podsumowanie
W 2026 r. ustawienie bota zamieniającego tekst na mowę na Discord zajmuje od dwóch minut (Streamcord lub Voicemod) do poniżej godziny (niestandardowy Discord.js + ElevenLabs). Właściwy wybór zależy od wymagań jakości głosu, ile dostosowań potrzebujesz i czy budujesz dla własnego serwera, czy dla produktywnej konfiguracji transmisji. Natywny Discord /tts obejmuje podstawowe odtwarzanie po stronie klienta bez żadnego bota. Boty hostowane, takie jak Streamcord, obejmują przypadek użycia streamers z minimalną konfiguracją. Niestandardowy bot Discord.js z ElevenLabs daje ci głosy AI w jakości studia z pełną programową kontrolą nad każdym aspektem mowy.
Aby uzyskać najbardziej wszechstronną konfigurację audio transmisji, połącz bota TTS do narracji czatu z VoxBooster do modyfikacji głosu na żywo — dwa narzędzia, jeden kanał głosowy, brak konfliktów.