- pet_audio.py: escucha del audio RTSP en un hilo propio con PyAV, remuestreo de 8 kHz a 16 kHz y YAMNet en ONNX sobre ventanas de 0.975 s con medio solape. Dispara por la clase Bark (mejor margen perro/gato que el grupo canino), con anti-repeticion y reconexion automatica. - pet_common.py: utilidades compartidas de .env, construccion de la URL RTSP y enmascarado de credenciales, porque PyAV incluye la contrasena en el texto de sus excepciones. - pet_speed.py: arranca la escucha de audio y la refleja en la linea de estadisticas. - scripts/fetch_models.sh: descarga y verifica por SHA-256 el modelo YAMNet ONNX (16 MB). - models/yamnet.onnx: el fichero versionado no era un modelo, sino una pagina HTML de GitHub. Se saca de git y pasa a descargarse con el script. - Readme.md: seccion de audio, estado de la Fase A y ajuste de umbral.
39 lines
1.4 KiB
Bash
Executable file
39 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Descarga el modelo YAMNet en ONNX que necesita la detección de ladridos.
|
|
#
|
|
# El binario (16 MB) no se versiona en git: se descarga aquí y se verifica su
|
|
# SHA-256. YAMNet es Apache-2.0 (TF Hub de Google); esta es una conversión a
|
|
# ONNX ya validada con audio real:
|
|
# - entrada `waveform` de rango 1, (15600,) float32 -> 0.975 s a 16 kHz
|
|
# - salidas: 521 clases de AudioSet + 1024 embeddings + 64 espectrograma
|
|
# - los índices cuadran con models/yamnet_classes.csv (Bark = 70)
|
|
#
|
|
# Uso: bash scripts/fetch_models.sh
|
|
|
|
set -euo pipefail
|
|
|
|
URL="https://huggingface.co/zeropointnine/yamnet-onnx/resolve/main/yamnet.onnx"
|
|
SHA256="1510041dce24a2e9e84ec546807ac408ae496da6d1ed41bc3ccba649623f8e19"
|
|
|
|
RAIZ="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
DESTINO="$RAIZ/models/yamnet.onnx"
|
|
|
|
if [[ -f "$DESTINO" ]] && echo "$SHA256 $DESTINO" | sha256sum -c --status 2>/dev/null; then
|
|
echo "Ya está descargado y verificado: $DESTINO"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Descargando YAMNet ONNX (16 MB)..."
|
|
curl -fL --progress-bar -o "$DESTINO.tmp" "$URL"
|
|
|
|
echo "Verificando SHA-256..."
|
|
if ! echo "$SHA256 $DESTINO.tmp" | sha256sum -c --status; then
|
|
rm -f "$DESTINO.tmp"
|
|
echo "ERROR: el fichero descargado no coincide con el SHA-256 esperado." >&2
|
|
echo "Puede ser un fallo de red o que el fichero remoto haya cambiado." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mv "$DESTINO.tmp" "$DESTINO"
|
|
echo "Listo: $DESTINO ($(du -h "$DESTINO" | cut -f1))"
|