Skip to main content

Manual: Instalar e configurar edge-tts + faster-whisper no OpenClaw (com voz BR natural)

Guia prático para rodar TTS/STT grátis em ambiente OpenClaw + Docker Swarm.

1 - O que você vai ter no final

• TTS (texto → áudio): edge-tts (Microsoft Edge neural voices)

• STT (áudio → texto): faster-whisper (Whisper otimizado)

• API HTTP simples com endpoints:

• GET /health

• POST /tts

• POST /stt

• POST /stt-base64 (útil para webhooks)

• Voz PT-BR recomendada: pt-BR-ThalitaMultilingualNeural

2 - Pré-requisitos

• OpenClaw já rodando
• Docker Swarm ativo
• Rede overlay (ex: MINHA_REDE)
• (Opcional) Traefik para expor endpoint externo
• n8n/Evolution, se quiser automação WhatsApp

3 - Arquivo da API de voz

Crie main.py no servidor (ex.: /home/openclawbot/voice-tools/main.py) com FastAPI + edge-tts + faster-whisper.

Estrutura recomendada:

/home/openclawbot/voice-tools/main.py

4 - Subir o serviço no Swarm

Exemplo de criação de serviço:

sudo -n docker service create
--name voice_tools
--network MINHA_REDE
--replicas 1
--mount type=bind,src=/home/openclawbot/voice-tools/main.py,dst=/app/main.py,ro=true
python:3.11-slim
sh -lc "pip install --no-cache-dir fastapi uvicorn[standard] edge-tts faster-whisper python-multipart && uvicorn main:app --host 0.0.0.0 --port 8000 --app-dir /app"

5 - Testes básicos

Health

docker run --rm --network redesvp curlimages/curl:8.12.1 -sS http://voice_tools:8000/health

Resposta esperada:

{"ok":true}

TTS

docker run --rm --network redesvp curlimages/curl:8.12.1
-sS -X POST http://voice_tools:8000/tts
-F "text=Teste de voz em português do Brasil"
-F "voice=pt-BR-ThalitaMultilingualNeural" > teste.mp3

STT (arquivo)

docker run --rm --network redesvp
-v /tmp/audio.ogg:/tmp/audio.ogg
curlimages/curl:8.12.1 -sS -X POST http://voice_tools:8000/stt
-F "file=@/tmp/audio.ogg"
-F "language=pt"
-F "model_size=small"

6 - Voz brasileira recomendada

Para listar vozes PT-BR:

edge-tts --list-voices | grep pt-BR

Vozes comuns:

• pt-BR-FranciscaNeural

• pt-BR-AntonioNeural

• pt-BR-ThalitaMultilingualNeural ✅ (mais natural no teste)

7 - Integração no n8n (resumo)

• Para transcrição:

• HTTP Request → POST http://voice_tools:8000/stt (multipart file)

• ou POST /stt-base64 para payload em base64.

• Para resposta em voz:

• HTTP Request → POST http://voice_tools:8000/tts

• receber MP3 e enviar para canal (ex.: Evolution sendWhatsAppAudio).

8 - Dicas de qualidade

• Modelo STT:

• small = rápido/econômico

• medium = melhor qualidade (mais CPU)

• Use language=pt no STT para melhorar precisão

• No TTS, ajuste:

• voz (voice)

• ritmo/pausas no texto (pontuação bem feita)

9 -Troubleshooting rápido

• Could not connect to voice_tools:8000

• serviço ainda iniciando (pip install pode demorar)

• valide docker service ps voice_tools

• Sem transcrição

• formato de áudio inválido / sem áudio útil

• testar com /stt antes do /stt-base64

• Sotaque estranho

• trocar voz para pt-BR-ThalitaMultilingualNeural

10 - Segurança para produção

• Não deixar tokens/chaves hardcoded em workflow

• Guardar segredos em variáveis/secret fileS

• Não expor endpoint de voz sem autenticação se for público

• Monitorar logs e uso de CPU

Texto criado por Lila, assistente do Grupo SVP.

Diego Gonçalves

Show!