SGSoundGuard

Resultados

Comparativa de modelos, grid search de k, métricas finales y stack tecnológico.

Galería de figuras

Comparativa de modelos Figura 1. Accuracy y F1 macro: XGBoost + MFCCs (35.0% / 29.1%) vs k-NN + Nova (92.1% / 92.0%).

Grid search de k Figura 2. Grid search del hiperparámetro k. El óptimo es k=1 (92.11%); accuracy decrece monótonamente al aumentar k.

CD gate de calidad Figura 3. ¿Qué índices se promueven a producción? Sólo el cross-fold (90.0%) y el LOO de fold 1 (92.0%) superan el umbral. El baseline XGBoost (35%) y la evaluación interna del fold 2 (89%) son rechazadas.

Accuracy por clase con sonidos críticos resaltados Figura 4. Accuracy por clase (50 clases ESC-50). Los 7 sonidos críticos (sirena, claxon, despertador, vidrio, llanto de bebé, fuegos artificiales, ladrido) en rojo: 6 alcanzan 100%; sólo "fuegos artificiales" baja a 88%.

Confusiones más frecuentes Figura 5. Pares más confundidos (fold 1, bidireccionales). Aspiradora ↔ lavadora, gallina ↔ gallo, agua ↔ gotas son acústicamente similares: el modelo falla con coherencia semántica.

Accuracy por súper-grupo ESC-50 Figura 6. Accuracy por súper-grupo. El modelo es uniformemente fuerte en categorías estructuradas (animales 96.2%, urbanos 93.8%, domésticos 91.2%) y muestra mayor variabilidad en sonidos atmosféricos (naturaleza 88.8%).

Pipeline CT/CD Figura 7. Pipeline de Continuous Training / Continuous Deployment automatizado en AWS Step Functions con gate de calidad (≥ 90% accuracy).

Matriz de confusión completa Figura 8. Matriz de confusión 50×50 sobre fold 1 (n = 400, k = 1). La diagonal dominante refleja el 92% de accuracy; los errores se concentran en pares acústicamente similares y son bidireccionales.

Comparativa de modelos

MétricaXGBoost + MFCCsk-NN + Nova Embeddings (k=1)Diferencia
Accuracy35.00%92.11%+57.11 pts
F1 macro29.10%92.04%+62.94 pts
F1 weighted29.63%92.10%+62.47 pts
Tiempo de entrenamiento~5 min (CPU)0 min−5 min
Nuevas clasesreentrenar completoagregar ejemplos
Explicabilidadcaja negravecinos visibles

Conclusión: los embeddings de un foundation model (Nova) superan ampliamente al feature engineering manual (MFCCs) + XGBoost, sin necesidad de entrenamiento.

Grid search del valor de k

kAccuracyF1 macroNotas
192.11%92.04%Óptimo. El vecino más cercano basta.
391.86%91.52%
590.84%90.42%Valor usado originalmente.
790.08%89.41%
989.31%88.14%
1187.79%86.89%Peor. Demasiado ruido.

Insight: a mayor k, la accuracy baja. Los embeddings de Nova son tan discriminativos que incluir más vecinos introduce ruido de clases similares.

Cross-fold validation (CD gate)

EscenarioAccuracyF1 macroDecisión
LOO: fold 2 vs fold 289.00%0.8888REJECT
Cross-fold: fold 2 vs fold 190.00%0.8949PASS

El gate del 90% se supera con el escenario realista (queries de staging contra el índice de producción).

Stack tecnológico

CapaServicios
AlmacenamientoS3 (audio raw), S3 Vectors (embeddings indexados)
EmbeddingsAmazon Bedrock — Nova Multimodal Embeddings
InferenciaAWS Lambda + API Gateway HTTP API
PersistenciaDynamoDB (logs de predicciones)
OrquestaciónAWS Step Functions (CT pipeline)
TrackingMLflow (experimentos, grid search)
InfraTerraform (IaC)
Frontend (docs)Next.js 16 + Fumadocs (este sitio), desplegado en Cloudflare
DemoHTML + Tailwind CSS + JavaScript vanilla
BaselineXGBoost + librosa MFCCs (comparativa)

Entregables

  • Pipeline end-to-end funcional (ingesta + inferencia)
  • Evaluación con métricas (accuracy, F1, confusion matrix)
  • Comparativa de modelos (XGBoost vs embeddings)
  • Experiment tracking (MLflow + grid search)
  • CI/CD: staging + CD gate con threshold del 90%
  • CT: Step Functions pipeline automatizado
  • Demo interactivo (drag & drop + micrófono)
  • Documentación técnica (este sitio)
  • Infra como código (Terraform completo)
  • Accesibilidad / impacto social (app para discapacidad auditiva)

Reproducibilidad

# Setup
make setup-ingestion

# Deploy infra
cd infra && terraform apply -auto-approve

# Ingesta
make upload      # sube fold 1 a S3
make ingest      # genera embeddings

# Evaluación
python -m src.evaluation.evaluate_knn --fold 1 --mlflow

# Cross-fold (staging vs producción)
python -m src.evaluation.evaluate_cross_fold --query-fold 2 --ref-fold 1 --k 1

# Baseline comparativo
python -m src.baseline.extract_mfccs --fold 1
python -m src.baseline.train_xgboost --fold 1

# CD gate
python -m src.pipeline.promote_index --threshold 0.90 --mlflow

# Step Functions
aws stepfunctions start-execution \
  --state-machine-arn "$(cd infra && terraform output -raw stepfunctions_arn)" \
  --input '{"fold":1}'

# MLflow UI
mlflow ui --backend-store-uri "file://$(pwd)/mlruns"

Referencias

  1. Piczak, K. J. (2015). ESC: Dataset for Environmental Sound Classification. ACM Multimedia. https://github.com/karolpiczak/ESC-50
  2. Salamon, J. et al. (2014). UrbanSound8K: A Dataset and Taxonomy for Urban Sound Research. ACM Multimedia.
  3. AWS — Amazon Nova Multimodal Embeddings (Bedrock).
  4. AWS — S3 Vectors.

On this page