Análise de Qualidade de Chamadas por Processamento de Sinais (DSP) e IA Local

← voltar ao portfólio

07/2026 – atual · 3 meses

Detecta picote, dropout e falha de áudio em gravações de chamadas por processamento de sinais — sem depender de transcrição.

Python 3.14NumPyFFTITU-T G.107FlaskSQLite WALfaster-whisperllama.cppONNX RuntimeffmpegDockergunicornDNSMOS P.835NISQASQUIM

O problema

Quando um operador ou cliente reclama que "a ligação estava ruim ou picotando", a discussão vira achismo técnico entre provedor de internet, tronco SIP e headset. Transcrever áudios com APIs na nuvem é financeiramente inviável em escala, viola a privacidade dos dados de chamadas telefônicas (LGPD) e não mede defeitos acústicos do sinal, apenas palavras.

A arquitetura

A engenharia do motor de análise foi construída em quatro camadas de processamento e auditoria:

1. PROCESSAMENTO DIGITAL DE SINAIS (DSP NATIVO): Todo o pipeline opera vetorizado em Python e NumPy sobre janelas deslizantes de 20 ms com hop de 10 ms convertidas em dBFS. Utiliza FFT para medir spectral flatness (identificando voz metálica e robotização/PLC), estimativa de ruído de fundo por percentil para discriminar com precisão pausas naturais de perda real de pacotes (picotes), detecção de clipping (ganho estourado) e análise estéreo para identificar chamadas one-way (canal mudo).

2. MODELAGEM MATEMÁTICA E-MODEL (ITU-T G.107): Implementação determinística das equações da norma internacional ITU-T G.107, convertendo defeitos acústicos medidos em Fator R (0 a 100) e MOS objetivo (Mean Opinion Score de 1.0 a 4.5). Realizei estudo empírico comparando o E-model contra redes neurais (DNSMOS P.835 via ONNX Runtime, NISQA e TorchAudio SQUIM) em um corpus real rotulado em 8 kHz: o E-model superou os modelos neurais na detecção de quedas e silêncio (separação de 3,39 contra 0,17), além de evitar restrições de licença não-comercial (CC BY-NC do NISQA).

3. INTELIGÊNCIA ARTIFICIAL 100% LOCAL EM CPU: Transcrição e análise semântica operando exclusivamente on-premises sem envio de áudios para nuvem. Faster-whisper quantizado em int8 acoplado a LLM local em formato GGUF via llama.cpp, com prompt engineering estruturado (six-shot), coerção estrita de schema JSON e fallback determinístico para classificar reclamações verbais de áudio ("está cortando", "não te escuto").

4. MULTI-TENANCY & SELF-SERVICE: Backend em Flask com 31 endpoints REST, SQLite em modo WAL com isolamento físico de dados por tenant/PABX, autenticação PBKDF2 e portal self-service onde operadores analisam apenas suas próprias chamadas através do login com ramal.

O resultado

Transformação de reclamações subjetivas em evidências matemáticas auditáveis com data, ramal e momento exato da falha na forma de onda; motor autônomo validado por 121 testes automatizados em pytest com injeção de anomalias em sinais sintéticos; e auditoria independente de classificadores AMD (Answering Machine Detection) de terceiros, eliminando falsos positivos.

Relatório de análise: eventos de picote e dropout por chamada
Relatório de análise: eventos de picote e dropout por chamada
Detalhe da chamada, com as métricas de sinal
Detalhe da chamada, com as métricas de sinal
O comparativo que decidiu a arquitetura: qual modelo detecta o quê, e qual pode ir para o produto
O comparativo que decidiu a arquitetura: qual modelo detecta o quê, e qual pode ir para o produto

🔒 Código-fonte

git clone https://git.programandosolucoes.com.br/git/repos/analisador-chamadas.git

Código-fonte privado. As credenciais de leitura são liberadas sob solicitação — me chame para conversar sobre o projeto.

Carlos Alberto — carlosalberto4ti@gmail.com · +55 11 2615-2880