Spec-Zone.ru › PyTorch 2

torch.stft

torch.stft(input, n_fft, hop_length=None, win_length=None, window=None, center=True, pad_mode='reflect', normalized=False, onesided=None, return_complex=None) [source]

Преобразование Фурье короткого времени (STFT).

Предупреждение

С версии 1.8.0, return_complex всегда должен быть явно указан для вещественных входных данных и return_complex=False устарел. Сильно рекомендуется использовать return_complex=True, так как в будущей версии PyTorch эта функция будет возвращать только комплексные тензоры.

Обратите внимание, что torch.view_as_real() может использоваться для восстановления вещественного тензора с дополнительным последним измерением для вещественной и мнимой составляющих.

STFT вычисляет преобразование Фурье коротких перекрывающихся окон входных данных. Это дает частотные составляющие сигнала, как они изменяются с течением времени. Интерфейс этой функции смоделирован по (но не является прямым аналогом) функции librosa stft.

Игнорируя необязательное измерение пакетной обработки, этот метод вычисляет следующее выражение:

X[ω,m]=∑k=0win_length-1window[k] input[m×hop_length+k]exp⁡(−j2π⋅ωkn_fft),X[\omega, m] = \sum_{k = 0}^{\text{win\_length-1}}% \text{window}[k]\ \text{input}[m \times \text{hop\_length} + k]\ % \exp\left(- j \frac{2 \pi \cdot \omega k}{\text{n\_fft}}\right),

где mm — индекс скользящего окна, а ω\omega — частота 0≤ω<n_fft0 \leq \omega < \text{n\_fft} для onesided=False, или 0≤ω<⌊n_fft/2⌋+10 \leq \omega < \lfloor \text{n\_fft} / 2 \rfloor + 1 для onesided=True.

  • input должно быть либо одномерной временной последовательностью, либо двумерным набором временных последовательностей.
  • Если hop_length равно None (по умолчанию), оно рассматривается как равное floor(n_fft / 4).
  • Если win_length равно None (по умолчанию), оно рассматривается как равное n_fft.
  • window может быть одномерным тензором размера win_length, например, из torch.hann_window(). Если window равно None (по умолчанию), оно рассматривается как имеющее значение 11 повсюду в окне. Если win_length<n_fft\text{win\_length} < \text{n\_fft}, window будет дополнено с обеих сторон до длины n_fft перед применением.
  • Если center равно True (по умолчанию), input будет дополнено с обеих сторон так, чтобы tt-й кадр был центрирован во времени t×hop_lengtht \times \text{hop\_length}. В противном случае tt-й кадр начинается во времени t×hop_lengtht \times \text{hop\_length}.
  • pad_mode определяет метод заполнения, используемый для input когда center равно True. См. torch.nn.functional.pad() для всех доступных вариантов. По умолчанию "reflect".
  • Если onesided равно True (по умолчанию для вещественного входа), возвращаются только значения для ω\omega в [0,1,2,…,⌊n_fft2⌋+1]\left[0, 1, 2, \dots, \left\lfloor \frac{\text{n\_fft}}{2} \right\rfloor + 1\right] потому что вещественно-комплексное преобразование Фурье удовлетворяет сопряжённой симметрии, т.е., X[m,ω]=X[m,n_fft−ω]∗X[m, \omega] = X[m, \text{n\_fft} - \omega]^*. Обратите внимание, что если входные или тензоры окна являются комплексными, то onesided вывод невозможен.
  • Если normalized равно True (по умолчанию False), функция возвращает результаты нормированного STFT, т.е., умноженные на (frame_length)−0.5(\text{frame\_length})^{-0.5}.
  • Если return_complex равно True (по умолчанию, если вход комплексный), результат — комплексный тензор размерности input.dim() + 1. Если False, вывод — вещественный тензор размерности input.dim() + 2, где последнее измерение представляет вещественную и мнимую составляющие.

Возвращает либо комплексный тензор размера (∗×N×T)(* \times N \times T), если return_complex истинно, или вещественный тензор размера (∗×N×T×2)(* \times N \times T \times 2). Где ∗* — необязательный размер пакета input, NN — количество частот, к которым применяется STFT, и TT — общее количество используемых кадров.

Предупреждение

Подпись этой функции изменилась в версии 0.4.1. Вызов с предыдущей подписью может привести к ошибке или неправильному результату.

Параметры
  • input (Тензор) – входной тензор формы (B?, L) где B? — это необязательное размерность пакет
  • n_fft (int) – размер преобразования Фурье
  • hop_length (int, необязательно) – расстояние между соседними кадрами скользящего окна. По умолчанию: None (считается равным floor(n_fft / 4))
  • win_length (int, необязательно) – размер кадра окна и фильтра STFT. По умолчанию: None (считается равным n_fft)
  • window (Тензор, необязательно) – необязательная функция окна. Форма должна быть одномерной и <= n_fft По умолчанию: None (считается окном из всех 11 )
  • center (bool, необязательно) – нужно ли добавлять заполнение input с обеих сторон, чтобы tt-й кадр был центрирован во времени t×hop_lengtht \times \text{hop\_length}. По умолчанию: True
  • pad_mode (str, необязательно) – управляет методом заполнения, используемым, когда center равно True. По умолчанию: "reflect"
  • normalized (bool, необязательно) – управляет тем, нужно ли возвращать результаты нормированного STFT. По умолчанию: False
  • onesided (bool, необязательно) – управляет тем, нужно ли вернуть половину результатов, чтобы избежать избыточности для вещественных входных данных. По умолчанию: True для вещественных input и window, False в противном случае.
  • return_complex (bool, необязательно) –

    возвращать комплексный тензор или вещественный тензор с дополнительным последним измерением для вещественной и мнимой компонент.

    Изменено в версии 2.0: return_complex теперь является обязательным аргументом для вещественных входных данных, так как значение по умолчанию переходит к True.

    Устарело начиная с версии 2.0: return_complex=False устарело, вместо этого используйте return_complex=True Обратите внимание, что вызов torch.view_as_real() на выходе восстановит устаревший формат вывода.

Возвращаемые значения
A tensor containing the STFT result with shape (B?, N, T, C?) where
  • B? — необязательное размерность пакета из входных данных
  • N — количество частотных выборок, (n_fft // 2) + 1 для onesided=True, или n_fft в противном случае.
  • T — количество кадров, 1 + L // hop_length для center=True, или 1 + (L - n_fft) // hop_length в противном случае.
  • C? — необязательное двумерное измерение вещественной и мнимой компонент, присутствующее, когда return_complex=False.
Тип возвращаемого значения

Тензор

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.stft.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API