Skip to content

Sistema Inteligente de Transcrição, Resumo e Tradução Automática de Áudios para WhatsApp

License

Notifications You must be signed in to change notification settings

impacte-ai/transcrevezap

Repository files navigation

ImpacteAI

TranscreveZAP 2.3- Plataforma de Gestão e Automação de Áudios do WhatsApp

Sistema Inteligente de Transcrição, Resumo e Tradução Automática de Áudios para WhatsApp

Desenvolvido com Python, FastAPI e Streamlit


Uma solução completa para automatizar e gerenciar mensagens de áudio no WhatsApp, oferecendo:

  • Transcrição automática multilíngue
  • Resumos inteligentes de áudios
  • Detecção e tradução automática entre idiomas
  • Seleção de plataforma LLM (GROQ ou OpenAI)
  • Interface administrativa completa
  • Sistema de rodízio de chaves API
  • Gestão avançada de grupos e usuários
  • Personalização de formatação e saída
  • Sistema de Redirecionamento de Webhooks

Contato de email: [email protected] (ACESSE NOSSO SITE)

Nosso Grupo do Whatsapp: (Entre no GRUPO AQUI)

📋 Pré-requisitos

Antes de começar, certifique-se de ter os seguintes requisitos:

  • Python 3.10+ instalado (Download)
  • Docker e Docker Compose instalados (Instruções)
  • Uma conta Evolution API com chave válida
  • Chaves GROQ (começa com gsk_) e/ou chaves OpenAI (começa com sk-) configuradas (Crie sua conta GROQ)
  • Em caso de uso com Proxy Reverso Aponte um Subdomínio para a API e outro para o MANAGER da aplicação

🚀 Novidade: Escolha do Provedor LLM

Agora você pode escolher entre dois provedores para transcrições e resumos:

  1. GROQ (open-source): Configuração padrão.
  2. OpenAI (API paga): Integração com modelos GPT.

Configuração:

  • Acesse: Configurações > Provedor LLM na interface administrativa.
  • Escolha entre groq e openai.
  • Adicione as chaves correspondentes para cada provedor.

🚀 Instalação e Configuração

🐳 Docker Compose

  1. Configure o arquivo docker-compose.yaml:
version: "3.7"

services:
  # Serviço principal do TranscreveZAP
  tcaudio:
    image: impacteai/transcrevezap:latest
    build:
      context: .
    ports:
      - "8005:8005"  # API FastAPI - Use esta porta para configurar o webhook
      - "8501:8501"  # Interface Web Streamlit - Acesse o painel por esta porta
    environment:
      # Configurações do Servidor
      - UVICORN_PORT=8005
      - UVICORN_HOST=0.0.0.0
      - UVICORN_RELOAD=true
      - UVICORN_WORKERS=1
      - API_DOMAIN=localhost  # Para uso local mantenha localhost
      
      # Modo Debug e Logs
      - DEBUG_MODE=false
      - LOG_LEVEL=INFO
      
      # Credenciais do Painel Admin (ALTERE ESTAS CREDENCIAIS!)
      - MANAGER_USER=admin
      - MANAGER_PASSWORD=sua_senha_aqui
      
      # Configurações do Redis
      - REDIS_HOST=redis-transcrevezap  # Nome do serviço Redis
      - REDIS_PORT=6380                 # Porta do Redis
      - REDIS_DB=0                      # Banco de dados Redis
      
      # Autenticação Redis (opcional - descomente se necessário)
      # - REDIS_USERNAME=seu_usuario    # Nome do usuário Redis
      # - REDIS_PASSWORD=sua_senha      # Senha do Redis
    depends_on:
      - redis-transcrevezap
    command: ./start.sh

  # Serviço Redis para armazenamento de dados
  redis-transcrevezap:
    image: redis:6
    # Escolha UMA das configurações do Redis abaixo:
    
    # 1. Configuração simples SEM autenticação:
    command: redis-server --port 6380 --appendonly yes
    
    # 2. Configuração COM autenticação (descomente e ajuste se necessário):
    # command: >
    #   redis-server 
    #   --port 6380 
    #   --appendonly yes 
    #   --user admin on '>sua_senha' '~*' '+@all'
    volumes:
      - redis_transcrevezap_data:/data  # Persistência dos dados

# Volumes para persistência
volumes:
  redis_transcrevezap_data:
    driver: local

# Instruções de Uso:
# 1. Salve este arquivo como docker-compose.yml
# 2. Execute com: docker compose up -d
# 3. Acesse o painel em: http://localhost:8501
# 4. Configure o webhook da Evolution API para: http://localhost:8005/transcreve-audios
  1. Inicie os serviços:
docker-compose up -d

📖 Configuração da Interface

Acesse a interface de gerenciamento em http://seu-ip:8501. Faça login com as credenciais definidas em MANAGER_USER e MANAGER_PASSWORD. Na seção "Configurações", defina:

  1. GROQ_API_KEY: Sua chave da API GROQ
  2. BUSINESS_MESSAGE: Mensagem de rodapé após transcrição
  3. PROCESS_GROUP_MESSAGES: Habilitar processamento de mensagens em grupos
  4. PROCESS_SELF_MESSAGES: Habilitar processamento de mensagens próprias

🔧 Uso

Endpoint para Webhook da Evolution API Configure o webhook da Evolution API para apontar para:

http://seu-ip:8005/transcreve-audios

🔍 Troubleshooting

Se encontrar problemas:

  1. Verifique os logs dos containers:
docker-compose logs
  1. Certifique-se de que o Redis está rodando e acessível.
  2. Verifique se todas as configurações foram salvas corretamente na interface.

📖 Configuração Detalhada das Variáveis

Variáveis Essenciais

Variável Descrição Obrigatória Exemplo
GROQ_API_KEY Chave da API GROQ (deve começar com 'gsk_') Sim gsk_abc123...

Variáveis de Personalização

Variável Descrição Padrão Exemplo
BUSINESS_MESSAGE Mensagem de rodapé após transcrição Vazio substitua_sua_mensagem_de_servico_aqui
PROCESS_GROUP_MESSAGES Habilita processamento de mensagens em grupos false true ou false
PROCESS_SELF_MESSAGES Habilita processamento de mensagens enviadas por você true true ou false

Variáveis de Debug e Log

Variável Descrição Padrão Valores Possíveis
DEBUG_MODE Ativa logs detalhados para debugging false true ou false
LOG_LEVEL Define o nível de detalhamento dos logs INFO DEBUG, INFO, WARNING, ERROR, CRITICAL

🚀 Métodos de Execução

Usar sempre ao final do endereço definido o endpoint /transcreve-audios para que a API funcione.

Execução Local

uvicorn main:app --host 0.0.0.0 --port 8005

Endpoint para inserir no webhook da Evolution API para consumir o serviço

http://127.0.0.1:8005/transcreve-audios
  1. Aponte um subomínio com o IP do seu servidor para a API da TranscreveZAP
  2. Aponte um subomínio com o IP do seu servidor para o MANAGER da TranscreveZAP

🌟 Docker Swarm com Traefik

version: "3.7"

services:
  tcaudio:
    image: impacteai/transcrevezap:dev
    networks:
      - sua_rede_externa # Substitua pelo nome da sua rede externa
    ports:
      - 8005:8005  # Porta para FastAPI
      - 8501:8501  # Porta para Streamlit
    environment:
      - UVICORN_PORT=8005
      - UVICORN_HOST=0.0.0.0
      - UVICORN_RELOAD=true
      - UVICORN_WORKERS=1
      - API_DOMAIN=seu.dominio.com   #coloque seu subdominio da API apontado aqui
      - DEBUG_MODE=false
      - LOG_LEVEL=INFO
      - MANAGER_USER=seu_usuario_admin   # Defina Usuário do Manager
      - MANAGER_PASSWORD=sua_senha_segura   # Defina Senha do Manager
      - REDIS_HOST=redis-transcrevezap
      - REDIS_PORT=6380 # Porta personalizada para o Redis do TranscreveZAP
      - REDIS_DB=0  # Opcional: pode ser removida para usar o valor padrão
      # Autenticação Redis (opcional - descomente se necessário, se estiver usando autenticação)
      # - REDIS_USERNAME=${REDIS_USERNAME:-}  # Nome do usuário definido no comando do Redis
      # - REDIS_PASSWORD=${REDIS_PASSWORD:-}  # Senha definida no comando do Redis (sem o '>')
    depends_on:
      - redis-transcrevezap
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      labels:
        - traefik.enable=true
        - traefik.http.routers.tcaudio.rule=Host(`seu.dominio.com`)   #coloque seu subdominio da API apontado aqui
        - traefik.http.routers.tcaudio.entrypoints=websecure
        - traefik.http.routers.tcaudio.tls.certresolver=letsencryptresolver
        - traefik.http.services.tcaudio.loadbalancer.server.port=8005
        - traefik.http.services.tcaudio.loadbalancer.passHostHeader=true
        - traefik.http.routers.tcaudio.service=tcaudio
        - traefik.http.middlewares.traefik-compress.compress=true
        - traefik.http.routers.tcaudio.middlewares=traefik-compress
        # Configuração do Streamlit
        - traefik.http.routers.tcaudio-manager.rule=Host(`manager.seu.dominio.com`)   #coloque seu subdominio do Manager apontado aqui
        - traefik.http.routers.tcaudio-manager.entrypoints=websecure
        - traefik.http.routers.tcaudio-manager.tls.certresolver=letsencryptresolver
        - traefik.http.services.tcaudio-manager.loadbalancer.server.port=8501
        - traefik.http.routers.tcaudio-manager.service=tcaudio-manager
    command: ./start.sh

  redis-transcrevezap:
    image: redis:6
    # 1. Configuração SEM autenticação (padrão):
    command: redis-server --port 6380 --appendonly yes   
    # 2. Configuração COM autenticação (descomente e ajuste se necessário):
    # command: >
    #   redis-server 
    #   --port 6380 
    #   --appendonly yes 
    #   --user seuusuario on '>minhasenha' '~*' '+@all'
    #   # Explicação dos parâmetros:
    #   # --user seuusuario: nome do usuário
    #   # on: indica início da configuração do usuário
    #   # '>minhasenha': senha do usuário (mantenha o '>')
    #   # '~*': permite acesso a todas as chaves
    #   # '+@all': concede todas as permissões
    volumes:
      - redis_transcrevezap_data:/data
    networks:
      - sua_rede_externa # Substitua pelo nome da sua rede externa
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager

networks:
  sua_rede_externa:  # Substitua pelo nome da sua rede externa
    external: true
    name: sua_rede_externa  # Substitua pelo nome da sua rede externa

volumes:
  redis_transcrevezap_data:
    driver: local

Endpoint para inserir no webhook da Evolution API para consumir o serviço

https://transcricaoaudio.seudominio.com.br/transcreve-audios

🔧 Configuração do Traefik

Para usar com Traefik, certifique-se de:

  1. Ter o Traefik configurado em seu ambiente Docker Swarm
  2. Configurar 2 DNS do seu domínio para apontar para a API e para o MANAGER
  3. Ajustar as labels do Traefik conforme seu ambiente
  4. Verificar se a rede externa existe no Docker Swarm
  5. Utilize a stack de exemplo contida no projeto para guiar a instalação

📝 Notas Importantes

  • A GROQ_API_KEY deve começar com 'gsk_'
  • O BUSINESS_MESSAGE suporta formatação do WhatsApp (negrito, itálico)
  • Para quebras de linha no BUSINESS_MESSAGE, use \n
  • Em produção, recomenda-se DEBUG_MODE=false
  • Configure LOG_LEVEL=DEBUG apenas para troubleshooting

🚀 Novo Recurso v2.3.1: Hub de Redirecionamento

O TranscreveZAP agora oferece um sistema robusto para redirecionamento de mensagens, permitindo que você encaminhe os webhooks da Evolution API para múltiplos destinos simultaneamente.

Principais Recursos

  • Interface dedicada para gerenciamento de webhooks
  • Redirecionamento sem alteração do payload original
  • Monitoramento de saúde dos webhooks em tempo real
  • Sistema de retry automático para reenvio de mensagens falhas
  • Headers de rastreamento para identificação de origem (X-TranscreveZAP-Forward)
  • Suporte a descrições personalizadas para cada webhook
  • Limpeza automática de dados ao remover webhooks

Compatibilidade

  • Mantém o payload da Evolution API intacto
  • Suporta múltiplos endpoints simultaneamente
  • Compatível com qualquer sistema que aceite webhooks via POST
  • Preserva todos os dados originais da mensagem

✨ Novos Recursos na v2.3

🌍 Suporte Multilíngue

  • Transcrição e resumo com suporte para 16 idiomas principais
  • Mudança instantânea de idioma
  • Interface intuitiva para seleção de idioma
  • Mantém consistência entre transcrição e resumo
  • Configuração manual de idioma por contato
  • Detecção automática de idioma
  • Tradução automática integrada

🔄 Sistema de Cache para Idiomas

Implementação de cache inteligente para otimizar a detecção e processamento de idiomas.

🔄 Sistema Inteligente de Rodízio de Chaves

  • Suporte a múltiplas chaves GROQ
  • Balanceamento automático de carga
  • Maior redundância e disponibilidade
  • Gestão simplificada de chaves via interface

⏱️ Timestamps em Transcrições

Nova funcionalidade de timestamps que adiciona marcadores de tempo precisos em cada trecho da transcrição.

📋 Detalhamento das Funcionalidades

🌍 Sistema de Idiomas

O TranscreveZAP suporta transcrição e resumo em múltiplos idiomas. Na seção "Configurações", você pode:

  1. Selecionar o idioma principal para transcrição e resumo
  2. O sistema manterá Português como padrão se nenhum outro for selecionado
  3. A mudança de idioma é aplicada instantaneamente após salvar

Idiomas suportados:

  • 🇩🇪 Alemão
  • 🇸🇦 Árabe
  • 🇨🇳 Chinês
  • 🇰🇷 Coreano
  • 🇪🇸 Espanhol
  • 🇫🇷 Francês
  • 🇮🇳 Hindi
  • 🇳🇱 Holandês
  • 🇬🇧 Inglês
  • 🇮🇹 Italiano
  • 🇯🇵 Japonês
  • 🇵🇱 Polonês
  • 🇧🇷 Português (padrão)
  • 🇷🇴 Romeno
  • 🇷🇺 Russo
  • 🇹🇷 Turco

🌐 Gestão de Idiomas por Contato

Configuração Manual

1. Acesse o Manager > Configurações > Idiomas e Transcrição
2. Expanda "Adicionar Novo Contato"
3. Digite o número do contato (formato: 5521999999999)
4. Selecione o idioma desejado
5. Clique em "Adicionar Contato"

🔄 Detecção Automática de Idioma

Nova funcionalidade que detecta automaticamente o idioma do contato:

  • Ativação via Manager > Configurações > Idiomas e Transcrição
  • Analisa o primeiro áudio de cada contato
  • Cache inteligente de 24 horas
  • Funciona apenas em conversas privadas
  • Mantém configuração global para grupos

⚡ Tradução Automática

Sistema inteligente de tradução que:

  • Traduz automaticamente áudios recebidos para seu idioma principal
  • Mantém o contexto e estilo original da mensagem
  • Preserva formatações especiais (emojis, negrito, itálico)
  • Otimizado para comunicação natural

⏱️ Sistema de Timestamps

Nova funcionalidade que adiciona marcadores de tempo:

  • Formato [MM:SS] no início de cada trecho
  • Ativação via Manager > Configurações > Idiomas e Transcrição
  • Precisão de segundos
  • Ideal para referência e navegação em áudios longos

Exemplo de Saída com Timestamps:

[00:00] Bom dia pessoal
[00:02] Hoje vamos falar sobre
[00:05] O novo sistema de timestamps

🔧 Configuração e Uso

Configuração de Idiomas

  1. Configuração Global

    • Defina o idioma padrão do sistema
    • Acesse: Manager > Configurações > Configurações Gerais
    • Selecione o idioma principal em "Idioma para Transcrição e Resumo"
  2. Configuração por Contato

    • Acesse: Manager > Configurações > Idiomas e Transcrição
    • Use "Adicionar Novo Contato" ou gerencie contatos existentes
    • Cada contato pode ter seu próprio idioma configurado
  3. Detecção Automática

    • Ative/Desative a detecção automática
    • Configure o tempo de cache
    • Gerencie exceções e configurações manuais

Configuração de Timestamps

  1. Acesse: Manager > Configurações > Idiomas e Transcrição
  2. Localize a seção "Timestamps na Transcrição"
  3. Use o toggle para ativar/desativar
  4. As mudanças são aplicadas imediatamente

📊 Monitoramento e Estatísticas

Estatísticas de Idiomas

O sistema agora oferece estatísticas detalhadas:

  • Total de transcrições por idioma
  • Número de detecções automáticas
  • Divisão entre mensagens enviadas/recebidas
  • Histórico de uso por idioma

Visualização de Dados

  • Gráficos de uso por idioma
  • Distribuição de idiomas
  • Estatísticas de tradução
  • Performance do sistema

🔄 Sistema de Rodízio de Chaves GROQ

O TranscreveZAP suporta múltiplas chaves GROQ com sistema de rodízio automático para melhor distribuição de carga e redundância.

Funcionalidades:

  1. Adicione múltiplas chaves GROQ para distribuição de carga
  2. O sistema alterna automaticamente entre as chaves disponíveis
  3. Se uma chave falhar, o sistema usa a próxima disponível
  4. Visualize todas as chaves configuradas no painel
  5. Adicione ou remova chaves sem interromper o serviço

Como Configurar:

  1. Acesse a seção "Configurações"
  2. Na área "🔑 Gerenciamento de Chaves GROQ":
    • Adicione a chave principal
    • Use "Adicionar Nova Chave GROQ" para incluir chaves adicionais
    • O sistema começará a usar todas as chaves em rodízio automaticamente

Boas Práticas:

  • Mantenha pelo menos duas chaves ativas para redundância
  • Monitore o uso das chaves pelo painel administrativo
  • Remova chaves expiradas ou inválidas
  • Todas as chaves devem começar com 'gsk_'

🔍 Troubleshooting

Se encontrar problemas:

  1. Verifique se todas as variáveis obrigatórias estão configuradas
  2. Ative DEBUG_MODE=true temporariamente
  3. Verifique os logs do container
  4. Certifique-se que as APIs estão acessíveis

Problemas com Múltiplas Chaves GROQ:

  1. Verifique se todas as chaves começam com 'gsk_'
  2. Confirme se as chaves estão ativas na console GROQ
  3. Monitore os logs para identificar falhas específicas de chaves
  4. Mantenha pelo menos uma chave válida no sistema

Problemas com Idiomas:

  1. Verifique se o idioma está corretamente selecionado nas configurações
  2. Confirme se a configuração foi salva com sucesso
  3. Reinicie o serviço se as alterações não forem aplicadas
  4. Verifique os logs para confirmar o idioma em uso

📝 Notas Adicionais

Recomendações de Uso

  • Configure idiomas manualmente para contatos frequentes
  • Use detecção automática como fallback
  • Monitore estatísticas de uso
  • Faça backups regulares das configurações

Limitações Conhecidas

  • Detecção automática requer primeiro áudio
  • Cache limitado a 24 horas
  • Timestamps podem variar em áudios muito longos

🤝 Contribuição

Agradecemos feedback e contribuições! Reporte issues e sugira melhorias em nosso GitHub.

📞 Suporte

Para suporte adicional ou dúvidas:

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.


AJUDE CONTRIBUINDO COM O PROJETO, FAÇA O PIX NO QR CODE

PIX

About

Sistema Inteligente de Transcrição, Resumo e Tradução Automática de Áudios para WhatsApp

Resources

License

Stars

Watchers

Forks

Packages

No packages published