텍스트 음성 변환 Discord 봇 설정 가이드 (2026)

2026년 Discord에서 텍스트 음성 변환 봇을 설정하기 위한 완전한 가이드. Voicemod TTS, Streamcord, 사용자 정의 Discord.js + ElevenLabs 봇, 음성 채널 라우팅 및 핫키를 다룹니다.

Discord가 텍스트를 큰 소리로 말하도록 하고 싶다면 — Twitch 채팅을 음성 채널로 라우팅하는 스트리머이든, 입력하기를 선호하는 사용자이든, 사용자 정의 내레이션 도구를 구축하는 개발자이든 — 텍스트 음성 변환 Discord 봇이 올바른 솔루션입니다. 이 가이드는 2026년에 사용 가능한 모든 실용적인 옵션을 다룹니다: 한 번의 클릭으로 추가할 수 있는 호스팅된 봇, 기본 Discord TTS 명령, 그리고 Discord.js 및 ElevenLabs API로 사용자 정의 봇을 구축하는 단계별 설명입니다.


요약

  • Discord의 기본 /tts 명령은 클라이언트 측입니다. 음성 채널이 아닌 수신자의 스피커를 통해 오디오를 재생합니다.
  • Streamcord TTS는 Twitch 채팅을 Discord 음성 채널에서 크게 읽고 싶어하는 스트리머들을 위한 가장 인기 있는 호스팅 옵션입니다.
  • Voicemod TTS는 관리되는 봇을 통해 재미있고 성격 있는 음성을 제공합니다.
  • 사용자 정의 Discord.js + ElevenLabs 봇은 최고의 음성 품질과 완전한 제어를 제공하며, 빌드 시간은 1시간 미만입니다.
  • TTS 명령을 트리거하기 위한 핫키는 Discord의 키바인드 설정 또는 AutoHotkey와 같은 외부 도구를 통해 매핑할 수 있습니다.
  • VoxBooster는 합성 채팅 내레이션과 실시간 수정된 음성을 모두 원하는 하이브리드 워크플로용 TTS 봇과 쌍을 이룹니다.

TTS 봇이 존재하는 이유와 실제로 하는 일

Discord의 기본 제공 /tts 명령은 자주 오해를 받습니다. /tts hello를 입력하면 Discord 데스크톱 클라이언트가 운영 체제의 로컬 TTS 엔진을 사용하여 당신의 스피커를 통해 해당 텍스트를 크게 읽습니다. 채널의 다른 사용자는 음성 채널을 통해 이를 듣지 못합니다. 또한 자신의 Discord TTS를 켜져 있고 클라이언트가 로컬로 메시지를 읽는 경우에만 들을 수 있습니다.

텍스트 음성 변환 Discord 봇은 다르게 작동합니다. 봇은 자체 음성 채널 연결이 있는 서버 측 프로세스입니다. 트리거될 때 텍스트에서 음성을 합성하고 결과 오디오를 음성 채널 자체로 스트리밍합니다. 해당 음성 채널의 모든 사람이 이를 듣습니다. 다른 참가자가 말하는 것처럼 같은 방식입니다. 이러한 구별 — 클라이언트 로컬 대 채널 브로드캐스트 — 이 사용 사례에 대해 봇이 존재하는 전체 이유입니다.

이것이 중요한 일반적인 시나리오:

  • 스트리밍 설정: Twitch에서 라이브 중이고 공동 스트리머와 공유하는 Discord 음성 통화에서 뷰어의 채팅 메시지를 크게 읽고 싶습니다.
  • 접근성: 서버 구성원이 마이크를 사용할 수 없거나 사용하지 않으려고 합니다. TTS 봇을 사용하면 입력하여 음성 대화에 참여할 수 있습니다.
  • 공지사항: 봇이 중재 알림, 역할 할당 또는 예약된 메시지를 사람 운영자 없이 채널에 읽습니다.
  • 사용자 정의 내레이션: 개발자는 게임 이벤트, 점수 또는 경고를 실시간으로 고품질 AI 음성을 사용하여 설명하는 봇을 구축합니다.

옵션 1: Discord의 기본 /tts 명령

봇에 도달하기 전에 Discord의 기본 제공 명령이 필요한 것을 충족하는지 확인하세요.

활성화하는 방법: 서버에서 서버 설정 → 개요 → 텍스트 음성 변환 활성화로 이동합니다. 채널의 고급 설정에서 누구든 TTS 메시지 게시 허용(또는 특정 역할로 제한)을 설정합니다.

사용하는 방법: TTS가 활성화된 모든 텍스트 채널에서 /tts [메시지]를 입력합니다. Discord가 받는 사람의 운영 체제 TTS 엔진을 사용하여 메시지를 스피커를 통해 읽습니다.

제한 사항:

  • 오디오는 로컬 스피커로 이동하며, 음성 채널 브로드캐스트로는 이동하지 않습니다.
  • 음성 품질은 수신자의 OS TTS 엔진(Windows의 Microsoft David, Zira 등)에 따라 달라집니다.
  • 모든 수신자는 설정 → 접근성 → /tts 명령의 재생 및 사용 허용에서 TTS를 켜야 합니다.

최고: 빠른 접근성 또는 모든 사용자가 로컬로 읽은 텍스트를 들어야 하는 상황 — 스트리밍이나 그룹 공지사항에는 아닙니다.


옵션 2: Voicemod TTS 봇

Voicemod는 데스크톱 음성 변경기로 가장 잘 알려져 있으며 Discord 봇을 운영하여 음성 라이브러리를 텍스트 음성 변환 기능으로 가져옵니다.

제공 사항:

  • 재미있고 캐릭터 음성의 라이브러리(로봇, 만화, 깊은 음성 등).
  • 간단한 슬래시 명령 인터페이스: /tts [음성] [메시지].
  • 사용자 정의 음성 모델 업로드 없음 — Voicemod의 사전 정의된 라이브러리로 제한됩니다.
  • 무료 버전 사용 가능; 프리미엄 음성은 Voicemod 구독이 필요합니다.

설정:

  1. Voicemod Discord 봇 페이지를 방문하여 서버에 추가를 클릭합니다.
  2. 연결, 말하기, 메시지 읽기 권한으로 봇을 승인합니다.
  3. 서버의 음성 채널에 참여합니다.
  4. /tts를 사용한 후 선택한 음성 이름과 메시지 텍스트를 입력합니다.

제한 사항: 음성 선택은 Voicemod 라이브러리로 제한됩니다. 자연스러운 인간의 음성이나 사용자 정의 캐릭터가 필요하면 이것이 충족되지 않습니다.


옵션 3: 스트리머를 위한 Streamcord TTS

Streamcord는 Twitch 채팅 메시지를 Discord 음성 채널에서 크게 읽고 싶어하는 스트리머가 선택하는 텍스트 음성 변환 Discord 봇입니다. Twitch와 Discord를 기본적으로 연결합니다.

제공 사항:

  • Twitch 채널을 Discord 음성 채널에 연결합니다.
  • 구성 가능한 음성, 속도 및 피치로 Twitch 채팅 메시지를 크게 읽습니다.
  • 구독자 전용 TTS, 채널 포인트 환전을 TTS 트리거로, 메시지 필터링을 지원합니다.
  • 슬래시 명령 및 대시보드 구성입니다.

설정:

  1. streamcord.io로 이동하여 Discord에 추가를 클릭합니다.
  2. 필요한 권한으로 서버에서 승인합니다.
  3. /tts setup을 사용하고 프롬프트를 따라 Twitch 채널을 연결하고 대상 Discord 음성 채널을 선택합니다.
  4. streamcord.io/dashboard에서 음성 설정을 구성합니다.

음성 채널 라우팅: Streamcord는 설정 중에 지정한 음성 채널에 참여합니다. 봇을 다시 초대하지 않고 대시보드를 통해 대상 채널을 변경할 수 있습니다. 채널 간 이동을 따르게 하려면 /tts move 명령을 사용합니다.

Streamcord용 핫키 설정: Streamcord 자체는 전용 데스크톱 핫키 시스템이 없습니다. 스트리머는 일반적으로 Discord에서 자신의 마이크에 대한 Push-to-Talk 키를 바인드한 다음 채팅 명령을 트리거하기 위해 OBS 또는 StreamDeck에서 별도의 키바인드를 사용합니다. 더 세분화된 제어를 위해 AutoHotkey 스크립트는 Discord 입력을 시뮬레이션하여 키보드 단축키를 통해 /tts 명령을 보낼 수 있습니다.


옵션 4: Discord.js + ElevenLabs API가 있는 사용자 정의 봇

최고의 음성 품질과 완전한 동작 제어를 위해 Discord.js v14 및 ElevenLabs API를 사용하여 자신의 텍스트 음성 변환 Discord 봇을 구축하세요. 이를 통해 ElevenLabs의 스튜디오 품질 음성, 음성 복제, 다국어 합성 및 요청별 매개변수 조정에 액세스할 수 있습니다.

전제 조건

  • Node.js 18+
  • Discord 응용 프로그램 및 봇 토큰(discord.com/developers)
  • ElevenLabs API 키(elevenlabs.io)
  • FFmpeg가 설치되고 PATH에 있음(@discordjs/voice가 오디오 인코딩을 위해 필요)

1단계: 프로젝트 초기화

mkdir discord-tts-bot && cd discord-tts-bot
npm init -y
npm install discord.js @discordjs/voice @discordjs/opus elevenlabs libsodium-wrappers ffmpeg-static

2단계: 슬래시 명령 등록

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');
})();

node deploy-commands.js를 한 번 실행하여 서버에 /tts 슬래시 명령을 등록합니다.

3단계: 봇 구축

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);

4단계: 환경 변수 구성

.env 생성:

DISCORD_TOKEN=your_bot_token
CLIENT_ID=your_app_client_id
GUILD_ID=your_server_id
ELEVENLABS_API_KEY=your_elevenlabs_key

node index.js를 실행하고 서버의 음성 채널에 참여한 다음 /tts Hello, this is my custom TTS bot를 입력합니다.

음성 모델 선택

ElevenLabs는 2026년에 여러 모델을 제공합니다:

ModelLatencyQualityLanguages
eleven_turbo_v2_5~250msGood32
eleven_multilingual_v2~400msExcellent29
eleven_flash_v2_5~75msGood32

실시간 Discord 사용의 경우 eleven_flash_v2_5는 명령과 음성 사이의 지연을 최소화합니다. 품질 우선 내레이션의 경우 eleven_multilingual_v2이 더 나은 선택입니다.


음성 채널 라우팅: 실용적 패턴

사용하는 봇이 무엇이든 음성 채널 라우팅은 동일한 기본 패턴을 따릅니다.

사용자 팔로우 패턴: 봇은 명령을 사용할 때 호출 사용자가 있는 음성 채널에 참여합니다. 이것이 대부분의 봇에 기본이고 위의 Discord.js 예제의 구현입니다. 사전 구성이 필요하지 않습니다.

고정 채널 패턴: 봇의 구성에서 특정 채널 ID를 지정합니다. 봇은 호출 사용자가 어디에 있는지 관계없이 항상 해당 채널에서 말합니다. 공지사항 봇이나 전용 TTS 방에 최고입니다.

다중 채널 패턴: 다른 텍스트 채널이 다른 음성 채널에 매핑되는 더 복잡한 설정입니다. Discord.js에서는 채널 맵 객체를 사용하여 구현하고 소스 텍스트 채널에서 대상 음성 채널을 해결합니다.

동적 팔로우 패턴: 봇이 voiceStateUpdate 이벤트를 모니터링하고 음성 채널 간에 지정된 사용자를 따르도록 이동합니다. 세션 중에 자주 방을 전환하는 스트리머에 유용합니다.


TTS 명령에 대한 핫키 설정

대부분의 TTS 봇은 핫키가 아닌 슬래시 명령으로 트리거됩니다. 하지만 몇 가지 방법으로 효과적인 핫키 워크플로를 만들 수 있습니다.

Discord의 기본 제공 키바인드: Discord 설정 → 키바인드로 이동합니다. 임의의 텍스트 명령을 여기에 바인드할 수 없습니다. Push-to-Talk, Deafen, Mute 및 유사한 Discord 작업만 가능합니다. TTS의 경우 키바인드가 직접 적용되지 않습니다.

AutoHotkey (Windows): /tts [사전 설정 메시지] 명령을 입력하고 Discord 창에서 Enter를 누르도록 핫키를 매핑할 수 있습니다:

^F1:: ; Ctrl+F1
  WinActivate, Discord
  Send, /tts Your preset message here{Enter}
return

StreamDeck: Elgato StreamDeck을 사용하는 경우 “텍스트” 작업은 활성 창으로 키 스트로크를 보낼 수 있습니다. StreamDeck 버튼을 구성하여 Discord 텍스트 입력에 포커스를 하고 /tts 명령을 입력합니다. 이는 라이브 스트리밍 시나리오에서 AutoHotkey보다 빠르고 안정적입니다.

봇 측 핫워드: 사용자 정의 봇의 경우 슬래시 명령 대신 텍스트 채널에서 접두사 트리거를 구현할 수 있습니다. 구성된 접두사로 시작하는 지정된 채널의 모든 메시지는 자동으로 TTS로 전송됩니다. 이는 모든 메시지를 핫키 없는 TTS 트리거로 변환합니다.


하이브리드 워크플로: TTS 봇 + 라이브 음성 수정자

TTS 봇은 텍스트에서 합성된 음성을 처리합니다. 마이크를 건드리지 않습니다. 이는 TTS 봇과 VoxBooster와 같은 라이브 음성 수정자가 같은 음성 채널에서 충돌 없이 공존한다는 의미입니다.

스트리머를 위한 실용적 하이브리드 설정:

  1. Streamcord TTS는 공동 스트리머가 있는 Discord 음성 채널에서 Twitch 채팅 메시지를 크게 읽습니다.
  2. VoxBooster는 실시간으로 라이브 마이크 음성을 수정합니다. 노이즈 억제, 피치 효과 또는 복제된 음성 페르소나가 될 수 있습니다.
  3. 공동 스트리머는 두 가지를 모두 듣습니다: TTS 봇이 뷰어 메시지를 말하고 당신의 수정된 라이브 음성이 들립니다.

두 오디오 스트림은 독립적입니다. TTS 봇은 자체 연결에서 오디오를 생성합니다. 마이크 오디오는 Discord에 도달하기 전에 VoxBooster의 가상 장치를 통해 이동합니다. Discord는 채널의 다른 두 참가자를 혼합하는 것처럼 이들을 혼합합니다.

이 하이브리드 접근 방식은 Discord 이상의 것을 설치하도록 뷰어나 공동 스트리머에게 요구하지 않고 더 풍부한 오디오 환경을 원하는 콘텐츠 크리에이터에게 특히 효과적입니다.


일반적인 문제 해결

봇이 참여하지만 오디오가 없음: FFmpeg이 PATH에 있고 @discordjs/opus가 성공적으로 설치되었는지 확인합니다. 터미널에서 ffmpeg -version을 실행하여 확인합니다. opus가 누락된 경우 npm rebuild @discordjs/opus을 시도합니다.

TTS 명령 지연 시간이 김: ElevenLabs API 지연 시간은 선택한 모델과 입력 텍스트의 길이에 따라 다릅니다. 낮은 지연 시간을 위해 eleven_flash_v2_5로 전환합니다. ~200자보다 긴 메시지의 경우 전송 전에 텍스트 분할을 고려합니다.

봇이 재생 중에 연결 해제: 일반적으로 음성 연결 시간 초과입니다. connection.on('error') 처리기를 추가하고 실패 시 다시 연결합니다. 서버에 포트 443(Discord의 음성 프로토콜)에 대한 안정적인 아웃바운드 UDP 연결이 있는지 확인합니다.

Streamcord TTS가 모든 메시지를 읽지 않음: Streamcord는 기본적으로 특정 메시지 유형을 필터링합니다. 필터에서 Streamcord 대시보드를 확인하여 비구독자 메시지를 허용하고 필요한 경우 콘텐츠 필터링을 비활성화합니다.

Discord /tts 명령이 작동하지 않음: TTS가 서버 설정에서 활성화되어 있고 특정 채널이 TTS를 허용하는지 확인합니다. 개별 사용자는 자신의 Discord 접근성 설정에서 TTS 재생을 활성화해야 합니다.


요약

2026년에 텍스트 음성 변환 Discord 봇을 설정하는 데에는 2분(Streamcord 또는 Voicemod)에서 1시간 미만(사용자 정의 Discord.js + ElevenLabs)이 소요됩니다. 올바른 선택은 음성 품질 요구 사항, 필요한 사용자 정의 양, 자신의 서버 또는 프로덕션 스트리밍 설정을 위해 빌드하는지에 따라 달라집니다. 기본 Discord /tts는 봇 없이 기본 클라이언트 측 재생을 다룹니다. Streamcord와 같은 호스팅된 봇은 최소 설정으로 스트리머 사용 사례를 다룹니다. ElevenLabs가 있는 사용자 정의 Discord.js 봇은 음성의 모든 측면에 대한 완전한 프로그래매틱 제어를 갖춘 스튜디오 품질 AI 음성을 제공합니다.

가장 다재다능한 스트리밍 오디오 설정을 위해 채팅 내레이션을 위한 TTS 봇과 라이브 음성 수정을 위한 VoxBooster를 결합하세요. 두 가지 도구, 하나의 음성 채널, 충돌 없음.

VoxBooster 체험 — 3일 무료.

실시간 음성 클론, 사운드보드, 이펙트 — 대화하는 모든 곳에서.

  • 카드 불필요
  • ~30ms 지연
  • Discord · Teams · OBS
3일 무료 체험