针对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是麻省理工学院的许可证。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Dropwizard中的Minio检索文件时,GET请求中的超时是如何处理的?   带Hibernate的java Jackson用于序列化以避免枚举   Raspberry Pi上的java Jave分段错误   java在屏幕旋转时不保存当前片段和数据   java War文件未在Heroku上正确部署   如何使用Java处理Selenium webdriver中的促销广告或cookie   java处理“用法:PApplet[options]<classname>[sketch args]”   java文本文件错误扫描程序   运行第一个JavaFX模块化程序时出现java异常   java将fileoutputstream转换为字符串   如何调试gstreamerjava?   java Spring RestTemplate ResponseBody类是什么样的   如何将JSON数组转换为Java列表。我在用斯文森   javascript在显示div按钮后进入新页面