Skip to content

Radomir-Aksenenko/audio-normalizer

Repository files navigation

Audio Normalizer для Π²ΠΈΠ΄Π΅ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для автоматичСской Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π²ΡƒΠΊΠ° Π² Π²ΠΈΠ΄Π΅ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… с использованиСм соврСмСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Ρ… сСтСй.

ВозмоТности

  • 🎡 EBU R128 нормализация - стандарт вСщания для сбалансированного Π·Π²ΡƒΠΊΠ°
  • 🧠 НСйронныС сСти - ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡˆΡƒΠΌΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RNNoise ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²
  • ⚑ GPU ускорСниС - использованиС PyTorch для быстрой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  • πŸ“ ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° - ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° мноТСства Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ
  • πŸŽ›οΈ Π“ΠΈΠ±ΠΊΠΈΠ΅ настройки - Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
  • πŸ–₯️ Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс - графичСский интСрфСйс для простого использования

Установка

ВрСбования

  • Python 3.8+
  • FFmpeg (послСдняя вСрсия)
  • CUDA (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, для GPU ускорСния)

Установка зависимостСй

pip install -r requirements.txt

Установка FFmpeg

Windows:

  1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ FFmpeg с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ FFmpeg Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH

Linux/macOS:

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# macOS
brew install ffmpeg

ИспользованиС

Командная строка

from audio_normalizer import AudioNormalizer

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°
normalizer = AudioNormalizer(
    method='ebu_r128',  # ΠΈΠ»ΠΈ 'rms', 'peak'
    target_loudness=-23.0,  # LUFS
    use_gpu=True,  # ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU Ссли доступно
    noise_reduction=True  # Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡˆΡƒΠΌΠΎΠ²
)

# ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°
normalizer.normalize_file('input.mp4', 'output.mp4')

# ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
normalizer.normalize_batch(['file1.mp4', 'file2.mp4'], output_dir='normalized/')

ГрафичСский интСрфСйс

python gui.py

Алгоритмы Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

EBU R128 (рСкомСндуСтся)

  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ СвропСйского Π²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ союза
  • ЦСлСвая Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ: -23 LUFS
  • Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв

RMS нормализация

  • Основана Π½Π° срСднСквадратичном Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ
  • Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΌΡƒΠ·Ρ‹ΠΊΠΈ

Peak нормализация

  • Нормализация ΠΏΠΎ ΠΏΠΈΠΊΠΎΠ²Ρ‹ΠΌ значСниям
  • Быстрая, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ точная

ПодавлСниС ΡˆΡƒΠΌΠΎΠ²

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² подавлСния ΡˆΡƒΠΌΠΎΠ²:

  1. RNNoise - рСкуррСнтная нСйронная ΡΠ΅Ρ‚ΡŒ для подавлСния Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΡˆΡƒΠΌΠ°
  2. Spectral Gating - ΡΠΏΠ΅ΠΊΡ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ стробированиС Ρ‡Π΅Ρ€Π΅Π· noisereduce
  3. Traditional DSP - классичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сигналов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Нормализация Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅

normalizer = AudioNormalizer(
    method='ebu_r128',
    target_loudness=-23.0,
    speech_enhancement=True,
    noise_reduction=True
)
normalizer.normalize_file('movie.mp4', 'movie_normalized.mp4')

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° подкастов

normalizer = AudioNormalizer(
    method='rms',
    target_loudness=-20.0,
    speech_enhancement=True,
    dynamic_range_compression=True
)
normalizer.normalize_file('podcast.mp4', 'podcast_normalized.mp4')

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» config.yaml для настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

audio:
  method: "ebu_r128"
  target_loudness: -23.0
  sample_rate: 48000
  
processing:
  use_gpu: true
  batch_size: 8
  num_workers: 4
  
noise_reduction:
  enabled: true
  method: "rnnoise"
  strength: 0.8

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

  • CPU: ~0.5x Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° соврСмСнном процСссорС
  • GPU: ~2-5x Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с CUDA
  • ΠŸΠ°ΠΌΡΡ‚ΡŒ: ~500MB для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ HD Π²ΠΈΠ΄Π΅ΠΎ

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹:

  • MP4, AVI, MKV, MOV, WMV
  • MP3, WAV, FLAC, AAC, OGG

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹:

  • MP4 (рСкомСндуСтся)
  • MKV, AVI
  • Аудио: AAC, MP3, FLAC

УстранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ

FFmpeg Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½

Ошибка: FFmpeg нС найдСн в PATH
РСшСниС: УстановитС FFmpeg ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² PATH

Ошибки CUDA

Ошибка: CUDA out of memory
РСшСниС: Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ batch_size ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ GPU

МСдлСнная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
РСшСниС: Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ GPU ускорСниС ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ качСство

ЛицСнзия

MIT License - см. Ρ„Π°ΠΉΠ» LICENSE

Благодарности

  • ffmpeg-normalize - основа для Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
  • RNNoise - ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡˆΡƒΠΌΠΎΠ²
  • noisereduce - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

Если Ρƒ вас Π΅ΡΡ‚ΡŒ вопросы ΠΈΠ»ΠΈ прСдлоТСния, создайтС issue Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

About

🎡 Audio Normalizer - Professional tool for video audio normalization with multi-language support. Features: auto normalization (-23 LUFS), batch processing, 10 languages, multi-threaded. Supports MP4, AVI, MKV, MOV.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors