Usage
Installation
You can install torch-pitch-shift from PyPI.
pip install torch-pitch-shift
To upgrade an existing installation of torch-pitch-shift, use the following command:
pip install --upgrade --no-cache-dir torch-pitch-shift
Importing
First, import torch-pitch-shift.
# import all functions
from torch_pitch_shift import *
# ... or import them manually
from torch_pitch_shift import get_fast_shifts, pitch_shift
What's included
torch-pitch-shift includes the following:
| Type | Name | Description | 
|---|---|---|
| Function | pitch_shift | 
      Shift the pitch of a batch of waveforms by a given amount. | 
| Function | get_fast_shifts | 
      Utility function for calculating pitch-shifts that can be executed quickly. | 
| Function | semitones_to_ratio | 
      Utility function to convert semitonal shifts into ratios. | 
| Function | ratio_to_semitones | 
      Utility function to convert rational shifts to semitones. | 
Methods
pitch_shift
Shift the pitch of a batch of waveforms by a given amount.
Arguments
| Argument | Required | Default Value | Type | Description | 
|---|---|---|---|---|
input | 
      Yes |  | 
      Input audio clips of shape (batch_size, channels, samples) | |
shift | 
      Yes | float or Fraction | 
      Inputs of type float indicate the amount to pitch-shift in # of bins (where 1 bin == 1 semitone if bins_per_octave == 12). Inputs of type Fraction indicate a pitch-shift ratio (usually an element in get_fast_shifts()). | 
    |
sample_rate | 
      Yes | int | 
      The sample rate of the input audio clips. | |
n_fft | 
      No | sample_rate // 64 | 
      int | 
      Size of FFT. Default sample_rate // 64. Smaller is faster. | 
    
bins_per_octave | 
      No | 12 | 
      int | 
      Number of bins per octave. Default is 12. | 
Return value
| Type | Description | 
|---|---|
 | 
      The pitch-shifted batch of audio clips | 
get_fast_shifts
Search for pitch-shift targets that can be computed quickly for a given sample rate.
| Argument | Required | Default Value | Type | Description | 
|---|---|---|---|---|
sample_rate | 
      Yes | int | 
      The sample rate of an audio clip. | |
condition | 
      No | 
       | 
      Callable | 
      A function to validate fast shift ratios. Default value limits computed targets to values between -1 and +1 octaves. | 
    
Return value
| Type | Description | 
|---|---|
List[Fraction] | 
      A list of fast pitch-shift target ratios that satisfy the given conditions. | 
semitones_to_ratio
Convert semitonal shifts into ratios.
| Argument | Required | Default Value | Type | Description | 
|---|---|---|---|---|
semitones | 
      Yes | float | 
      The number of semitones for a desired shift. | 
Return value
| Type | Description | 
|---|---|
Fraction | 
      A Fraction indicating a pitch shift ratio | 
ratio_to_semitones
Convert rational shifts to semitones.
| Argument | Required | Default Value | Type | Description | 
|---|---|---|---|---|
ratio | 
      Yes | Fraction | 
      The ratio for a desired shift. | 
Return value
| Type | Description | 
|---|---|
float | 
      The magnitude of a pitch shift in semitones | 
Example
See example.py to see an example of torch-pitch-shift in action!