Uma biblioteca Python avançada de texto para fala em tempo real, com suporte para vários mecanismos de TTS, oferecendo baixa latência e saída de áudio de alta qualidade.
RealtimeTTS - Descrição Detalhada do Projeto
Visão Geral do Projeto
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
Principais Características
1. Processamento de Baixa Latência
- Conversão de texto para voz quase instantânea: Fluxos de processamento otimizados garantem latência mínima.
- Compatível com saída de LLM: Pode processar diretamente a saída de streaming de grandes modelos de linguagem.
- Processamento de fluxo em tempo real: Suporta processamento em tempo real em nível de caractere e frase.
2. Saída de Áudio de Alta Qualidade
- Voz clara e natural: Gera voz natural que se aproxima da voz humana.
- Suporte a vários formatos de áudio: Suporta vários formatos de saída de áudio.
- Parâmetros de áudio configuráveis: Taxa de amostragem, taxa de bits e outros parâmetros podem ser ajustados.
3. Suporte a Múltiplos Mecanismos
RealtimeTTS suporta vários mecanismos de TTS, oferecendo uma rica seleção:
Mecanismos na Nuvem 🌐
- OpenAIEngine: Serviço TTS da OpenAI, oferece 6 vozes de alta qualidade.
- AzureEngine: Serviço de voz Azure da Microsoft, 500.000 caracteres gratuitos por mês.
- ElevenlabsEngine: Qualidade de voz premium, oferece uma rica seleção de vozes.
- GTTSEngine: TTS gratuito do Google Translate, não requer GPU.
- EdgeEngine: Serviço TTS gratuito do Microsoft Edge.
Mecanismos Locais 🏠
- CoquiEngine: TTS neural de alta qualidade, suporta processamento local e clonagem de voz.
- ParlerEngine: TTS neural local, adequado para GPUs de ponta.
- SystemEngine: TTS do sistema integrado, configuração rápida.
- PiperEngine: Sistema TTS extremamente rápido, pode até ser executado em um Raspberry Pi.
- StyleTTS2Engine: Síntese de voz estilizada.
- KokoroEngine: Novo mecanismo com suporte a vários idiomas.
- OrpheusEngine: Opção de mecanismo adicionada mais recentemente.
4. Suporte a Vários Idiomas
- Suporta síntese de voz em vários idiomas.
- Segmentação inteligente de frases e detecção de idioma.
- Parâmetros específicos do idioma configuráveis.
5. Robustez e Confiabilidade
- Mecanismo de failover: Alterna automaticamente para um mecanismo de backup quando um mecanismo apresenta problemas.
- Garantia de operação contínua: Garante desempenho e confiabilidade consistentes para casos de uso críticos e profissionais.
- Tratamento de erros: Tratamento de erros e mecanismos de recuperação abrangentes.
Instalação
Instalação Recomendada (Versão Completa)
pip install -U realtimetts[all]
Instalação Personalizada
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]
Opções de Instalação Disponíveis
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).
Componentes Principais
1. Processamento de Fluxo de Texto
- Detecção de limites de frases: Suporta tokenizadores NLTK e Stanza.
- Segmentação inteligente: Segmenta o texto com base em pontuação e regras de idioma.
- Processamento de fluxo: Suporta iteradores e geradores de caracteres.
2. Gerenciamento de Fluxo de Áudio
- Reprodução assíncrona: O método
play_async()
suporta reprodução não bloqueante. - Reprodução síncrona: O método
play()
é usado para reprodução bloqueante. - Controle de fluxo: Suporta operações de pausa, retomada e parada.
3. Sistema de Retorno de Chamada
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).
Exemplos de Uso Básico
Uso Simples
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()
Processamento de Texto em Fluxo
# 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)
Controle de Reprodução
# 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
Configuração Avançada
Parâmetros TextToAudioStream
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
)
Parâmetros de Reprodução
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
)
Configuração Específica do Mecanismo
Mecanismo OpenAI
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
)
Mecanismo Azure
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
)
Mecanismo Coqui (Clonagem de Voz)
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
)
Arquivos de Teste
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 deopenai 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.
Suporte CUDA
Para obter melhor desempenho, especialmente ao usar mecanismos neurais locais, é recomendável instalar o suporte CUDA:
Etapas de Instalação
- Instale o NVIDIA CUDA Toolkit (versão 11.8 ou 12.X).
- Instale o NVIDIA cuDNN.
- Instale o ffmpeg.
- Instale o PyTorch com suporte a 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
Casos de Uso
1. Assistentes de IA e Chatbots
- Resposta em tempo real às consultas do usuário.
- Experiência de conversação natural.
- Suporte a vários idiomas.
2. Ferramentas de Acessibilidade
- Leitores de tela.
- Auxílio para deficientes visuais.
- Ferramentas de apoio ao aprendizado.
3. Criação de Conteúdo
- Produção de podcasts.
- Audiolivros.
- Conteúdo educacional.
4. Atendimento ao Cliente
- Sistemas automatizados de atendimento ao cliente.
- Robôs de telefone.
- Serviços de tradução em tempo real.
5. Jogos e Entretenimento
- Voz no jogo.
- Dublagem de personagens virtuais.
- Aplicações de entretenimento interativo.
Ecossistema do Projeto
RealtimeTTS faz parte de um ecossistema maior:
- RealtimeSTT: Biblioteca de voz para texto complementar, a combinação dos dois pode criar um sistema completo de processamento de áudio em tempo real.
- Linguflex: Projeto original, um poderoso assistente de IA de código aberto.
- LocalAIVoiceChat: Sistema local de diálogo de voz de IA baseado no modelo Zephyr 7B.
Informações de Licença
O projeto em si é de código aberto, mas é importante observar as restrições de licença de cada mecanismo:
- Mecanismos de código aberto: SystemEngine, GTTSEngine (licença MIT).
- Mecanismos com restrições comerciais: CoquiEngine, ElevenlabsEngine, AzureEngine (gratuito para uso não comercial).
- Serviços pagos: OpenAI requer uma chave de API e um plano pago.
Requisitos do Sistema
- Versão do Python: >= 3.9, < 3.13
- Sistema Operacional: Windows, macOS, Linux
- Dependências: PyAudio, pyttsx3, pydub, etc.
- Suporte a GPU: Placa de vídeo NVIDIA recomendada para mecanismos neurais locais.
Resumo
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.