跳转到主要内容

高质量,一维采样率转换库

项目描述

Python-SoXR

GitHub PyPI conda-forge Packaging status Read the Docs

Python的高质量一维采样率转换库。

关键词:重采样器,音频重采样,采样率转换,DSP(数字信号处理)

Python-SoXR是libsoxr的Python封装。

安装

pip install soxr

如果安装失败,请使用python -m pip install --upgrade pip升级pip并再次尝试。

在Conda环境中

conda install -c conda-forge soxr-python

注意:Conda 包名为 soxr-python,而不是 python-soxr。

基本用法

import soxr

y = soxr.resample(
    x,          # input array – mono(1D) or multi-channel(2D of [frame, channel])
    48000,      # input samplerate
    16000       # target samplerate
)

如果输入不是 numpy.ndarray,它将被转换为 numpy.ndarray(dtype='float32')
dtype 应该是 float32、float64、int16 或 int32 之一。

输出与输入具有相同维度和数据类型的 numpy.ndarray

流式使用

使用 ResampleStream 进行实时处理或处理非常长的信号。

import soxr

rs = soxr.ResampleStream(
    44100,              # input samplerate
    16000,              # target samplerate
    1,                  # channel(s)
    dtype='float32'     # data type (default = 'float32')
)

eof = False
while not eof:
    # Get chunk
    ...

    y_chunk = rs.resample_chunk(
        x,              # input aray – mono(1D) or multi-channel(2D of [frame, channel])
        last=eof        # Set True at end of input
    )

输出帧数可能不一致。这是正常操作。
(例如 [0, 0, 0, 186, 186, 166, 186, 186, 168, ...])

📝 更多代码示例

基准测试

与 Python 其他重采样器的扫描、脉冲、速度比较。

https://colab.research.google.com/drive/1_xYUs00VWYOAXShB85W1MFWaUjGHfO4K?usp=sharing

速度比较总结

将 48000 Hz 的 10 秒降采样到 44100 Hz。
在 Google Colab 上运行。

CPU 时间(ms)
soxr (HQ) 10.8
torchaudio 13.8
soxr (VHQ) 14.5
scipy.signal.resample 21.3
lilfilter 24.7
julius 31
resampy (kaiser_fast) 108
samplerate (sinc_medium) 223
resampy (kaiser_best) 310
samplerate (sinc_best) 794

技术细节

有关重采样器背后的技术细节,请参阅 libsoxr 文档。

Python-SoXR 包包含 libsoxr 的 修改版本查看更改
这些更改不适用于动态链接构建(例如 conda-forge 构建)。
要检查 libsoxr 的版本,请使用 soxr.__libsoxr_version__

致谢和许可

Python-SoXR 是 LGPL v2.1+ 许可的,遵循 libsoxr 的许可。

使用的 OSS 库

libsoxr (LGPLv2.1+)

SoX 重采样库
https://sourceforge.net/projects/soxr/

Python-SoXR 是 libsoxr 的 Python 封装。

PFFFT (BSD-like)

PFFFT:一个快速的 FFT。
https://bitbucket.org/jpommier/pffft/

libsoxr 依赖项。

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

soxr-0.5.0.post1.tar.gz (170.9 kB 查看哈希值)

上传时间

构建分发

soxr-0.5.0.post1-cp312-abi3-win_amd64.whl (164.9 kB 查看哈希值)

上传时间 CPython 3.12+ Windows x86-64

soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (248.5 kB 查看哈希值)

上传时间 CPython 3.12+ manylinux: glibc 2.17+ x86-64

soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (216.6 kB 查看哈希值)

上传时间 CPython 3.12+ manylinux: glibc 2.17+ ARM64

soxr-0.5.0.post1-cp312-abi3-macosx_11_0_arm64.whl (156.4 kB 查看哈希值)

上传时间 CPython 3.12+ macOS 11.0+ ARM64

soxr-0.5.0.post1-cp312-abi3-macosx_10_14_x86_64.whl (200.0 kB 查看哈希值)

上传时间 CPython 3.12+ macOS 10.14+ x86-64

soxr-0.5.0.post1-cp311-cp311-win_amd64.whl (166.7 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

soxr-0.5.0.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (252.5 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

soxr-0.5.0.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (221.0 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ARM64

soxr-0.5.0.post1-cp311-cp311-macosx_11_0_arm64.whl (159.9 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

soxr-0.5.0.post1-cp311-cp311-macosx_10_14_x86_64.whl (203.6 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.14+ x86-64

soxr-0.5.0.post1-cp310-cp310-win_amd64.whl (166.9 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

soxr-0.5.0.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (252.8 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

soxr-0.5.0.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (221.2 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

soxr-0.5.0.post1-cp310-cp310-macosx_11_0_arm64.whl (160.2 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

soxr-0.5.0.post1-cp310-cp310-macosx_10_14_x86_64.whl (203.8 kB 查看哈希值)

上传时间 CPython 3.10 macOS 10.14+ x86-64

soxr-0.5.0.post1-cp39-cp39-win_amd64.whl (167.3 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

soxr-0.5.0.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.0 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

soxr-0.5.0.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (221.4 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

soxr-0.5.0.post1-cp39-cp39-macosx_11_0_arm64.whl (160.4 kB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

soxr-0.5.0.post1-cp39-cp39-macosx_10_14_x86_64.whl (204.1 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.14+ x86-64

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面