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

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors