针对sox的Python绑定。
soxbindings的Python项目详细描述
[![下载](https://pepy.tech/badge/soxbindings)](https://pepy.tech/project/soxbindings) ![测试](https://github.com/pseeth/soxbindings/workflows/Run%20tests/badge.svg) ![车轮制造](https://github.com/pseeth/soxbindings/workflows/Build%20wheels/badge.svg)
针对SoX的Python绑定。试图绑定 SoX命令行实用程序,但在Python中通过绑定实现速度。这个 在SoX中使用扩充时避免昂贵的exec调用。这是一个 正在工作!帮助欢迎。在
soxbindings只支持Unix系统(Linux和OSX),原因是 一个建立sox。一个相关的图书馆(torchaudio)也有类似的问题: https://github.com/pytorch/audio/issues/425。在
从pip安装
如果在MacOS或Linux上,只需执行以下操作:
pip安装sox绑定
如果在Windows上,它不受支持,但是您可以从源代码安装sox, 然后链接libsox,让一切尽可能正常。如果你这么想 如果你想用cibuildwheel自动完成这项工作,请填写一份公关报告 Windows支持!在
从源安装
在Unix(Linux,OS X)上使用Anaconda
- clone this repository
- Make a conda environment
- conda install -c conda-forge sox
- If on Linux:
- Option 1: conda install gcc_linux-64 gxx_linux-64
- Option 2: sudo apt-get install sox libsox-dev
- Option 3: build and install sox from source (e.g. as in .github/workflows/build_install_sox_centos.sh).
- pip install -e .
运行测试以确保一切正常:
`bash pip install -r extra_requirements.txt python -m pytest . `
这些测试运行各种各样的命令,都是从pysox测试中提取的 案例。然后将SoxBindings输出与pysox输出进行比较。在
使用
SoxBindings是用来替代sox命令的 线路工具,避免了昂贵的执行呼叫。具体来说,它的工作方式 是为优秀的库提供一个替代后端 命令行工具[pysox](https://github.com/rabitt/pysox)。SOX绑定 只需在pysoxTransformer类中重新实现build函数。在
注意,pysox中的Combiner类不受支持。在
如果您有一个可以使用pysox的脚本,比如:
`python import sox # create transformer tfm = sox.Transformer() # trim the audio between 5 and 10.5 seconds. tfm.trim(5, 10.5) # apply compression tfm.compand() # apply a fade in and fade out tfm.fade(fade_in_len=1.0, fade_out_len=0.5) # create an output file. tfm.build_file('path/to/input_audio.wav', 'path/to/output/audio.aiff') # or equivalently using the legacy API tfm.build('path/to/input_audio.wav', 'path/to/output/audio.aiff') # get the output in-memory as a numpy array # by default the sample rate will be the same as the input file array_out = tfm.build_array(input_filepath='path/to/input_audio.wav') # see the applied effects tfm.effects_log > ['trim', 'compand', 'fade'] `
然后,只需更改导入:
`python import soxbindings as sox `
一切都应该正常工作,但由于直接绑定,速度更快 敬利索克斯!在
部署到PyPI
每次提交时,Github操作工作流“构建轮子”都会运行 给主人。完成后,将创建OSX和Linux的控制盘并将其放入 一件艺术品。例如:
https://github.com/pseeth/soxbindings/actions/runs/169544837
下载工件zip,然后从 SOX绑定回购:
`bash unzip [/path/to/artifact.zip] # clear out dist rm -rf dist/ # create source distribution python setup.py sdist cp -r[/path/to/artifact]/* dist/ `
dist文件夹应该类似于:
` dist ├── soxbindings-0.0.1-cp35-cp35m-macosx_10_9_x86_64.whl ├── soxbindings-0.0.1-cp35-cp35m-manylinux2010_i686.whl ├── soxbindings-0.0.1-cp35-cp35m-manylinux2010_x86_64.whl ├── soxbindings-0.0.1-cp36-cp36m-macosx_10_9_x86_64.whl ├── soxbindings-0.0.1-cp36-cp36m-manylinux2010_i686.whl ├── soxbindings-0.0.1-cp36-cp36m-manylinux2010_x86_64.whl ├── soxbindings-0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl ├── soxbindings-0.0.1-cp37-cp37m-manylinux2010_i686.whl ├── soxbindings-0.0.1-cp37-cp37m-manylinux2010_x86_64.whl ├── soxbindings-0.0.1-cp38-cp38-macosx_10_9_x86_64.whl ├── soxbindings-0.0.1-cp38-cp38-manylinux2010_i686.whl ├── soxbindings-0.0.1-cp38-cp38-manylinux2010_x86_64.whl ├── soxbindings-0.0.1-pp27-pypy_73-macosx_10_9_x86_64.whl ├── soxbindings-0.0.1-pp27-pypy_73-manylinux2010_x86_64.whl ├── soxbindings-0.0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl ├── soxbindings-0.0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl └── soxbindings-0.0.1.tar.gz `
先将其上载到测试服务器(需要版本转换):
` twine upload --repository testpypi dist/* `
确保可以在Linux和OSX上安装:
` pip install -U--index-urlhttps://test.pypi.org/simple/--extra-index-urlhttps://pypi.org/simple-U soxbindings `
使用此repo中包含的演示脚本进行测试。 最后,将其上载到常规PyPi服务器:
` twine upload dist/* `
许可证
soxbindings是麻省理工学院的许可证。在
- 项目
标签: