Discord 봇을 위한 다국어 TTS(Text-to-Speech) 라이브러리
Project description
Discord TTS
Discord 봇을 위한 다국어 TTS(Text-to-Speech) 라이브러리입니다.
설치 방법
pip install discord-tts
필수 요구사항
이 라이브러리는 FFmpeg가 필요합니다. 시스템에 FFmpeg를 먼저 설치해주세요:
- Windows: FFmpeg 다운로드에서 다운로드 후 PATH 추가
- macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg(Ubuntu/Debian) 또는sudo yum install ffmpeg(CentOS/RHEL)
주요 기능
- 다국어 지원 (한국어, 영어, 일본어, 중국어 등 13개 언어)
- 음성 속도 조절
- 음량 조절
- 고급 텍스트 필터링
- 정규식 기반 패턴 매칭
- 기본 패턴 지원 (한글, 영문, 숫자, 특수문자, URL, 멘션, 이모지)
- 사용자 정의 패턴 추가
- 패턴 제거/유지 옵션
- 최대 길이 제한
- 기본 필터링: URL, 멘션, 이모지 자동 제거
- 임시 파일 자동 관리
- 오래된 파일 자동 정리 (기본: 1시간)
- 디스크 공간 효율적 관리
- 음성 채널 관리
- FFmpeg 자동 검사
- 향상된 에러 처리 및 네트워크 오류 감지
사용 예시
기본 사용법
import discord
from discord.ext import commands
from discord_tts import TTSManager
bot = commands.Bot(command_prefix='!')
@bot.command()
async def tts(ctx, *, text):
# TTS 매니저 초기화
tts_manager = TTSManager()
# 사용자의 음성 채널 확인
if not ctx.author.voice:
await ctx.send("음성 채널에 먼저 입장해주세요!")
return
# 봇이 음성 채널에 없으면 입장
if not ctx.voice_client:
await ctx.author.voice.channel.connect()
# TTS 재생
try:
await tts_manager.play_tts(
text=text,
voice_client=ctx.voice_client
)
except Exception as e:
await ctx.send(f"오류가 발생했습니다: {str(e)}")
bot.run('YOUR_BOT_TOKEN')
다국어 지원
# 영어로 TTS 재생
await tts_manager.play_tts(
text="Hello, World!",
voice_client=voice_client,
lang='en'
)
# 일본어로 TTS 재생
await tts_manager.play_tts(
text="こんにちは",
voice_client=voice_client,
lang='ja'
)
음성 속도와 음량 조절
# 느린 속도로 재생
await tts_manager.play_tts(
text="안녕하세요",
voice_client=voice_client,
slow=True
)
# 음량 조절 (0.0 ~ 1.0)
await tts_manager.play_tts(
text="안녕하세요",
voice_client=voice_client,
volume=0.5
)
텍스트 필터링
from discord_tts import clean_text
# 기본 필터링 (URL, 멘션, 이모지 자동 제거)
text = clean_text("안녕하세요! @user https://example.com 😊")
# 결과: "안녕하세요!"
# 한글만 유지
text = clean_text(
"안녕하세요! Hello World! 123",
keep_patterns=['korean']
)
# 결과: "안녕하세요"
# 숫자만 유지
text = clean_text(
"전화번호는 010-1234-5678입니다",
keep_patterns=['numbers']
)
# 결과: "01012345678"
# URL과 멘션 제거
text = clean_text(
"안녕하세요! @user https://example.com",
remove_patterns=['url', 'mention']
)
# 결과: "안녕하세요!"
# 사용자 정의 패턴 추가
custom_patterns = {
'phone': r'\d{3}-\d{4}-\d{4}', # 전화번호 패턴
'email': r'[\w\.-]+@[\w\.-]+' # 이메일 패턴
}
text = clean_text(
"연락처: 010-1234-5678, 이메일: test@example.com",
patterns=custom_patterns,
keep_patterns=['phone', 'email']
)
# 결과: "010-1234-5678 test@example.com"
# 최대 길이 제한
text = clean_text("안녕하세요!", max_length=5)
# 결과: "안녕하세"
지원하는 언어 목록 확인
tts_manager = TTSManager()
supported_languages = tts_manager.get_supported_languages()
print(supported_languages)
지원하는 언어
- 한국어 (ko)
- 영어 (en)
- 일본어 (ja)
- 중국어 간체 (zh-CN)
- 중국어 번체 (zh-TW)
- 스페인어 (es)
- 프랑스어 (fr)
- 독일어 (de)
- 러시아어 (ru)
- 포르투갈어 (pt)
- 이탈리아어 (it)
- 힌디어 (hi)
- 아랍어 (ar)
버전 히스토리
v0.2.0 (2025-01-25) - 안정성 개선 업데이트
주요 버그 수정
- ✅ 음량 조절 기능 수정:
PCMVolumeTransformer를 올바르게 적용하여 volume 매개변수가 정상 작동 - ✅ 파일 정리 타이밍 수정: 재생 완료 후에만 임시 파일 삭제 (재생 중 파일 삭제 방지)
- ✅ 파일명 충돌 방지: 마이크로초 단위 타임스탬프 추가로 동시 요청 처리 개선
새로운 기능
- ⭐ FFmpeg 자동 검사: 라이브러리 초기화 시 FFmpeg 설치 여부 확인 및 안내
- ⭐ 자동 파일 정리: 오래된 임시 TTS 파일 자동 삭제 (max_cache_age 옵션)
- ⭐ 기본 텍스트 필터링: clean_text() 호출 시 URL, 멘션, 이모지 기본 제거
- ⭐ 동시 재생 방지: 여러 TTS 요청 순차 처리로 안정성 향상
- ⭐ 새로운 예외 클래스:
FFmpegNotFoundError,NetworkError추가
성능 개선
- 🚀 비동기 I/O 개선: gTTS 파일 저장을 executor로 실행하여 블로킹 방지
- 🚀 네트워크 오류 처리: gTTS API 호출 실패 시 명확한 에러 메시지
- 🚀 향상된 타입 힌트: 모든 공개 API에 완전한 타입 힌트 적용
자세한 변경사항은 CHANGELOG.md를 참고하세요.
v0.1.0 (2025-05-15) - 초기 릴리스
- 기본 TTS 기능
- 다국어 지원
- 텍스트 필터링
라이선스
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
discord_tts-0.2.0.tar.gz
(11.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file discord_tts-0.2.0.tar.gz.
File metadata
- Download URL: discord_tts-0.2.0.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae08444695cc78ac0d5a58990b78ce7ee83546a9f614f9269942143ea7f7ac7d
|
|
| MD5 |
4273634140f534d21430d1cb8ca2754c
|
|
| BLAKE2b-256 |
e34358e143c299b96681f67f0c3c8eecc897f1384aadf7d47472406d745d09e5
|
File details
Details for the file discord_tts-0.2.0-py3-none-any.whl.
File metadata
- Download URL: discord_tts-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18db81d97a13693e411deeef0b5ee409c8a140d8e46facdc3a0c437647fdb1fd
|
|
| MD5 |
64341690710d76dce9fbfddb706ef20f
|
|
| BLAKE2b-256 |
f32d5a0aa5dfc9b86ef35ea94929a6a5ffad1d43bc2fc8fb6acc61de39fee725
|