Skip to content

leandroalonso/voiceboostn

Repository files navigation

VoiceBoostN

Real-time podcast audio normalizer for iOS. Normalizes audio to -14 LUFS with true-peak limiting, optimized for streaming playback.

Features

  • Real-time processing — Works with streaming URLs, not just local files
  • ITU BS.1770-4 compliant — Industry-standard LUFS measurement
  • Low CPU usage — Optimized with Apple Accelerate/vDSP
  • Complete processing chain:
    • Adaptive LUFS-based gain
    • 80Hz high-pass filter (removes rumble)
    • 2:1 compression (tames loud peaks)
    • True-peak limiter (-2 dBTP ceiling)

Processing Chain

Input → LUFS Measurement → Gain → High-Pass → Compressor → Limiter → Output (-14 LUFS)
Stage Parameters Purpose
LUFS Gain Target: -14 LUFS Normalize loudness
High-Pass 80 Hz, Q=0.707 Remove rumble/hum
Compressor -8 dB threshold, 2:1 ratio Reduce dynamic range
Limiter -2 dBTP ceiling, 5ms lookahead Prevent clipping

Project Structure

Normalizer/
├── VoiceBoostN/                    # Core C library
│   ├── VoiceBoostN.c               # Processing algorithms
│   ├── VoiceBoostN.h               # Public API
│   └── VoiceBoostNAnalysis.c       # Stats/analysis (optional)
├── AudioPlayer.swift               # Local files (AVAudioEngine)
├── StreamingAudioPlayer.swift      # Streaming (AVPlayer + MTAudioProcessingTap)
├── VoiceBoostNProcessorC.swift     # Swift wrapper for C code
└── ContentView.swift               # SwiftUI interface

scripts/
├── analyze_podcast.sh              # Process + quality report
├── process_podcast.sh              # Process audio file
└── audio_quality_test.sh           # Artifact detection

Usage

iOS App

  1. Open Normalizer.xcodeproj in Xcode
  2. Build and run (Cmd+R)
  3. Add audio files to Normalizer/Files/ or use streaming URLs
  4. Toggle VoiceBoostN on/off to compare
  5. Use "Validate" for instant quality check

Command Line

# Process a podcast
./scripts/process_podcast.sh input.mp3 output.wav

# Process with full quality report
./scripts/analyze_podcast.sh input.mp3

# Test processed file for artifacts
./scripts/audio_quality_test.sh output.wav input.mp3

Requirements

iOS App:

  • Xcode 14+
  • iOS 15+ / macOS 12+

Command Line:

  • ffmpeg / ffprobe
  • python3, bc

Documentation

See CLAUDE.md for detailed technical documentation of the algorithm, AVPlayer integration, and optimization strategies.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors