mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-17 13:57:51 +00:00
150 lines
3.5 KiB
Markdown
150 lines
3.5 KiB
Markdown
# Processamento de Áudio (Edge Function)
|
|
|
|
## Visão Geral
|
|
O sistema de processamento de áudio é uma Edge Function que analisa gravações de leitura, fornecendo métricas detalhadas sobre fluência, pronúncia e compreensão.
|
|
|
|
## Estrutura de Dados
|
|
|
|
### AudioRecord
|
|
```typescript
|
|
interface AudioRecord {
|
|
id: string
|
|
story_id: string
|
|
student_id: string
|
|
audio_url: string
|
|
status: 'pending_analysis' | 'processing' | 'completed' | 'error'
|
|
analysis: any
|
|
created_at: string
|
|
transcription: string | null
|
|
processed_at: string | null
|
|
error_message: string | null
|
|
fluency_score: number | null
|
|
pronunciation_score: number | null
|
|
accuracy_score: number | null
|
|
comprehension_score: number | null
|
|
words_per_minute: number | null
|
|
pause_count: number | null
|
|
error_count: number | null
|
|
self_corrections: number | null
|
|
strengths: string[]
|
|
improvements: string[]
|
|
suggestions: string | null
|
|
}
|
|
```
|
|
|
|
## Fluxo de Processamento
|
|
|
|
### 1. Recebimento da Requisição
|
|
- Validação inicial dos dados recebidos
|
|
- Configuração de CORS e headers
|
|
- Inicialização do logger
|
|
|
|
### 2. Processamento Principal
|
|
O processamento ocorre em etapas sequenciais:
|
|
|
|
1. **Verificação e Atualização de Status**
|
|
- Verifica existência do registro
|
|
- Cria registro se necessário
|
|
- Atualiza status para 'processing'
|
|
|
|
2. **Processamento do Áudio**
|
|
- Transcrição via Whisper API
|
|
- Análise do texto transcrito
|
|
|
|
3. **Análise da Leitura**
|
|
- Cálculo de métricas de fluência
|
|
- Avaliação de pronúncia
|
|
- Identificação de pontos fortes e melhorias
|
|
|
|
4. **Atualização do Banco**
|
|
- Preparação dos dados de análise
|
|
- Verificação pré-update
|
|
- Atualização do registro
|
|
- Verificação pós-update
|
|
|
|
## Tratamento de Erros
|
|
|
|
### 1. Validação de Dados
|
|
```typescript
|
|
if (!data?.record?.id || !data?.record?.audio_url) {
|
|
throw new Error('Dados inválidos: ID ou URL do áudio ausentes')
|
|
}
|
|
```
|
|
|
|
### 2. Atualização de Status de Erro
|
|
- Em caso de falha, atualiza o registro com status 'error'
|
|
- Armazena mensagem de erro para diagnóstico
|
|
- Retorna resposta com detalhes do erro
|
|
|
|
## Métricas Analisadas
|
|
|
|
### Pontuações
|
|
- Fluência (0-100)
|
|
- Pronúncia (0-100)
|
|
- Precisão (0-100)
|
|
- Compreensão (0-100)
|
|
|
|
### Métricas Quantitativas
|
|
- Palavras por minuto
|
|
- Contagem de pausas
|
|
- Contagem de erros
|
|
- Autocorreções
|
|
|
|
### Feedback Qualitativo
|
|
- Pontos fortes identificados
|
|
- Áreas para melhoria
|
|
- Sugestões personalizadas
|
|
|
|
## Logs e Monitoramento
|
|
|
|
### Eventos Registrados
|
|
- Recebimento de requisição
|
|
- Atualizações de status
|
|
- Resultados de processamento
|
|
- Erros e exceções
|
|
|
|
### Formato dos Logs
|
|
```typescript
|
|
logger.info('event_name', 'Descrição do evento', {
|
|
contextData: 'dados adicionais'
|
|
})
|
|
```
|
|
|
|
## Considerações de Segurança
|
|
|
|
### 1. Autenticação
|
|
- Validação de tokens
|
|
- Verificação de permissões
|
|
- Controle de acesso por usuário
|
|
|
|
### 2. Dados Sensíveis
|
|
- Sanitização de inputs
|
|
- Validação de URLs
|
|
- Proteção contra injeção
|
|
|
|
### 3. Rate Limiting
|
|
- Controle de requisições
|
|
- Proteção contra sobrecarga
|
|
- Cache de resultados
|
|
|
|
## Próximas Melhorias
|
|
|
|
1. **Análise Avançada**
|
|
- Detecção de padrões de erro
|
|
- Análise de entonação
|
|
- Reconhecimento de emoção
|
|
|
|
2. **Performance**
|
|
- Otimização de processamento
|
|
- Cache distribuído
|
|
- Processamento em lote
|
|
|
|
3. **Feedback**
|
|
- Relatórios detalhados
|
|
- Visualizações gráficas
|
|
- Recomendações personalizadas
|
|
|
|
4. **Integração**
|
|
- Webhooks para notificações
|
|
- API para consultas em tempo real
|
|
- Exportação de dados |