使用 1 个命令对整个音频数据集进行复杂的预处理
项目描述
自述文件
praudio提供对象和脚本,用于通过一个命令对整个音频数据集执行复杂的预处理操作。
praudio的实施考虑了深度学习音频/音乐应用程序。
操作在 CPU 上进行。预处理也可以即时运行,例如,在训练模型时。
该库librosa用作音频处理后端。
如何安装库?
您可以通过 PyPi
安装praudio,也可以从 GitHub克隆praudio 存储库。pip
对于这两种方法,建议使用专用的 Python 虚拟环境。
从 PyPi 安装
从 PyPi 安装是最简单的选择。在终端类型中:
$ pip install praudio
从 GitHub 安装
首先,您应该从 GitHub 克隆存储库:
$ git clone git@github.com:musikalkemist/praudio.git
然后,移动到项目根目录,安装包,在终端输入:
$ pip install .
您还可以在可用的 Makefile 中使用规则(见下文):
$ make install
要在开发模式下安装包,请使用:
$ pip install -e .[testing]
您还可以在 Makefile 中使用规则:
$ make install_dev
这将安装运行测试、lint、类型检查器所需的所有包。它还将以“可编辑”模式安装包,这是开发的理想选择。
蟒蛇版本
praudio在 Python 3.6、3.7、3.8 中工作。
如何预处理音频数据集?
该库的核心是预处理入口点。此脚本适用于配置文件。您在 yaml 文件中设置要应用的预处理类型,然后运行脚本。您的数据集将被完全预处理,并将结果递归地存储在您选择的目录中,该目录可能会从头开始创建。
要运行入口点,请确保已安装库,然后键入:
$ preprocess /path/to/config.yml
在 config.yml 中,您应该提供以下参数:
dataset_dir:存储音频数据集的目录的路径save_dir:保存预处理音频的路径。- 在 下
file_preprocessor,您应该提供loader和的设置transforms_chain。 loader:为加载程序提供设置。transforms_chain:序列中每个变换的参数。应用于您的数据的转换(即,TransformChain)。
这些配置参数用于动态初始化库中的相关对象。要了解配置文件中每个级别可用的参数,请参阅相关对象中的文档字符串。
查看test/config.sampleconfig.yml有效配置文件的示例。
封装结构
该包分为多个子包:
- 配置
- 创建
- io
- 预处理器
- 变换
config具有加载、保存和验证配置文件的工具,这些文件用于指定要使用的预处理管道的类型。
creation具有负责实例化库中关键对象的类。
io包含从文件加载/保存音频信号的设施。
preprocessors功能对象负责预处理单个音频文件,从加载到存储,以及批量文件。
transforms包含一系列操纵音频信号的对象,例如短时傅里叶变换、对数、缩放。
Makefile 有什么用?
Makefile 有一系列规则,可用于确保代码质量,并自动执行重复性任务。
短绒
该项目使用pylint. linter 有助于执行编码标准,嗅探代码异味并提供简单的重构建议。
要运行 linter 类型:
$ make lint
类型提示
该项目使用mypy. mypy是 Python 的可选静态类型检查器。您可以在 Python 程序中添加类型提示 (PEP 484),并使用 mypy 对其进行静态类型检查。
要运行类型检查器类型:
$ make typehint
测试
该项目pytest用于单元测试。测试可以使用
coverage. 这个包建议了单元测试中覆盖的代码百分比。
要运行所有单元测试类型:
$ make test
清单
Checklist 是一个实用程序规则,可以一次性运行 linter、类型检查器和测试套件:
$ make checklist
干净的
使用 clean 规则删除pyc文件和__pychache__:
$ make clean
依赖项
praudio具有以下依赖项:
- librosa==0.8.1
- pyyaml==5.4.1
- 类型-PyYAML==5.4.6
librosa广泛用于提取变换对象中的音频特征。
当前限制
praudio预处理器只能对单声道信号进行操作。如果您从事生成音乐工作,这是一个很大的限制。如果您使用该库进行音频/音乐分析,这应该不是问题。
未来的改进
- 添加音频增强/填充/裁剪变换。
- 启用多通道信号预处理。
- 将变换参数转换为成熟的对象(例如,STFTParams)
- 不使用字典进行配置,而是通过验证实例化参数对象
- 使用工厂实现不同类型的 Savers / Loaders 来生产它们。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。