TalkLabs STT SDK - Speech-to-Text API compatible with Deepgram
Project description
TalkLabs STT SDK
SDK Python para TalkLabs Speech-to-Text API - Compatível com
Features
- ✅ REST API - Transcrição completa de arquivos
- ✅ WebSocket Streaming - Transcrição em tempo real
- ✅ Deepgram Compatible - API compatível com Deepgram
- ✅ Modelo Otimizado - Usa automaticamente o modelo 'turbo'
- ✅ Async Support - WebSocket assíncrono
- ✅ Type Hints - Totalmente tipado
Instalação
pip install talklabs-stt
Quick Start
REST API (Síncrono)
from talklabs_stt import STTClient
client = STTClient(api_key="tlk_live_xxxxx")
result = client.transcribe_file("audio.wav")
print(result["results"]["channels"][0]["alternatives"][0]["transcript"])
WebSocket Streaming (Assíncrono)
import asyncio
from talklabs_stt import STTClient
async def main():
client = STTClient(api_key="tlk_live_xxxxx")
def on_transcript(data):
transcript = data["channel"]["alternatives"][0]["transcript"]
if data["is_final"]:
print(transcript)
await client.transcribe_stream(
"audio.wav",
on_transcript=on_transcript
)
asyncio.run(main())
Uso Completo
Inicialização
from talklabs_stt import STTClient, TranscriptionOptions
# Cliente (sempre usa api.talklabs.com.br)
client = STTClient(api_key="tlk_live_xxxxx")
# Cliente com timeout customizado
client = STTClient(
api_key="tlk_live_xxxxx",
timeout=600 # 10 minutos
)
Opções de Transcrição
from talklabs_stt import TranscriptionOptions
options = TranscriptionOptions(
language="pt", # pt, en, es, etc.
detect_language=False, # Detecção automática
vad_filter=False, # Filtro VAD
interim_results=True # Resultados intermediários (WebSocket)
)
# Nota: Modelo 'turbo', pontuação e formatação inteligente são sempre aplicados
result = client.transcribe_file("audio.wav", options=options)
Com kwargs diretos
result = client.transcribe_file("audio.wav", language="pt")
API Reference
STTClient
transcribe_file(audio_path, options=None, **kwargs)
Transcreve arquivo completo via REST API.
Args:
audio_path(str): Caminho do arquivo de áudiooptions(TranscriptionOptions, optional): Opções de transcrição**kwargs: Parâmetros adicionais
Returns: dict - Resultado -compatible
transcribe_stream(audio_path, options=None, on_transcript=None, on_metadata=None, **kwargs)
Transcreve via WebSocket streaming (async).
Args:
audio_path(str): Caminho do arquivooptions(TranscriptionOptions, optional): Opçõeson_transcript(callable, optional): Callback para transcriçõeson_metadata(callable, optional): Callback para metadata**kwargs: Parâmetros adicionais
list_models()
Lista modelos disponíveis no servidor (informativo/debugging).
Nota: O SDK sempre usa o modelo 'turbo', independente dos modelos disponíveis.
Returns: dict - Lista de modelos disponíveis no servidor
Migração do Deepgram
O SDK é 100% compatível com Deepgram. Para migrar:
# Deepgram
from deepgram import DeepgramClient
dg = DeepgramClient(api_key)
# TalkLabs
from talklabs_stt import STTClient
client = STTClient(api_key)
# Mesma interface!
result = client.transcribe_file("audio.wav", language="pt")
Exemplos
Ver pasta examples/:
transcribe_simple.py- REST API básicotranscribe_stream.py- WebSocket streaminglist_models.py- Listar modelosquick_start.py- Exemplo rápido de uso
Desenvolvimento
Benchmark de Modelos
⚠️ NOTA: O SDK usa exclusivamente o modelo 'turbo'. O script de benchmark é para teste do servidor, não do SDK.
O projeto inclui um script de benchmark para testar o servidor:
# Instalar dependências de desenvolvimento
pip install -e ".[dev]"
# Executar benchmark
python benchmark_models.py <arquivo_audio>
# Testar modelos específicos (no servidor)
python benchmark_models.py audio.wav --models tiny base medium turbo
# Salvar relatório customizado
python benchmark_models.py audio.wav --output meu_relatorio.json
O benchmark testa o servidor:
- ✅ Velocidade de processamento (REST API e WebSocket)
- ✅ RTF (Real-Time Factor) de cada modelo no servidor
- ✅ Verifica se o servidor está trocando os modelos corretamente
- ✅ Gera relatórios visuais e JSON completo
Ver documentação completa em BENCHMARK.md.
Usando Makefile
O projeto inclui um Makefile para facilitar tarefas comuns:
# Verificação de código
make lint # Verificar com flake8
# Build e publicação
make publish-test # Publicar no TestPyPI
make publish # Publicar no PyPI oficial
# Utilitários
make clean # Limpar arquivos temporários
make help # Ver todos os comandos
Para mais detalhes sobre desenvolvimento, ver CONTRIBUTING.md.
Troubleshooting
Erro de autenticação
Verifique se a API key está correta e ativa.
Timeout
Aumente o timeout:
client = STTClient(api_key="...", timeout=600)
Formato de áudio
Formatos suportados: WAV, MP3, FLAC, OGG, M4A
License
MIT License - Ver LICENSE
Support
- Email: support@talklabs.com.br
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 talklabs_stt-2.0.0.tar.gz.
File metadata
- Download URL: talklabs_stt-2.0.0.tar.gz
- Upload date:
- Size: 30.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fb5fe9e587bec412571b6429217a760f600f64aeae3a36be205fa89c570521d
|
|
| MD5 |
8953ced47751d7143b92f3b3f96e817e
|
|
| BLAKE2b-256 |
23a51aa69e779ab353a4372f6c1ae411e95b9b9635767f2ebf4cb68a92bea62f
|
File details
Details for the file talklabs_stt-2.0.0-py3-none-any.whl.
File metadata
- Download URL: talklabs_stt-2.0.0-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adb8567a714c54f540d712b0e39ef86cc40793fc3490a9954c8b01298d94a206
|
|
| MD5 |
a18c32295f4756f63b9f028fb74292ab
|
|
| BLAKE2b-256 |
f20d134627714e669fba379cba0a3ff446cb7b8d96cc5f02555bbff3406db0b5
|