# Python-SoXR
[![GitHub](https://img.shields.io/badge/GitHub-python--soxr-181717?logo=github)](https://github.com/dofuuz/python-soxr) [![PyPI](https://img.shields.io/pypi/v/soxr.svg?logo=pypi)](https://pypi.org/project/soxr/) [![conda-forge](https://img.shields.io/conda/vn/conda-forge/soxr-python?logo=conda-forge)](https://anaconda.org/conda-forge/soxr-python) [![Packaging status](https://repology.org/badge/tiny-repos/python:soxr.svg)](https://repology.org/project/python:soxr/versions) [![Read the Docs](https://img.shields.io/readthedocs/python-soxr?logo=read-the-docs)](https://python-soxr.readthedocs.io)
High quality, one-dimensional sample-rate conversion library for Python.
- Homepage: https://github.com/dofuuz/python-soxr
- Documentation: https://python-soxr.readthedocs.io
- PyPI: https://pypi.org/project/soxr/
Keywords: Resampler, Audio resampling, Samplerate conversion, DSP(Digital Signal Processing)
Python-SoXR is a Python wrapper of [libsoxr](https://sourceforge.net/projects/soxr/).
## Installation
```
pip install soxr
```
If installation fails, upgrade pip with `python -m pip install --upgrade pip` and try again.
### in Conda environment
```
conda install -c conda-forge soxr-python
```
Note: Conda packge name is `soxr-python`, not python-soxr.
## Basic usage
```python
import soxr
y = soxr.resample(
x, # input array – mono(1D) or multi-channel(2D of [frame, channel])
48000, # input samplerate
16000 # target samplerate
)
```
If input is not `numpy.ndarray`, it will be converted to `numpy.ndarray(dtype='float32')`.
dtype should be one of float32, float64, int16, int32.
Output is `numpy.ndarray` with same dimension and data type of input.
## Streaming usage
Use `ResampleStream` for real-time processing or very long signal.
```python
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
)
```
Output frame count may not be consistent. This is normal operation.
(ex. [0, 0, 0, 186, 186, 166, 186, 186, 168, ...])
📝 [More code examples](https://dofuuz.github.io/dsp/2024/05/26/sample-rate-conversion-in-python.html)
## Benchmark
Sweep, impulse, speed compairsion with other resamplers for Python.
https://colab.research.google.com/drive/1_xYUs00VWYOAXShB85W1MFWaUjGHfO4K?usp=sharing
### Speed comparison summary
Downsampling 10 sec of 48000 Hz to 44100 Hz.
Ran on Google Colab.
Library | Time on 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
## Technical detail
For technical details behind resampler, see libsoxr docs.
- https://sourceforge.net/p/soxr/wiki/Home/
- http://sox.sourceforge.net/SoX/Resampling ([archive](https://web.archive.org/web/20230626144127/https://sox.sourceforge.net/SoX/Resampling))
- https://sourceforge.net/p/soxr/code/ci/master/tree/src/soxr.h
Python-SoXR package comes with [modified version](https://github.com/dofuuz/soxr) of libsoxr. [See changes here](https://github.com/dofuuz/soxr/compare/0.1.3...master).
These changes do not apply to dynamic-linked builds (e.g. conda-forge build).
To check the version of libsoxr, use `soxr.__libsoxr_version__`.
## Credit and License
Python-SoXR is LGPL v2.1+ licensed, following libsoxr's license.
### OSS libraries used
#### libsoxr (LGPLv2.1+)
The SoX Resampler library
https://sourceforge.net/projects/soxr/
Python-SoXR is a Python wrapper of libsoxr.
#### PFFFT (BSD-like)
PFFFT: a pretty fast FFT.
https://bitbucket.org/jpommier/pffft/
libsoxr dependency.
Raw data
{
"_id": null,
"home_page": null,
"name": "soxr",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "audio resampling, samplerate conversion, SRC, signal processing, resampler",
"author": "KEUM Myungchul",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/02/c0/4429bf9b3be10e749149e286aa5c53775399ec62891c6b970456c6dca325/soxr-0.5.0.post1.tar.gz",
"platform": null,
"description": "# Python-SoXR\n\n[![GitHub](https://img.shields.io/badge/GitHub-python--soxr-181717?logo=github)](https://github.com/dofuuz/python-soxr) [![PyPI](https://img.shields.io/pypi/v/soxr.svg?logo=pypi)](https://pypi.org/project/soxr/) [![conda-forge](https://img.shields.io/conda/vn/conda-forge/soxr-python?logo=conda-forge)](https://anaconda.org/conda-forge/soxr-python) [![Packaging status](https://repology.org/badge/tiny-repos/python:soxr.svg)](https://repology.org/project/python:soxr/versions) [![Read the Docs](https://img.shields.io/readthedocs/python-soxr?logo=read-the-docs)](https://python-soxr.readthedocs.io)\n\nHigh quality, one-dimensional sample-rate conversion library for Python.\n\n- Homepage: https://github.com/dofuuz/python-soxr\n- Documentation: https://python-soxr.readthedocs.io\n- PyPI: https://pypi.org/project/soxr/\n\nKeywords: Resampler, Audio resampling, Samplerate conversion, DSP(Digital Signal Processing)\n\nPython-SoXR is a Python wrapper of [libsoxr](https://sourceforge.net/projects/soxr/).\n\n\n## Installation\n\n```\npip install soxr\n```\n\nIf installation fails, upgrade pip with `python -m pip install --upgrade pip` and try again.\n\n\n### in Conda environment\n\n```\nconda install -c conda-forge soxr-python\n```\n\nNote: Conda packge name is `soxr-python`, not python-soxr.\n\n\n## Basic usage\n\n```python\nimport soxr\n\ny = soxr.resample(\n x, # input array \u2013 mono(1D) or multi-channel(2D of [frame, channel])\n 48000, # input samplerate\n 16000 # target samplerate\n)\n```\nIf input is not `numpy.ndarray`, it will be converted to `numpy.ndarray(dtype='float32')`. \ndtype should be one of float32, float64, int16, int32.\n\nOutput is `numpy.ndarray` with same dimension and data type of input.\n\n\n## Streaming usage\n\nUse `ResampleStream` for real-time processing or very long signal.\n\n```python\nimport soxr\n\nrs = soxr.ResampleStream(\n 44100, # input samplerate\n 16000, # target samplerate\n 1, # channel(s)\n dtype='float32' # data type (default = 'float32')\n)\n\neof = False\nwhile not eof:\n # Get chunk\n ...\n\n y_chunk = rs.resample_chunk(\n x, # input aray \u2013 mono(1D) or multi-channel(2D of [frame, channel])\n last=eof # Set True at end of input\n )\n```\n\nOutput frame count may not be consistent. This is normal operation. \n(ex. [0, 0, 0, 186, 186, 166, 186, 186, 168, ...])\n\n\ud83d\udcdd [More code examples](https://dofuuz.github.io/dsp/2024/05/26/sample-rate-conversion-in-python.html)\n\n\n## Benchmark\n\nSweep, impulse, speed compairsion with other resamplers for Python.\n\nhttps://colab.research.google.com/drive/1_xYUs00VWYOAXShB85W1MFWaUjGHfO4K?usp=sharing\n\n\n### Speed comparison summary\n\nDownsampling 10 sec of 48000 Hz to 44100 Hz. \nRan on Google Colab.\n\nLibrary | Time on CPU (ms)\n------------------------ | ----------------\nsoxr (HQ) | 10.8\ntorchaudio | 13.8\nsoxr (VHQ) | 14.5\nscipy.signal.resample | 21.3\nlilfilter | 24.7\njulius | 31\nresampy (kaiser_fast) | 108\nsamplerate (sinc_medium) | 223\nresampy (kaiser_best) | 310\nsamplerate (sinc_best) | 794\n\n\n## Technical detail\n\nFor technical details behind resampler, see libsoxr docs.\n- https://sourceforge.net/p/soxr/wiki/Home/\n- http://sox.sourceforge.net/SoX/Resampling ([archive](https://web.archive.org/web/20230626144127/https://sox.sourceforge.net/SoX/Resampling))\n- https://sourceforge.net/p/soxr/code/ci/master/tree/src/soxr.h\n\nPython-SoXR package comes with [modified version](https://github.com/dofuuz/soxr) of libsoxr. [See changes here](https://github.com/dofuuz/soxr/compare/0.1.3...master). \nThese changes do not apply to dynamic-linked builds (e.g. conda-forge build). \nTo check the version of libsoxr, use `soxr.__libsoxr_version__`.\n\n\n## Credit and License\n\nPython-SoXR is LGPL v2.1+ licensed, following libsoxr's license.\n\n### OSS libraries used\n\n#### libsoxr (LGPLv2.1+)\nThe SoX Resampler library \nhttps://sourceforge.net/projects/soxr/\n\nPython-SoXR is a Python wrapper of libsoxr.\n\n#### PFFFT (BSD-like)\nPFFFT: a pretty fast FFT. \nhttps://bitbucket.org/jpommier/pffft/ \n\nlibsoxr dependency.\n",
"bugtrack_url": null,
"license": null,
"summary": "High quality, one-dimensional sample-rate conversion library",
"version": "0.5.0.post1",
"project_urls": {
"Bug tracker": "https://github.com/dofuuz/python-soxr/issues",
"Documentation": "https://python-soxr.readthedocs.io",
"Homepage": "https://github.com/dofuuz/python-soxr",
"Source": "https://github.com/dofuuz/python-soxr"
},
"split_keywords": [
"audio resampling",
" samplerate conversion",
" src",
" signal processing",
" resampler"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7d96bee1eb69d66fc28c3b219ba9b8674b49d3dcc6cd2f9b3e5114ff28cf88b5",
"md5": "795b5c26a771ac97d9121c9a9ebef760",
"sha256": "7406d782d85f8cf64e66b65e6b7721973de8a1dc50b9e88bc2288c343a987484"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp310-cp310-macosx_10_14_x86_64.whl",
"has_sig": false,
"md5_digest": "795b5c26a771ac97d9121c9a9ebef760",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 203841,
"upload_time": "2024-08-31T03:42:59",
"upload_time_iso_8601": "2024-08-31T03:42:59.186376Z",
"url": "https://files.pythonhosted.org/packages/7d/96/bee1eb69d66fc28c3b219ba9b8674b49d3dcc6cd2f9b3e5114ff28cf88b5/soxr-0.5.0.post1-cp310-cp310-macosx_10_14_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1f5d56ad3d181d30d103128f65cc44f4c4e24c199e6d5723e562704e47c89f78",
"md5": "b59bc2a33ecfbbb007ce6b28de60bd4f",
"sha256": "fa0a382fb8d8e2afed2c1642723b2d2d1b9a6728ff89f77f3524034c8885b8c9"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b59bc2a33ecfbbb007ce6b28de60bd4f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 160192,
"upload_time": "2024-08-31T03:43:01",
"upload_time_iso_8601": "2024-08-31T03:43:01.128637Z",
"url": "https://files.pythonhosted.org/packages/1f/5d/56ad3d181d30d103128f65cc44f4c4e24c199e6d5723e562704e47c89f78/soxr-0.5.0.post1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7f09e43c39390e26b4c1b8d46f8a1c252a5077fa9f81cc2326b03c3d2b85744e",
"md5": "50481503459d153bb6e73ea54184760d",
"sha256": "8b01d3efb95a2851f78414bcd00738b0253eec3f5a1e5482838e965ffef84969"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "50481503459d153bb6e73ea54184760d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 221176,
"upload_time": "2024-08-31T03:43:02",
"upload_time_iso_8601": "2024-08-31T03:43:02.663381Z",
"url": "https://files.pythonhosted.org/packages/7f/09/e43c39390e26b4c1b8d46f8a1c252a5077fa9f81cc2326b03c3d2b85744e/soxr-0.5.0.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bae6059070b4cdb7fdd8ffbb67c5087c1da9716577127fb0540cd11dbf77923b",
"md5": "755d3d6e1443cd68f068ae5f2a9cc737",
"sha256": "fcc049b0a151a65aa75b92f0ac64bb2dba785d16b78c31c2b94e68c141751d6d"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "755d3d6e1443cd68f068ae5f2a9cc737",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 252779,
"upload_time": "2024-08-31T03:43:04",
"upload_time_iso_8601": "2024-08-31T03:43:04.582653Z",
"url": "https://files.pythonhosted.org/packages/ba/e6/059070b4cdb7fdd8ffbb67c5087c1da9716577127fb0540cd11dbf77923b/soxr-0.5.0.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ad6486082b6372e5ff807dfa79b857da9f50e94e155706000daa43fdc3b59851",
"md5": "0c9fa9e9fcde2bafbd761aade6b54c5f",
"sha256": "97f269bc26937c267a2ace43a77167d0c5c8bba5a2b45863bb6042b5b50c474e"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "0c9fa9e9fcde2bafbd761aade6b54c5f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 166881,
"upload_time": "2024-08-31T03:43:06",
"upload_time_iso_8601": "2024-08-31T03:43:06.255939Z",
"url": "https://files.pythonhosted.org/packages/ad/64/86082b6372e5ff807dfa79b857da9f50e94e155706000daa43fdc3b59851/soxr-0.5.0.post1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2928dc62dae260a77603e8257e9b79078baa2ca4c0b4edc6f9f82c9113d6ef18",
"md5": "3aa9d45f6c85618077091a3e5799db2f",
"sha256": "6fb77b626773a966e3d8f6cb24f6f74b5327fa5dc90f1ff492450e9cdc03a378"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp311-cp311-macosx_10_14_x86_64.whl",
"has_sig": false,
"md5_digest": "3aa9d45f6c85618077091a3e5799db2f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 203648,
"upload_time": "2024-08-31T03:43:08",
"upload_time_iso_8601": "2024-08-31T03:43:08.339313Z",
"url": "https://files.pythonhosted.org/packages/29/28/dc62dae260a77603e8257e9b79078baa2ca4c0b4edc6f9f82c9113d6ef18/soxr-0.5.0.post1-cp311-cp311-macosx_10_14_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0e483e88329a695f6e0e38a3b171fff819d75d7cc055dae1ec5d5074f34d61e3",
"md5": "ba875f163d18dd6a1fe965c46bd879dc",
"sha256": "39e0f791ba178d69cd676485dbee37e75a34f20daa478d90341ecb7f6d9d690f"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ba875f163d18dd6a1fe965c46bd879dc",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 159933,
"upload_time": "2024-08-31T03:43:10",
"upload_time_iso_8601": "2024-08-31T03:43:10.053239Z",
"url": "https://files.pythonhosted.org/packages/0e/48/3e88329a695f6e0e38a3b171fff819d75d7cc055dae1ec5d5074f34d61e3/soxr-0.5.0.post1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9ca56b439164be6871520f3d199554568a7656e96a867adbbe5bac179caf5776",
"md5": "4c808ccba5ce976a73bbbcecbf708c5a",
"sha256": "4f0b558f445ba4b64dbcb37b5f803052eee7d93b1dbbbb97b3ec1787cb5a28eb"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "4c808ccba5ce976a73bbbcecbf708c5a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 221010,
"upload_time": "2024-08-31T03:43:11",
"upload_time_iso_8601": "2024-08-31T03:43:11.839187Z",
"url": "https://files.pythonhosted.org/packages/9c/a5/6b439164be6871520f3d199554568a7656e96a867adbbe5bac179caf5776/soxr-0.5.0.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9fe5400e3bf7f29971abad85cb877e290060e5ec61fccd2fa319e3d85709c1be",
"md5": "47fd9e97dd6d120bc4da03567ac64f64",
"sha256": "ca6903671808e0a6078b0d146bb7a2952b118dfba44008b2aa60f221938ba829"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "47fd9e97dd6d120bc4da03567ac64f64",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 252471,
"upload_time": "2024-08-31T03:43:13",
"upload_time_iso_8601": "2024-08-31T03:43:13.347608Z",
"url": "https://files.pythonhosted.org/packages/9f/e5/400e3bf7f29971abad85cb877e290060e5ec61fccd2fa319e3d85709c1be/soxr-0.5.0.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "86946a7e91bea7e6ca193ee429869b8f18548cd79759e064021ecb5756024c7c",
"md5": "d5ec7a015781494957cca1dc71ec30de",
"sha256": "c4d8d5283ed6f5efead0df2c05ae82c169cfdfcf5a82999c2d629c78b33775e8"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "d5ec7a015781494957cca1dc71ec30de",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 166723,
"upload_time": "2024-08-31T03:43:15",
"upload_time_iso_8601": "2024-08-31T03:43:15.212853Z",
"url": "https://files.pythonhosted.org/packages/86/94/6a7e91bea7e6ca193ee429869b8f18548cd79759e064021ecb5756024c7c/soxr-0.5.0.post1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5de3d422d279e51e6932e7b64f1170a4f61a7ee768e0f84c9233a5b62cd2c832",
"md5": "b16abbe3d2f6b7827959cae94847a8c4",
"sha256": "fef509466c9c25f65eae0ce1e4b9ac9705d22c6038c914160ddaf459589c6e31"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp312-abi3-macosx_10_14_x86_64.whl",
"has_sig": false,
"md5_digest": "b16abbe3d2f6b7827959cae94847a8c4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 199993,
"upload_time": "2024-08-31T03:43:17",
"upload_time_iso_8601": "2024-08-31T03:43:17.240573Z",
"url": "https://files.pythonhosted.org/packages/5d/e3/d422d279e51e6932e7b64f1170a4f61a7ee768e0f84c9233a5b62cd2c832/soxr-0.5.0.post1-cp312-abi3-macosx_10_14_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "20f188adaca3c52e03bcb66b63d295df2e2d35bf355d19598c6ce84b20be7fca",
"md5": "ddf8cf0caf5775fa6e219f57995fb9a4",
"sha256": "4704ba6b13a3f1e41d12acf192878384c1c31f71ce606829c64abdf64a8d7d32"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp312-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ddf8cf0caf5775fa6e219f57995fb9a4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 156373,
"upload_time": "2024-08-31T03:43:18",
"upload_time_iso_8601": "2024-08-31T03:43:18.633808Z",
"url": "https://files.pythonhosted.org/packages/20/f1/88adaca3c52e03bcb66b63d295df2e2d35bf355d19598c6ce84b20be7fca/soxr-0.5.0.post1-cp312-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b838bad15a9e615215c8219652ca554b601663ac3b7ac82a284aca53ec2ff48c",
"md5": "62edccfcf048789fa1cf3a494285a45a",
"sha256": "bd052a66471a7335b22a6208601a9d0df7b46b8d087dce4ff6e13eed6a33a2a1"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "62edccfcf048789fa1cf3a494285a45a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 216564,
"upload_time": "2024-08-31T03:43:20",
"upload_time_iso_8601": "2024-08-31T03:43:20.789441Z",
"url": "https://files.pythonhosted.org/packages/b8/38/bad15a9e615215c8219652ca554b601663ac3b7ac82a284aca53ec2ff48c/soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e11a569ea0420a0c4801c2c8dd40d8d544989522f6014d51def689125f3f2935",
"md5": "3ee89c2c54fa4263fc36db477a3e99fc",
"sha256": "a3f16810dd649ab1f433991d2a9661e9e6a116c2b4101039b53b3c3e90a094fc"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3ee89c2c54fa4263fc36db477a3e99fc",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 248455,
"upload_time": "2024-08-31T03:43:22",
"upload_time_iso_8601": "2024-08-31T03:43:22.165498Z",
"url": "https://files.pythonhosted.org/packages/e1/1a/569ea0420a0c4801c2c8dd40d8d544989522f6014d51def689125f3f2935/soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bc10440f1ba3d4955e0dc740bbe4ce8968c254a3d644d013eb75eea729becdb8",
"md5": "92cbe5abc0f5e822a7e7289153555e88",
"sha256": "b1be9fee90afb38546bdbd7bde714d1d9a8c5a45137f97478a83b65e7f3146f6"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp312-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "92cbe5abc0f5e822a7e7289153555e88",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 164937,
"upload_time": "2024-08-31T03:43:23",
"upload_time_iso_8601": "2024-08-31T03:43:23.671971Z",
"url": "https://files.pythonhosted.org/packages/bc/10/440f1ba3d4955e0dc740bbe4ce8968c254a3d644d013eb75eea729becdb8/soxr-0.5.0.post1-cp312-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d97bc8d797235d06ae316e0c9bc2b1d0d5d948834dfac17eba0ad10fd177524b",
"md5": "fa16ece2707ef9c941e6d3cdc5979d02",
"sha256": "c5af7b355959061beb90a1d73c4834ece4549f07b708f8c73c088153cec29935"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp39-cp39-macosx_10_14_x86_64.whl",
"has_sig": false,
"md5_digest": "fa16ece2707ef9c941e6d3cdc5979d02",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 204073,
"upload_time": "2024-08-31T03:43:24",
"upload_time_iso_8601": "2024-08-31T03:43:24.935309Z",
"url": "https://files.pythonhosted.org/packages/d9/7b/c8d797235d06ae316e0c9bc2b1d0d5d948834dfac17eba0ad10fd177524b/soxr-0.5.0.post1-cp39-cp39-macosx_10_14_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "885cf6cf6b90ce1628def17c746d6cde9991fdd29667ef1d5fb5bd3b22eb788f",
"md5": "33f5e651b00fa198606676325dc67270",
"sha256": "e1dda616fc797b1507b65486f3116ed2c929f13c722922963dd419d64ada6c07"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "33f5e651b00fa198606676325dc67270",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 160375,
"upload_time": "2024-08-31T03:43:26",
"upload_time_iso_8601": "2024-08-31T03:43:26.742897Z",
"url": "https://files.pythonhosted.org/packages/88/5c/f6cf6b90ce1628def17c746d6cde9991fdd29667ef1d5fb5bd3b22eb788f/soxr-0.5.0.post1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a54a6a11d62cfd6383c88f4918bdc5191d9c437f649c9101ceb5eec7e2837f0b",
"md5": "a6251a7d87c9c6099522d53a660c621b",
"sha256": "94de2812368e98cb42b4eaeddf8ee1657ecc19bd053f8e67b9b5aa12a3592012"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "a6251a7d87c9c6099522d53a660c621b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 221450,
"upload_time": "2024-08-31T03:43:28",
"upload_time_iso_8601": "2024-08-31T03:43:28.048139Z",
"url": "https://files.pythonhosted.org/packages/a5/4a/6a11d62cfd6383c88f4918bdc5191d9c437f649c9101ceb5eec7e2837f0b/soxr-0.5.0.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "25d183a66e795381ddfc5c3ebf34cc0ac68735c7c459ed1fe65a2193a52c57b1",
"md5": "cc02d2de2c898afdf7b38e175d83f302",
"sha256": "9c8e9c980637e03d3f345a4fd81d56477a58c294fb26205fa121bc4eb23d9d01"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "cc02d2de2c898afdf7b38e175d83f302",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 253025,
"upload_time": "2024-08-31T03:43:29",
"upload_time_iso_8601": "2024-08-31T03:43:29.893153Z",
"url": "https://files.pythonhosted.org/packages/25/d1/83a66e795381ddfc5c3ebf34cc0ac68735c7c459ed1fe65a2193a52c57b1/soxr-0.5.0.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd2e1fbad5cc8c49c45a0b94221d16445792f55b63fe4f6d3885db960d92892c",
"md5": "a6c9b35cf5f851628b0250ffbd29b4a8",
"sha256": "7e71b0b0db450f36de70f1047505231db77a713f8c47df9342582ae8a4b828f2"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "a6c9b35cf5f851628b0250ffbd29b4a8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 167292,
"upload_time": "2024-08-31T03:43:31",
"upload_time_iso_8601": "2024-08-31T03:43:31.313729Z",
"url": "https://files.pythonhosted.org/packages/cd/2e/1fbad5cc8c49c45a0b94221d16445792f55b63fe4f6d3885db960d92892c/soxr-0.5.0.post1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "02c04429bf9b3be10e749149e286aa5c53775399ec62891c6b970456c6dca325",
"md5": "31c59fcccf4e51d65cb55cd8c8f97b58",
"sha256": "7092b9f3e8a416044e1fa138c8172520757179763b85dc53aa9504f4813cff73"
},
"downloads": -1,
"filename": "soxr-0.5.0.post1.tar.gz",
"has_sig": false,
"md5_digest": "31c59fcccf4e51d65cb55cd8c8f97b58",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 170853,
"upload_time": "2024-08-31T03:43:33",
"upload_time_iso_8601": "2024-08-31T03:43:33.058553Z",
"url": "https://files.pythonhosted.org/packages/02/c0/4429bf9b3be10e749149e286aa5c53775399ec62891c6b970456c6dca325/soxr-0.5.0.post1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-31 03:43:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dofuuz",
"github_project": "python-soxr",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "soxr"
}