Files
tts_bot/edge-test
Claude Owner d3aeab937b test(edge): add Microsoft Edge TTS Korean test harness
Pure-Python alternative to melo-test/ when the MeloTTS native build
chain (MeCab/Rust/fugashi/mecab-python3/tokenizers) refuses to install.

- edge-test/server.py: FastAPI + edge_tts.Communicate.stream() -> mp3,
  9 Korean Neural voices, rate/pitch knobs.
- edge-test/index.html: voice selector + rate/pitch + presets + audio.
- requirements.txt: edge-tts + fastapi + uvicorn. No native deps.
- README: comparison table vs MeloTTS, setup, caveat that edge-tts is
  an unofficial wrapper over the Edge "Read Aloud" endpoint.

Default port 7861 so it coexists with melo-test/ (7860).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 16:07:27 +09:00
..

Microsoft Edge TTS — 한국어 테스트 환경

MeloTTS 의 빌드 의존성(MeCab, Rust, fugashi, mecab-python3, tokenizers)이 계속 깨질 때 사용할 수 있는 즉시 실행 가능한 대안.

내부적으로 Microsoft Edge 브라우저의 "소리내어 읽기" 가 쓰는 Azure Neural Voice 엔드포인트를 호출합니다(공식 SDK 가 아닌 커뮤니티 라이브러리 edge-tts).

왜 이걸 먼저 테스트해보는 게 좋은가

항목 MeloTTS-Korean Edge TTS
설치 시간 5~15분 + 모델 가중치 수백 MB 30초, 의존성 4개
네이티브 빌드 MeCab + Rust + PyTorch 없음
Python 버전 3.10/3.11 강제 3.9+ 어디서나
자연스러움(한국어) 좋음 Azure Neural 그대로, 매우 자연
비용 무료(MIT) 무료(비공식 Edge 엔드포인트)
지연 첫 호출 후 ms 단위 200~500ms 정도(네트워크)
보이스 수 1 (KR) 9 (남/여/시니어/다국어)
안정성 위험 자가호스팅 = 본인 책임 MS 가 정책 바꾸면 끊길 수 있음

테스트 우선순위로는 Edge TTS 를 먼저 들어보고, 마음에 들면 그대로 채택, "오프라인/내부망/완전 자체 호스팅" 요구가 있으면 MeloTTS Docker 로 진행하는 흐름을 권합니다.

설치 & 실행

# 1. 가상환경
python -m venv .venv
source .venv/bin/activate         # Windows: .venv\Scripts\activate

# 2. 의존성 (30초)
pip install --upgrade pip
pip install -r requirements.txt

# 3. 서버
python server.py
# 포트 변경: PORT=8001 python server.py  (기본 7861)

브라우저: http://localhost:7861

MeloTTS 테스트(melo-test/, 포트 7860)와 동시에 띄울 수 있도록 기본 포트가 다릅니다.

API

POST /tts
Content-Type: application/json

{
  "text": "안녕하세요.",
  "voice": "ko-KR-SunHiNeural",
  "rate": "+0%",
  "pitch": "+0Hz"
}

응답: audio/mpeg (MP3). 헤더 X-Synth-Ms 에 합성 ms.

GET /voices

응답: 한국어 보이스 목록(JSON).

사용 가능한 한국어 보이스

  • ko-KR-SunHiNeural — 여, 차분 (디폴트)
  • ko-KR-InJoonNeural — 남, 표준
  • ko-KR-BongJinNeural — 남, 중후
  • ko-KR-GookMinNeural — 남, 친근
  • ko-KR-HyunsuMultilingualNeural — 남, 다국어
  • ko-KR-JiMinNeural — 여, 밝음
  • ko-KR-SeoHyeonNeural — 여, 차분
  • ko-KR-SoonBokNeural — 여, 시니어 여성
  • ko-KR-YuJinNeural — 여, 표준

주의

  • edge-tts 는 비공식 라이브러리입니다. Microsoft 가 엔드포인트를 바꾸면 끊깁니다(과거 수년간은 안정적이었음).
  • 운영 안정성/SLA 가 필요하면 Azure Cognitive Services(유료)로 같은 보이스를 정식 사용할 수 있습니다 — 코드 거의 동일.
  • 봇에 붙일 때 디스코드 메시지 전체를 다 보내면 텍스트가 외부 서비스에 흘러갑니다. 사내·민감 채널엔 부적합.

디스코드 봇 연동 (테스트 성공 후)

src/utils/tts/Edge.ts 를 추가하고 src/classes/TTSClient.ts 의 import 교체. textToSpeech(text): Promise<Buffer> 시그니처는 Chzzk.ts / Google.ts 와 동일하게.

참고