RealtimeTTS é uma biblioteca Python avançada de texto para voz (TTS) em tempo real, projetada especificamente para aplicações em tempo real que exigem baixa latência e saída de áudio de alta qualidade. Esta biblioteca consegue converter rapidamente fluxos de texto em saídas de áudio de alta qualidade com latência mínima, tornando-a ideal para construir assistentes de voz, sistemas de diálogo de IA e ferramentas de acessibilidade.
Endereço do Projeto: https://github.com/KoljaB/RealtimeTTS
RealtimeTTS suporta vários mecanismos de TTS, oferecendo uma rica seleção:
pip install -U realtimetts[all]
Pode selecionar suporte para mecanismos específicos conforme necessário:
# Apenas TTS do sistema
pip install realtimetts[system]
# Suporte Azure
pip install realtimetts[azure]
# Combinação de vários mecanismos
pip install realtimetts[azure,elevenlabs,openai]
all
: Instalação completa, suporta todos os mecanismos.system
: TTS do sistema local (pyttsx3).azure
: Suporte ao serviço de voz Azure.elevenlabs
: Integração da API ElevenLabs.openai
: Serviço OpenAI TTS.gtts
: Google Text-to-Speech.edge
: Microsoft Edge TTS.coqui
: Mecanismo Coqui TTS.minimal
: Apenas pacote principal (para desenvolvimento de mecanismo personalizado).play_async()
suporta reprodução não bloqueante.play()
é usado para reprodução bloqueante.Fornece uma rica variedade de funções de retorno de chamada para monitoramento e controle:
on_text_stream_start()
: Acionado quando o fluxo de texto começa.on_text_stream_stop()
: Acionado quando o fluxo de texto termina.on_audio_stream_start()
: Acionado quando a reprodução de áudio começa.on_audio_stream_stop()
: Acionado quando a reprodução de áudio termina.on_character()
: Acionado quando cada caractere é processado.on_word()
: Sincronização de tempo em nível de palavra (suportado pelos mecanismos Azure e Kokoro).from RealtimeTTS import TextToAudioStream, SystemEngine
# Cria o mecanismo e o fluxo
engine = SystemEngine()
stream = TextToAudioStream(engine)
# Insere texto e reproduz
stream.feed("Hello world! How are you today?")
stream.play_async()
# Processa string
stream.feed("Hello, this is a sentence.")
# Processa gerador (adequado para saída de 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)
# Processa iterador de caracteres
char_iterator = iter("Streaming this character by character.")
stream.feed(char_iterator)
# Reprodução assíncrona
stream.play_async()
while stream.is_playing():
time.sleep(0.1)
# Reprodução síncrona
stream.play()
# Operações de controle
stream.pause() # Pausa
stream.resume() # Retoma
stream.stop() # Para
stream = TextToAudioStream(
engine=engine, # Mecanismo TTS
on_text_stream_start=callback, # Retorno de chamada de início do fluxo de texto
on_audio_stream_start=callback, # Retorno de chamada de início do fluxo de áudio
output_device_index=None, # Dispositivo de saída de áudio
tokenizer="nltk", # Seleção de tokenizador
language="en", # Código do idioma
muted=False, # Se está mudo
level=logging.WARNING # Nível de log
)
stream.play(
fast_sentence_fragment=True, # Processamento rápido de fragmentos de frases
buffer_threshold_seconds=0.0, # Limiar de buffer
minimum_sentence_length=10, # Comprimento mínimo da frase
log_synthesized_text=False, # Registra o texto sintetizado
reset_generated_text=True, # Redefine o texto gerado
output_wavfile=None, # Salva em um arquivo WAV
on_sentence_synthesized=callback, # Retorno de chamada de conclusão da síntese de frases
before_sentence_synthesized=callback, # Retorno de chamada antes da síntese de frases
on_audio_chunk=callback # Retorno de chamada de bloco de áudio pronto
)
from RealtimeTTS import OpenAIEngine
engine = OpenAIEngine(
api_key="your-api-key", # Ou defina a variável de ambiente OPENAI_API_KEY
voice="alloy", # Opcional: alloy, echo, fable, onyx, nova, shimmer
model="tts-1" # Ou tts-1-hd
)
from RealtimeTTS import AzureEngine
engine = AzureEngine(
speech_key="your-speech-key", # Ou defina a variável de ambiente AZURE_SPEECH_KEY
service_region="your-region", # Por exemplo: "eastus"
voice_name="en-US-AriaNeural" # Nome da voz Azure
)
from RealtimeTTS import CoquiEngine
engine = CoquiEngine(
voice="path/to/voice/sample.wav", # Arquivo de origem de clonagem de voz
language="en" # Código do idioma
)
O projeto fornece uma rica variedade de exemplos de teste:
simple_test.py
: Demonstração básica de "Hello World".complex_test.py
: Demonstração de funcionalidade completa.coqui_test.py
: Teste do mecanismo Coqui TTS local.translator.py
: Tradução multilíngue em tempo real (requer a instalação de openai realtimestt
).openai_voice_interface.py
: Interface de API OpenAI ativada por voz.advanced_talk.py
: Sistema de diálogo avançado.minimalistic_talkbot.py
: Chatbot simples de 20 linhas de código.test_callbacks.py
: Teste de funcionalidade de retorno de chamada e latência.Para obter melhor desempenho, especialmente ao usar mecanismos neurais locais, é recomendável instalar o suporte 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 faz parte de um ecossistema maior:
O projeto em si é de código aberto, mas é importante observar as restrições de licença de cada mecanismo:
RealtimeTTS é uma biblioteca de texto para voz em tempo real poderosa e bem projetada, adequada para aplicações modernas que exigem síntese de voz de alta qualidade e baixa latência. Seu suporte a vários mecanismos, mecanismos robustos de tratamento de erros e ricas opções de configuração o tornam a escolha ideal para construir aplicações de voz de nível profissional. Seja para projetos pessoais ou aplicações de nível empresarial, o RealtimeTTS pode fornecer uma solução confiável e eficiente.