RealtimeTTS는 낮은 지연 시간과 고품질 오디오 출력이 필요한 실시간 애플리케이션을 위해 설계된 고급 실시간 텍스트 음성 변환(TTS) Python 라이브러리입니다. 이 라이브러리는 텍스트 스트림을 매우 낮은 지연 시간으로 고품질 오디오 출력으로 빠르게 변환할 수 있어 음성 비서, AI 대화 시스템 및 접근성 도구를 구축하는 데 이상적입니다.
프로젝트 주소: https://github.com/KoljaB/RealtimeTTS
RealtimeTTS는 다양한 TTS 엔진을 지원하여 풍부한 선택지를 제공합니다.
pip install -U realtimetts[all]
필요에 따라 특정 엔진 지원을 선택할 수 있습니다.
# 시스템 TTS만
pip install realtimetts[system]
# Azure 지원
pip install realtimetts[azure]
# 다중 엔진 조합
pip install realtimetts[azure,elevenlabs,openai]
all
: 전체 설치, 모든 엔진 지원system
: 로컬 시스템 TTS (pyttsx3)azure
: Azure 음성 서비스 지원elevenlabs
: ElevenLabs API 통합openai
: OpenAI TTS 서비스gtts
: Google 텍스트 음성 변환edge
: Microsoft Edge TTScoqui
: Coqui TTS 엔진minimal
: 핵심 패키지만 (사용자 정의 엔진 개발용)play_async()
메서드는 비차단 재생 지원play()
메서드는 차단식 재생에 사용모니터링 및 제어를 위한 풍부한 콜백 함수 제공:
on_text_stream_start()
: 텍스트 스트림 시작 시 트리거on_text_stream_stop()
: 텍스트 스트림 종료 시 트리거on_audio_stream_start()
: 오디오 재생 시작 시 트리거on_audio_stream_stop()
: 오디오 재생 종료 시 트리거on_character()
: 각 문자 처리 시 트리거on_word()
: 단어 수준의 시간 동기화 (Azure 및 Kokoro 엔진 지원)from RealtimeTTS import TextToAudioStream, SystemEngine
# 엔진 및 스트림 생성
engine = SystemEngine()
stream = TextToAudioStream(engine)
# 텍스트 입력 및 재생
stream.feed("Hello world! How are you today?")
stream.play_async()
# 문자열 처리
stream.feed("Hello, this is a sentence.")
# 생성기 처리 (LLM 출력에 적합)
def write(prompt: str):
for chunk in openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
stream=True
):
if (text_chunk := chunk["choices"][0]["delta"].get("content")) is not None:
yield text_chunk
text_stream = write("A three-sentence relaxing speech.")
stream.feed(text_stream)
# 문자 반복자 처리
char_iterator = iter("Streaming this character by character.")
stream.feed(char_iterator)
# 비동기 재생
stream.play_async()
while stream.is_playing():
time.sleep(0.1)
# 동기 재생
stream.play()
# 제어 작업
stream.pause() # 일시 중지
stream.resume() # 재개
stream.stop() # 중지
stream = TextToAudioStream(
engine=engine, # TTS 엔진
on_text_stream_start=callback, # 텍스트 스트림 시작 콜백
on_audio_stream_start=callback, # 오디오 스트림 시작 콜백
output_device_index=None, # 오디오 출력 장치
tokenizer="nltk", # 토크나이저 선택
language="en", # 언어 코드
muted=False, # 음소거 여부
level=logging.WARNING # 로그 수준
)
stream.play(
fast_sentence_fragment=True, # 빠른 문장 조각 처리
buffer_threshold_seconds=0.0, # 버퍼 임계값
minimum_sentence_length=10, # 최소 문장 길이
log_synthesized_text=False, # 합성된 텍스트 기록
reset_generated_text=True, # 생성된 텍스트 재설정
output_wavfile=None, # WAV 파일로 저장
on_sentence_synthesized=callback, # 문장 합성 완료 콜백
before_sentence_synthesized=callback, # 문장 합성 전 콜백
on_audio_chunk=callback # 오디오 청크 준비 콜백
)
from RealtimeTTS import OpenAIEngine
engine = OpenAIEngine(
api_key="your-api-key", # 또는 환경 변수 OPENAI_API_KEY 설정
voice="alloy", # 선택 사항: alloy, echo, fable, onyx, nova, shimmer
model="tts-1" # 또는 tts-1-hd
)
from RealtimeTTS import AzureEngine
engine = AzureEngine(
speech_key="your-speech-key", # 또는 환경 변수 AZURE_SPEECH_KEY 설정
service_region="your-region", # 예: "eastus"
voice_name="en-US-AriaNeural" # Azure 음성 이름
)
from RealtimeTTS import CoquiEngine
engine = CoquiEngine(
voice="path/to/voice/sample.wav", # 음성 복제 소스 파일
language="en" # 언어 코드
)
프로젝트는 풍부한 테스트 예제를 제공합니다.
simple_test.py
: 기본 "Hello World" 데모complex_test.py
: 전체 기능 데모coqui_test.py
: 로컬 Coqui TTS 엔진 테스트translator.py
: 실시간 다국어 번역 (설치 필요: openai realtimetts
)openai_voice_interface.py
: 음성 활성화된 OpenAI API 인터페이스advanced_talk.py
: 고급 대화 시스템minimalistic_talkbot.py
: 20줄 코드의 간단한 챗봇test_callbacks.py
: 콜백 기능 및 지연 시간 테스트더 나은 성능, 특히 로컬 신경 엔진 사용 시 CUDA 지원 설치를 권장합니다.
# CUDA 11.8
pip install torch==2.5.1+cu118 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.X
pip install torch==2.5.1+cu121 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121
RealtimeTTS는 더 큰 생태계의 일부입니다.
프로젝트 자체는 오픈 소스이지만 각 엔진의 라이선스 제한에 유의해야 합니다.
RealtimeTTS는 고품질, 낮은 지연 시간의 음성 합성이 필요한 최신 애플리케이션에 적합한 강력하고 잘 설계된 실시간 텍스트 음성 변환 라이브러리입니다. 다중 엔진 지원, 강력한 오류 처리 메커니즘 및 풍부한 구성 옵션은 전문적인 수준의 음성 애플리케이션을 구축하는 데 이상적인 선택입니다. 개인 프로젝트이든 엔터프라이즈급 애플리케이션이든 RealtimeTTS는 안정적이고 효율적인 솔루션을 제공할 수 있습니다.