pyloudnorm
Python中灵活的音频响度计。
实现了ITU-R BS.1770-4标准。
允许控制门限块大小和频率加权滤波器以实现额外控制。
有关实现的完整详细信息,请参阅我们的论文,以及我们AES演示视频中的摘要。
安装
您可以通过pip进行安装,如下所示:
pip install pyloudnorm
要获取最新版本,请始终从GitHub仓库安装:
pip install git+https://github.com/csteinmetz1/pyloudnorm
使用方法
查找音频文件的响度
测量wav文件的响度很简单。 这里我们使用PySoundFile将.wav文件读取为ndarray。
import soundfile as sf
import pyloudnorm as pyln
data, rate = sf.read("test.wav") # 加载音频(形状为(采样数,通道数))
meter = pyln.Meter(rate) # 创建BS.1770计量表
loudness = meter.integrated_loudness(data) # 测量响度
响度归一化和峰值归一化音频文件
包含了将音频文件归一化到所需峰值或所需响度的方法。
import soundfile as sf
import pyloudnorm as pyln
data, rate = sf.read("test.wav") # 加载音频
# 将音频峰值归一化到-1 dB
peak_normalized_audio = pyln.normalize.peak(data, -1.0)
# 首先测量响度
meter = pyln.Meter(rate) # 创建BS.1770计量表
loudness = meter.integrated_loudness(data)
# 将音频响度归一化到-12 dB LUFS
loudness_normalized_audio = pyln.normalize.loudness(data, loudness, -12.0)
高级操作
提供了多种替代加权滤波器,以及调整分析块大小的功能。 示例如下:
import soundfile as sf
import pyloudnorm as pyln
from pyloudnorm import IIRfilter
data, rate = sf.read("test.wav") # 加载音频
# 块大小
meter1 = pyln.Meter(rate) # 400毫秒块大小
meter2 = pyln.Meter(rate, block_size=0.200) # 200毫秒块大小
# 滤波器类别
meter3 = pyln.Meter(rate) # BS.1770计量表
meter4 = pyln.Meter(rate, filter_class="DeMan") # 完全符合标准的滤波器
meter5 = pyln.Meter(rate, filter_class="Fenton/Lee 1") # Fenton和Lee提出的低复杂度改进
meter6 = pyln.Meter(rate, filter_class="Fenton/Lee 2") # Fenton和Lee提出的高复杂度改进
meter7 = pyln.Meter(rate, filter_class="Dash et al.") # 早期修改选项
# 创建自定义IIR滤波器
my_high_pass = IIRfilter(0.0, 0.5, 20.0, rate, 'high_pass')
my_high_shelf = IIRfilter(2.0, 0.7, 1525.0, rate, 'high_shelf')
# 创建一个未初始化滤波器的计量表
meter8 = pyln.Meter(rate, filter_class="custom")
# 将自定义滤波器加载到计量表中
meter8._filters = {'my_high_pass' : my_high_pass, 'my_high_shelf' : my_high_shelf}
依赖项
- SciPy (https://www.scipy.org/)
- NumPy (http://www.numpy.org/)
引用
如果您在工作中使用了pyloudnorm,请考虑引用我们。
@inproceedings{steinmetz2021pyloudnorm,
title={pyloudnorm: {A} simple yet flexible loudness meter in Python},
author={Steinmetz, Christian J. and Reiss, Joshua D.},
booktitle={150th AES Convention},
year={2021}}
参考文献
Ian Dash, Luis Miranda, and Densil Cabrera, "多通道响度听音测试," 第124届国际音频工程学会大会,2008年5月
Pedro D. Pestana and Álvaro Barbosa, "ITU-R BS.1770算法在评估多轨素材中的准确性," 第133届国际音频工程学会大会,2012年10月
Pedro D. Pestana, Josh D. Reiss, and Álvaro Barbosa, "使用ITU-R BS.1770修改版测量多轨音频内容的响度," 第134届国际音频工程学会大会,2013年5月
Steven Fenton and Hyunkook Lee, "多轨节目响度测量的替代加权滤波器," 第143届国际音频工程学会大会,2017年10月
Brecht De Man, "EBU R128响度测量实现的评估," 第145届国际音频工程学会大会,2018年10月
张量化/可微分实现
对于可微分环境(如作为损失函数的一部分)的使用,有以下实现:
- PyTorch:Descript Inc.的
audiotools
- Jax:jaxloudnorm