SoX的Python包装器。
项目描述
pysox
Python包装器围绕sox。 在此处阅读文档。
此库在以下论文中提出
R. M. Bittner,E. J. Humphrey和J. P. Bello,“pysox:利用SoX的音频信号处理能力”,在2016年第17届国际音乐信息检索会议的最后一刻和演示论文中,纽约市,美国,2016年8月。
安装
这需要安装SoX版本14.4.2或更高版本。
在Mac上使用Homebrew安装SoX
brew install sox
如果您想支持mp3
,flac
或ogg
文件,请添加以下标志
brew install sox --with-lame --with-flac --with-libvorbis
在Linux上
apt-get install sox
或从源代码安装。
通过PyPi安装此模块的最新版本
pip安装sox
安装主分支
pip install git+https://github.com/rabitt/pysox.git
或
git clone https://github.com/rabitt/pysox.git
cd pysox
python setup.py install
测试
如果您安装了不同版本的SoX,建议您在本地运行测试,以确保一切按预期运行,只需运行以下命令:
pytest
示例
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']
转换内存数组
import numpy as np
import sox
# sample rate in Hz
sample_rate = 44100
# generate a 1-second sine tone at 440 Hz
y = np.sin(2 * np.pi * 440.0 * np.arange(sample_rate * 1.0) / sample_rate)
# create a transformer
tfm = sox.Transformer()
# shift the pitch up by 2 semitones
tfm.pitch(2)
# transform an in-memory array and return an array
y_out = tfm.build_array(input_array=y, sample_rate_in=sample_rate)
# instead, save output to a file
tfm.build_file(
input_array=y, sample_rate_in=sample_rate,
output_filepath='path/to/output.wav'
)
# create an output file with a different sample rate
tfm.set_output_format(rate=8000)
tfm.build_file(
input_array=y, sample_rate_in=sample_rate,
output_filepath='path/to/output_8k.wav'
)
连接3个音频文件
import sox
# create combiner
cbn = sox.Combiner()
# pitch shift combined audio up 3 semitones
cbn.pitch(3.0)
# convert output to 8000 Hz stereo
cbn.convert(samplerate=8000, n_channels=2)
# create the output file
cbn.build(
['input1.wav', 'input2.wav', 'input3.wav'], 'output.wav', 'concatenate'
)
# the combiner does not currently support array input/output
获取文件信息
import sox
# get the sample rate
sample_rate = sox.file_info.sample_rate('path/to/file.mp3')
# get the number of samples
n_samples = sox.file_info.num_samples('path/to/file.wav')
# determine if a file is silent
is_silent = sox.file_info.silent('path/to/file.aiff')
# file info doesn't currently support array input
项目详情
关闭
sox-1.5.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 12c7be5bb1f548d891fe11e82c08cf5f1a1d74e225298f60082e5aeb2469ada0 |
|
MD5 | 464e8913d5c8de9c497f7e1750c1fd17 |
|
BLAKE2b-256 | 3da2d8e0d8fd7abf509ead4a2cb0fb24e5758b5330166bf9223d5cb9f98a7e8d |