uvicorn[standard] pulls in uvloop, httptools, watchfiles — Cython/C extensions. README claims "네이티브 빌드 0" and the whole point of edge-test is to avoid wheel build failures, so plain uvicorn matches the stated invariant. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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 와 동일하게.
참고
- edge-tts (Python): https://github.com/rany2/edge-tts
- Azure Neural Voices 목록: https://learn.microsoft.com/azure/ai-services/speech-service/language-support