torchaudio.prototype.functional.oscillator_bank¶
- torchaudio.prototype.functional.oscillator_bank(frequencies: Tensor, amplitudes: Tensor, sample_rate: float, reduction: str = 'sum', dtype: Optional[dtype] = torch.float64) Tensor[source]¶
Synthesize waveform from the given instantaneous frequencies and amplitudes.
Note
The phase information of the output waveform is found by taking the cumulative sum of the given instantaneous frequencies (
frequencies). This incurs roundoff error when the data type does not have enough precision. Usingtorch.float64can work around this.The following figure shows the difference between
torch.float32andtorch.float64when generating a sin wave of constant frequency and amplitude with sample rate 8000 [Hz]. Notice thattorch.float32version shows artifacts that are not seen intorch.float64version.
- Parameters:
frequencies (Tensor) – Sample-wise oscillator frequencies (Hz). Shape (…, time, N).
amplitudes (Tensor) – Sample-wise oscillator amplitude. Shape: (…, time, N).
sample_rate (float) – Sample rate
reduction (str) – Reduction to perform. Valid values are
"sum","mean"or"none". Default:"sum"dtype (torch.dpython:type or None, optional) – The data type on which cumulative sum operation is performed. Default:
torch.float64. PassNoneto disable the casting.
- Returns:
The resulting waveform.
If
reductionis"none", then the shape is (…, time, N), otherwise the shape is (…, time).- Return type:
Tensor
- Tutorials using
oscillator_bank: