tf.signal.linear_to_mel_weight_matrix
| Просмотреть исходный код на GitHub |
Возвращает матрицу для преобразования линейных спектrogram к шкале Мел.
tf.signal.linear_to_mel_weight_matrix(
num_mel_bins=20,
num_spectrogram_bins=129,
sample_rate=8000,
lower_edge_hertz=125.0,
upper_edge_hertz=3800.0,
dtype=tf.dtypes.float32,
name=None
)
Возвращает матрицу весов, которая может использоваться для перевеса Tensor, содержащего num_spectrogram_bins линейно выборочные частотные данные от [0, sample_rate / 2] до num_mel_bins частотных данных от [lower_edge_hertz, upper_edge_hertz] по шкале Мел.
Эта функция следует соглашению Hidden Markov Model Toolkit (HTK), определяя шкалу Мел в терминах частоты в герцах в соответствии со следующей формулой:
$$\textrm{mel}(f) = 2595 * \textrm{log}_{10}(1 + \frac{f}{700})$$
Во всех треугольниках (фильтровых банках) возвращаемой матрицы пиковое значение равно 1,0.
Например, возвращаемая матрица A может использоваться для правого умножения спектрограммы S с формой [frames, num_spectrogram_bins] значений линейного спектра (например, амплитуды STFT) для генерации «мел-спектрограммы» M с формой [frames, num_mel_bins].
# `S` has shape [frames, num_spectrogram_bins] # `M` has shape [frames, num_mel_bins] M = tf.matmul(S, A)
Матрицу можно использовать с tf.tensordot для преобразования произвольного ранга Tensor линейных спектральных бинов в шкалу Мел.
# S has shape [..., num_spectrogram_bins]. # M has shape [..., num_mel_bins]. M = tf.tensordot(S, A, 1)
| Аргументы | |
|---|---|
num_mel_bins | Целое число Python. Количество полос в результирующем мел-спектре. |
num_spectrogram_bins | Целое число Tensor. Количество бинов в исходных данных спектрограммы, которые считаются fft_size // 2 + 1, т. е. спектrogram содержит только нередундантые бины FFT. |
sample_rate | Целое число или число с плавающей точкой Tensor. Образцы в секунду входного сигнала, используемого для создания спектrogram. Используется для определения частот, соответствующих каждому бину спектrogram, что определяет, как они отображаются в шкалу Мел. |
lower_edge_hertz | Число с плавающей точкой Python. Нижняя граница частот, которые должны быть включены в мел-спектр. Это соответствует нижнему краю самой низкой треугольной полосы. |
upper_edge_hertz | Число с плавающей точкой Python. Желаемый верхний край самой высокой полосы частот. |
dtype | Тип DType результирующей матрицы. Должен быть типом с плавающей точкой. |
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
A Tensor с формой [num_spectrogram_bins, num_mel_bins]. |
| Возможные исключения | |
|---|---|
ValueError | Если num_mel_bins/num_spectrogram_bins/sample_rate не положительны, lower_edge_hertz отрицательно, частотные края упорядочены некорректно, upper_edge_hertz больше частоты Найквиста. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/signal/linear_to_mel_weight_matrix