# juniorssilvaa/transcrever-audio architecture

> Architecture diagram of the GitHub repository juniorssilvaa/transcrever-audio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/juniorssilvaa/transcrever-audio
- Repository: https://github.com/juniorssilvaa/transcrever-audio

## Overview

Este repositório recebe mensagens de áudio do WhatsApp, obtém o áudio pela Uazapi, solicita a transcrição e encaminha o texto com contexto a um sistema de chat; a resposta volta ao remetente pela Uazapi. O servidor Flask é a entrada principal, enquanto `process_audio.py` oferece um caminho independente para processamento manual. `config.py` fornece configurações aos módulos que o importam. As etapas e integrações do fluxo principal são sustentadas pelos trechos e pelo README; não atribuo ao código retries ou validações que os trechos não demonstram.

Main entry points: [`webhook_server.py`](https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py) (Webhook Flask), [`process_audio.py`](https://github.com/juniorssilvaa/transcrever-audio/blob/master/process_audio.py) (Processamento manual), [`chat_integration.py`](https://github.com/juniorssilvaa/transcrever-audio/blob/master/chat_integration.py) (Integração de chat), [`config.py`](https://github.com/juniorssilvaa/transcrever-audio/blob/master/config.py) (Configuração)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingress["Entrada webhook"]
  node_webhook["Webhook Flask<br/>[webhook_server.py]"]
end

subgraph group_audio["Áudio e transcrição"]
  node_audio_download["Download de áudio<br/>[webhook_server.py]"]
  node_transcription_service["Serviço de transcrição"]
  node_transcription_step["Envio para transcrição<br/>[webhook_server.py]"]
end

subgraph group_chat["Chat e resposta"]
  node_context_builder["Contexto da conversa"]
  node_chat_integration["Integração de chat"]
end

subgraph group_runtime["Execução e configuração"]
  node_manual_processor["Processamento manual<br/>[process_audio.py]"]
  node_config["Configuração<br/>[config.py]"]
end

node_whatsapp(("WhatsApp"))
node_uazapi["Uazapi"]
node_chat_service["Sistema de chat IA"]

node_whatsapp -->|"envia mensagens"| node_uazapi
node_uazapi -->|"envia evento"| node_webhook
node_webhook -->|"processa áudio"| node_audio_download
node_audio_download -->|"solicita download"| node_uazapi
node_webhook -->|"encaminha áudio"| node_transcription_step
node_transcription_step -->|"solicita transcrição"| node_transcription_service
node_webhook -->|"constrói contexto"| node_context_builder
node_webhook -->|"envia transcrição"| node_chat_integration
node_chat_integration -->|"envia mensagem"| node_chat_service
node_webhook -->|"envia resposta"| node_uazapi
node_manual_processor -->|"baixa e envia"| node_uazapi
node_manual_processor -->|"solicita transcrição"| node_transcription_service
node_manual_processor -->|"constrói contexto"| node_context_builder
node_manual_processor -->|"envia transcrição"| node_chat_integration
node_webhook -->|"lê configurações"| node_config
node_chat_integration -->|"lê configurações"| node_config
node_manual_processor -->|"lê configurações"| node_config

click node_webhook "https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py"
click node_audio_download "https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py"
click node_transcription_step "https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py"
click node_context_builder "https://github.com/juniorssilvaa/transcrever-audio/blob/master/chat_integration.py"
click node_chat_integration "https://github.com/juniorssilvaa/transcrever-audio/blob/master/chat_integration.py"
click node_manual_processor "https://github.com/juniorssilvaa/transcrever-audio/blob/master/process_audio.py"
click node_config "https://github.com/juniorssilvaa/transcrever-audio/blob/master/config.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webhook toneBlue
class node_audio_download,node_transcription_service,node_transcription_step toneAmber
class node_context_builder,node_chat_integration,node_uazapi toneMint
class node_manual_processor,node_config toneRose
class node_whatsapp,node_chat_service toneIndigo
```

## Components

### Entrada webhook

- [Webhook Flask](https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py): `webhook_server.py`

### Áudio e transcrição

- [Download de áudio](https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py): `webhook_server.py`
- **Serviço de transcrição**
- [Envio para transcrição](https://github.com/juniorssilvaa/transcrever-audio/blob/master/webhook_server.py): `webhook_server.py`

### Chat e resposta

- [Contexto da conversa](https://github.com/juniorssilvaa/transcrever-audio/blob/master/chat_integration.py): `chat_integration.py`
- [Integração de chat](https://github.com/juniorssilvaa/transcrever-audio/blob/master/chat_integration.py): `chat_integration.py`

### Execução e configuração

- [Processamento manual](https://github.com/juniorssilvaa/transcrever-audio/blob/master/process_audio.py): `process_audio.py`
- [Configuração](https://github.com/juniorssilvaa/transcrever-audio/blob/master/config.py): `config.py`

### Other components

- **WhatsApp**
- **Uazapi**
- **Sistema de chat IA**

## Connections

- WhatsApp → Uazapi: envia mensagens (evidence: `README.md`)
- Uazapi → Webhook Flask: envia evento (evidence: `README.md`)
- Webhook Flask → Download de áudio: processa áudio (evidence: `webhook_server.py`)
- Download de áudio → Uazapi: solicita download (evidence: `webhook_server.py`)
- Webhook Flask → Envio para transcrição: encaminha áudio (evidence: `webhook_server.py`)
- Envio para transcrição → Serviço de transcrição: solicita transcrição (evidence: `webhook_server.py`)
- Webhook Flask → Contexto da conversa: constrói contexto (evidence: `webhook_server.py`)
- Webhook Flask → Integração de chat: envia transcrição (evidence: `webhook_server.py`)
- Integração de chat → Sistema de chat IA: envia mensagem (evidence: `chat_integration.py`)
- Webhook Flask → Uazapi: envia resposta (evidence: `webhook_server.py`)
- Processamento manual → Uazapi: baixa e envia (evidence: `process_audio.py`)
- Processamento manual → Serviço de transcrição: solicita transcrição (evidence: `process_audio.py`)
- Processamento manual → Contexto da conversa: constrói contexto (evidence: `process_audio.py`)
- Processamento manual → Integração de chat: envia transcrição (evidence: `process_audio.py`)
- Webhook Flask → Configuração: lê configurações (evidence: `webhook_server.py`)
- Integração de chat → Configuração: lê configurações (evidence: `chat_integration.py`)
- Processamento manual → Configuração: lê configurações (evidence: `process_audio.py`)
