AI Audio Mastering: Turnkey Automation for Podcasts & Music
Problem: Manual mastering doesn’t scale
A podcast studio releases 50 episodes per week. Each track—interview recording, musical transition, ad insertion. Manual mastering takes 40 minutes per episode. Multiply by 50: 33 person-hours per week. That’s expensive and slow. For serial content, manual processing is unacceptable—automation is needed.
We build AI mastering pipelines that replace manual labor with conveyor-belt processing: loudness normalization, frequency correction, compression, and limiting. Our engineers hold audio processing certifications and have over 5 years of MLOps experience. With more than 50 audio processing projects completed, including automation for major podcast studios, AI mastering processes a track 30 times faster than manual, and cost per track drops by an order of magnitude at volumes above 500 tracks. Contact us for a free consultation on your project.
How Matchering adjusts a track to a reference
import matchering as mg
def master_to_reference(
target_path: str,
reference_path: str,
output_path: str
) -> None:
"""Master target to sound like reference"""
mg.process(
target=mg.pcm16(target_path),
reference=mg.pcm16(reference_path),
results=[
mg.Result(output_path, subtype="PCM_16"),
]
)
Matchering analyzes the spectral and dynamic characteristics of the reference track and applies EQ + compression to the target so they sound similar. This method is especially useful for unifying the sound across tracks.
Why podcast mastering needs LUFS targeting
import subprocess
import json
def loudnorm_two_pass(input_path: str, output_path: str, target_lufs: float = -14.0) -> None:
"""
-14 LUFS = Spotify/Apple Music
-16 LUFS = YouTube
-23 LUFS = EBU R128 (broadcast)
"""
# Pass 1: analysis
probe = subprocess.run([
"ffmpeg", "-i", input_path,
"-af", f"loudnorm=I={target_lufs}:TP=-1.5:LRA=11:print_format=json",
"-f", "null", "-"
], capture_output=True, text=True)
# Parse statistics from stderr
stats = json.loads(probe.stderr.split("Parsed_loudnorm")[1].split("\n", 2)[2])
# Pass 2: final normalization with measured parameters
subprocess.run([
"ffmpeg", "-i", input_path,
"-af", (
f"loudnorm=I={target_lufs}:TP=-1.5:LRA=11"
f":measured_I={stats['input_i']}"
f":measured_LRA={stats['input_lra']}"
f":measured_TP={stats['input_tp']}"
f":measured_thresh={stats['input_thresh']}"
":linear=true:print_format=summary"
),
"-ar", "44100", output_path
], check=True)
EBU R128 is the loudness standard for broadcasting followed by most platforms. Failing LUFS compliance can result in track rejection. We use loudnorm with a two-pass scheme for precise compliance.
How automatic equalization works
import librosa
import numpy as np
from scipy.signal import butter, filtfilt
class AutoEqualizer:
"""Simple automatic EQ based on spectrum analysis"""
TARGET_SPECTRUM = {
"podcast": {
100: -3, # reduce rumble
250: -2, # clean muddiness
3000: +2, # vocal presence
8000: +1, # air
},
"music": {
60: +2,
200: -1,
3000: +1,
10000: +2,
}
}
def analyze_and_correct(self, audio: np.ndarray, sr: int, profile: str = "podcast") -> np.ndarray:
spectrum = np.abs(librosa.stft(audio))
freqs = librosa.fft_frequencies(sr=sr)
corrections = self.TARGET_SPECTRUM.get(profile, {})
corrected = audio.copy()
for freq_hz, gain_db in corrections.items():
gain_linear = 10 ** (gain_db / 20)
# Apply peaking filter around target frequency
b, a = self._peak_filter(freq_hz, sr, gain_db, Q=2.0)
corrected = filtfilt(b, a, corrected)
return corrected
def _peak_filter(self, freq, sr, gain_db, Q=2.0):
# Implementation omitted for brevity
pass
AutoEqualizer adjusts spectral balance to content type: for podcasts it reduces rumble and muddiness, for music it boosts lows and highs. Profiles can be extended for specific tasks.
What to choose: self-hosted or cloud AI mastering?
| Criteria | Self-hosted (matchering + ffmpeg) | Paid APIs (LANDR, eMastered) |
|---|---|---|
| Quality | Sufficient for podcasts/streams | High, with trained models |
| Speed | ~1 min/track (GPU) | ~5-10 seconds (cloud) |
| Cost | Only hardware + licenses | $9–25 per track |
| Control | Full over algorithms | Black box |
| Integration | Any (API, queue) | Limited to REST |
Self-hosted option pays for itself in 2-3 months when processing 500+ tracks per month. Learn more about matchering.
Comparison of manual and AI mastering
| Parameter | Manual Mastering | AI Mastering |
|---|---|---|
| Time per track (3 min) | 15-40 minutes | 30-60 seconds |
| Cost per track | High (depends on engineer) | Very low (mainly compute costs) |
| Scalability | Low | High (queue, GPU) |
| Quality control | Subjective | Objective metrics (LUFS, TP) |
| Repeatability | Low | 100% (identical parameters) |
How to evaluate AI mastering quality?
For objective comparison we use metrics: LUFS (integrated loudness), True Peak (peak level), dynamic range (DR), and spectral centroid. We conduct A/B testing on a sample of 10-20 tracks: compare original, API mastering, and our pipeline. Based on results, we optimize compression, limiting, and EQ parameters. If needed, manual adjustments are applied—ensuring quality matches commercial services.
Our process for AI mastering
- Analytics — audit current pipeline, gather requirements for loudness, formats, performance.
- Design — select algorithms (matchering, loudnorm, AutoEQ), design pipeline architecture, prototype on samples.
- Implementation — write code, integrate with your system (API, queue).
- Testing — A/B comparison with manual mastering, measure metrics (LUFS, True Peak, latency p99).
- Deployment — install on your servers or cloud, provide documentation, train your team.
Common mistakes in auto-tuning
- Using a single-pass loudnorm without measurement — loses accuracy.
- Wrong target LUFS for platform (e.g., -14 for YouTube).
- Ignoring True Peak — clipping after normalization.
- No presets for different music genres (pop requires more aggressive compression than classical).
Timeline and cost
Base pipeline (matchering + loudnorm) — from 2 weeks. With web interface and queue — 3-4 weeks. Cost is calculated individually based on integration complexity and required performance. We’ll evaluate your project for free—contact us for a consultation.
What’s included
- Source code of the pipeline (Python, Bash)
- Documentation for launch and configuration
- Docker image for deployment
- API documentation (OpenAPI)
- Training for your team (1-2 days)
- Support for 3 months after delivery
We guarantee stable pipeline operation under load up to 1000 tracks per day. We use only proven open-source libraries, eliminating vendor lock-in. Code undergoes review, is covered by tests, and is deployed in Docker. Order a pilot project—get a ready-made solution for your content.







