关于 audio-normalizer
audio-normalizer 是用于调整单个或批量音频文件音量的 Python 工具。它支持峰值和 RMS 标准化、LUFS 匹配及余量控制,可用于播客、音乐和语音处理。
主要功能
- 01峰值与 RMS 标准化
- 02匹配 LUFS 目标
- 03批量处理文件
- 04保留原始格式
- 05可配置余量
适用场景
- 01统一播客各集音量
- 02匹配音乐播放列表的响度
- 03标准化语音录音音量
- 04视频混音前调整音频电平
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill audio-normalizer安装后在 Claude Code 中输入/audio-normalizer确认已加载。
附带文件scripts/audio_normalizer.pyscripts/requirements.txt
详细介绍
音频标准化
使用峰值或 RMS 标准化来调整音频音量,确保不同文件的响度一致。
用途
音量标准化适用于:
- 确保播客各期音量一致
- 平衡音乐播放列表音量
- 标准化语音录音
- 满足广播响度规范
功能
- 峰值标准化:将音频标准化至最大峰值(dBFS)
- RMS 标准化:将音频标准化至平均响度
- 响度匹配:匹配 LUFS 目标值,以满足广播规范
- 批量处理:将多个文件标准化至相同音量
- 保留格式:保留原始音频格式
- 余量控制:通过可配置的余量防止削波
快速开始
from audio_normalizer import AudioNormalizer
# Peak normalization to -1 dBFS
normalizer = AudioNormalizer()
normalizer.load('input.mp3')
normalizer.normalize_peak(target_dbfs=-1.0)
normalizer.save('normalized.mp3')
# RMS normalization for consistent average loudness
normalizer.normalize_rms(target_dbfs=-20.0)
normalizer.save('normalized_rms.mp3')
# Batch normalize all files to same level
normalizer.batch_normalize(
input_files=['audio1.mp3', 'audio2.mp3'],
output_dir='normalized/',
method='rms',
target_dbfs=-20.0
)
CLI 用法
# Peak normalization
python audio_normalizer.py input.mp3 --output normalized.mp3 --method peak --target -1.0
# RMS normalization
python audio_normalizer.py input.mp3 --output normalized.mp3 --method rms --target -20.0
# Batch normalize directory
python audio_normalizer.py *.mp3 --output-dir normalized/ --method rms --target -20.0
# Show current levels without normalizing
python audio_normalizer.py input.mp3 --analyze-only
API 参考
AudioNormalizer
class AudioNormalizer:
def load(self, filepath: str) -> 'AudioNormalizer'
def normalize_peak(self, target_dbfs: float = -1.0, headroom: float = 0.1) -> 'AudioNormalizer'
def normalize_rms(self, target_dbfs: float = -20.0) -> 'AudioNormalizer'
def analyze_levels(self) -> Dict[str, float]
def save(self, output: str, format: str = None, bitrate: str = '192k') -> str
def batch_normalize(self, input_files: List[str], output_dir: str,
method: str = 'rms', target_dbfs: float = -20.0) -> List[str]
标准化方法
峰值标准化
- 缩放音频,使最高峰值达到目标音量
- 保留动态范围
- 适用于防止削波
- 目标值:通常为 -1.0 至 -3.0 dBFS
RMS 标准化
- 缩放音频,使平均音量达到目标值
- 更适合匹配感知响度
- 适用于播客和语音
- 目标值:通常为 -20.0 至 -23.0 dBFS
LUFS 匹配
- 相对于满刻度的综合响度单位
- 广播标准(EBU R128、ITU BS.1770)
- 目标值:-23 LUFS(广播)、-16 LUFS(流媒体)
最佳实践
播客:
normalizer.normalize_rms(target_dbfs=-19.0) # Speech clarity
音乐:
normalizer.normalize_peak(target_dbfs=-1.0) # Preserve dynamics
广播:
normalizer.normalize_rms(target_dbfs=-23.0) # EBU R128 compliance
使用场景
- 播客制作:确保各期音量一致
- 音乐播放列表:连续播放时保持响度均匀
- 有声书:标准化旁白音量
- 会议录音:标准化不同发言者的音量
- 视频制作:混音前匹配音频音量
限制
- 不会应用动态压缩(请使用单独的压缩器)
- 不会移除直流偏移(建议预处理)
- 峰值标准化无法匹配感知响度
- 无法修复已削波的音频(失真是永久性的)
评论
支持 Markdown