Skip to content

Live-broadcast audio quality control

Live-broadcast audio quality control for a media operations team · Built from scratch, solo, design to deployment

Updated

Before

Staff checked commentary audio by hand, so a missed fault could reach viewers.

After

1 hour

of readings kept on site through a network outage, then re-sent once; loudness measured to the EBU standard.

How it works
  1. 1Software:Venue

    Sends commentary audio on many channels.

  2. 2Software:Site agent

    Measures every channel to EBU loudness standards.

  3. 3Software:Site agent

    Saves readings on disk and re-sends them after a network drop.

  4. 4Software:Cloud service

    Raises an alert once a fault lasts long enough.

  5. 5Person:Operator

    Sees alerts and incidents in the web console.

Always on

  • The cloud ignores duplicate readings, so a replay never counts twice.

Problem

Staff monitored commentary audio by hand. A missed fault risked viewer complaints, regulatory fines and reputation damage.

Diagnosis

Alerts help only when complete and quiet. Network drops would lose readings, and flapping detectors would flood operators with noise.

Options I weighed

  1. The link to the cloud drops. How is no reading lost?

    Chosen

    Save readings on disk at the site and re-send them; the cloud ignores duplicates

    An hour of readings and a day of events survive an outage, and a replay never counts twice. Cost: more moving parts on the site machine.

    • Rejected

      Keep readings in memory and drop the oldest when full

      Loses data during an outage, exactly when it matters.

  2. A detector flips on and off. When does an alert fire?

    Chosen

    Only after a fault lasts a minimum time, then a cooldown

    One unstable channel cannot flood operators.

    • Rejected

      Alert on every flip

      One unstable channel buries operators in noise.

Solution

A site agent measures each channel and sends readings to a cloud service. Operators get a web console with projects, thresholds and alerts.

Site agent
  • Python
  • EBU R128 loudness
  • ONNX Runtime
  • PyTorch
  • SpeechBrain
  • Windows build
Cloud API
  • FastAPI
  • SQLAlchemy
  • Alembic
  • PDF reports
Data
  • TimescaleDB
  • PostgreSQL 17
Operator console
  • Next.js
  • React
  • TanStack Query
  • WebSockets
  • uPlot
  • Zustand
Quality and delivery
  • Docker Compose
  • GitHub Actions
  • uv
  • Ruff
  • mypy
  • pytest
  • Playwright
  • axe

Figures: Agent buffer settings