Kazane: simple sinc interpolation for 1D signal in PyTorch
Kazane utilize FFT based convolution to provide fast sinc interpolation for 1D signal when your sample rate only needs to change by an integer amounts; If you need to change by a fraction amounts, checkout julius.
Installation
pip install kazane
or
pip install git+https://github.com/yoyololicon/kazane
for latest version.
Usage
import kazane
import torch
signal = torch.randn(8, 2, 44100)
# downsample by an amount of 3
decimater = kazane.Decimate(3)
resampled_signal = decimater(signal)
# upsample by an amount of 2
upsampler = kazane.Upsample(2)
resampled_signal = upsampler(signal)
# you can also control number of zeros, roll-off frequency of the sinc interpolation kernel
decimater = kazane.Decimate(3, num_zeros=24, roll_off=0.9)
# use other types of window function for the sinc kernel
upsampler = kazane.Upsample(2, window_func=torch.blackman_window)
Benchmarks on CUDA
Using the benchmark scripts at bench, you can see that FFT can gives some speed improvements when the sample rate changes with some common integer numbers.
[---------- Down sample ----------]
| julius | kazane
2 threads: ------------------------
rate: 2 | 52.2 | 52.4
rate: 3 | 66.5 | 36.1
rate: 5 | 94.8 | 30.0
rate: 7 | 121.7 | 42.3
Times are in milliseconds (ms).
[----------- Up sample -----------]
| julius | kazane
2 threads: ------------------------
rate: 2 | 48.8 | 39.0
rate: 3 | 68.1 | 51.6
rate: 5 | 112.5 | 78.9
rate: 7 | 159.4 | 108.0
Times are in milliseconds (ms).
Metadata
Release files for kazane 1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kazane-1.0.4.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kazane-1.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.8 kB
Release files / kazane-1.0.4.tar.gz
| Download URL | kazane-1.0.4.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8e6ca18b8ce5f7ad00dd0f4dd8281f6ac6347e6356607093e79b6778f87d8b7a
|
|
BLAKE2b-256 checksum How to use checksums |
7b87f254fbb5d225b5bee70d7c957bd26bc4edc3753810e74ffd739e5445e909
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.17
|
Release files / kazane-1.0.4-py3-none-any.whl
| Download URL | kazane-1.0.4-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
efef842e95fee87255574891970344662708e9d9f3a9720d1c06e376ecc9bce5
|
|
BLAKE2b-256 checksum How to use checksums |
00b76924c4a40bc74f643dc74d274344b737adceb574bcd6ec46819ce4567f80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.17
|