Spec-Zone.ru › PyTorch 1

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π⋅ωkwin_length),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{win\_length}}\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 (Tensor) – входной тензор
  • n_fft (int) – размер преобразования Фурье
  • hop_length (int, optional) – расстояние между соседними кадрами скользящего окна. По умолчанию: None (считается равным floor(n_fft / 4))
  • win_length (int, optional) – размер кадра окна и фильтра STFT. По умолчанию: None (считается равным n_fft)
  • window (Tensor, optional) – опциональная функция окна. По умолчанию: None (считается окном со значениями 11)
  • center (bool, optional) – нужно ли добавлять заполнитель input с обеих сторон, чтобы tt-й кадр был центрирован во времени t×hop_lengtht \times \text{hop\_length}. По умолчанию: True
  • pad_mode (str, optional) – определяет метод заполнения, используемый, когда center равно True. По умолчанию: "reflect"
  • normalized (bool, optional) – определяет, нужно ли возвращать нормализованные результаты STFT. По умолчанию: False
  • onesided (bool, optional) – определяет, нужно ли возвращать половину результатов для избежания дублирования для вещественных входных данных. По умолчанию: True для вещественных input и window, False в противном случае.
  • return_complex (bool, optional) – нужно ли возвращать комплексный тензор или вещественный тензор с дополнительным последним измерением для вещественной и мнимой составляющих.
Возвращаемое значение:

Тензор, содержащий результат STFT с формой, описанной выше

Тип возвращаемого значения:

Tensor

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

Spec-Zone.ru

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