Spec-Zone.ru › TensorFlow

tf.keras.layers.MelSpectrogram

Слой предварительной обработки для преобразования исходных аудиосигналов в мел-спектрограммы.

Наследуется от: Layer, Operation

tf.keras.layers.MelSpectrogram(
    fft_length=2048,
    sequence_stride=512,
    sequence_length=None,
    window='hann',
    sampling_rate=16000,
    num_mel_bins=128,
    min_freq=20.0,
    max_freq=None,
    power_to_db=True,
    top_db=80.0,
    mag_exp=2.0,
    min_power=1e-10,
    ref_power=1.0,
    **kwargs
)

Этот слой принимает float32/float64 одиночные или пакетные аудиосигналы в качестве входных данных и вычисляет мел-спектрограмму с использованием кратковременного преобразования Фурье и мел-шкалирования. Вход должен быть тензором 1D (непакетный) или 2D (пакетный), представляющим аудиосигналы. Выход будет тензором 2D или 3D, представляющим мел-спектрограммы.

Спектрограмма — это изображение-подобное представление, показывающее частотный спектр сигнала во времени. Она использует ось x для представления времени, ось y для представления частоты, а каждый пиксель — для представления интенсивности. Мел-спектрограммы — это особый тип спектрограмм, которые используют мел-шкалу, приближающую то, как люди воспринимают звук. Они часто используются в задачах обработки речи и музыки, таких как распознавание речи, идентификация говорящего и классификация музыкальных жанров.

Ссылки:

  • Спектрограмма,
  • Мел-шкала.

Примеры:

Непакетный аудиосигнал

layer = keras.layers.MelSpectrogram(num_mel_bins=64,
                                    sampling_rate=8000,
                                    sequence_stride=256,
                                    fft_length=2048)
layer(keras.random.uniform(shape=(16000,))).shape
(64, 63)

Пакетный аудиосигнал

layer = keras.layers.MelSpectrogram(num_mel_bins=80,
                                    sampling_rate=8000,
                                    sequence_stride=128,
                                    fft_length=2048)
layer(keras.random.uniform(shape=(2, 16000))).shape
(2, 80, 125)
Форма входных данных
1D (непакетный) или 2D (пакетный) тензор с формой:(..., samples).
Форма выходных данных
2D (непакетный) или 3D (пакетный) тензор с формой:(..., num_mel_bins, time).
Аргументы
fft_length Целое число, размер окна FFT.
sequence_stride Целое число, количество выборок между последовательными столбцами STFT.
sequence_length Целое число, размер окна, используемого для применения window к каждому аудиокадру. Если None, по умолчанию fft_length.
window Строка, имя функции окна. Доступные значения — "hann" и "hamming". Если window — тензор, он будет использован напрямую как окно, и его длина должна быть sequence_length. Если window — None, оконная функция не используется. По умолчанию "hann".
sampling_rate Целое число, частота дискретизации входного сигнала.
num_mel_bins Целое число, количество мел-полос для генерации.
min_freq Вещественное число, минимальная частота мел-полос.
max_freq Вещественное число, максимальная частота мел-полос. Если None, по умолчанию sampling_rate / 2.
power_to_db Если True, преобразовать спектрограмму мощности в децибелы.
top_db Вещественное число, минимальное значение отрицательного отсечения max(10 * log10(S)) - top_db.
mag_exp Вещественное число, показатель степени для спектрограммы величины. 1 для величины, 2 для мощности и т.д. По умолчанию 2.
ref_power Вещественное число, мощность масштабируется относительно неё 10 * log10(S / ref_power).
min_power Вещественное число, минимальное значение для мощности и ref_power.
Атрибуты
input Возвращает входной(е) тензор(ы) символьной операции.

Возвращает только тензор(ы), соответствующие первому вызову операции.

output Возвращает выходной(е) тензор(ы) слоя.

Возвращает только тензор(ы), соответствующие первому вызову операции.

Методы

from_config

Просмотреть исходный код

@classmethod
from_config(
    config
)

Создаёт слой по его конфигурации.

Этот метод — обратный get_config, позволяющий создать тот же слой из словаря конфигурации. Он не обрабатывает соединение слоёв (обрабатывается сетью), а также веса (обрабатываются set_weights).

Аргументы
config Словарь Python, обычно вывод get_config.
Возвращает
Экземпляр слоя.

linear_to_mel_weight_matrix

Просмотреть исходный код

linear_to_mel_weight_matrix(
    num_mel_bins=20,
    num_spectrogram_bins=129,
    sampling_rate=8000,
    lower_edge_hertz=125.0,
    upper_edge_hertz=3800.0,
    dtype='float32'
)

Возвращает матрицу для преобразования спектрограмм линейной шкалы в мел-шкалу.

Возвращает матрицу весов, которая может использоваться для перевешивания тензора, содержащего num_spectrogram_bins линейно выборочную информацию о частоте из [0, sampling_rate / 2] в num_mel_bins информацию о частоте из [lower_edge_hertz, upper_edge_hertz] на мел-шкале.

Эта функция следует соглашению Toolkit (HTK), определяя мел-шкалу в терминах частоты в герцах в соответствии со следующей формулой:

mel(f) = 2595 * log10( 1 + 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 = keras.ops.matmul(S, A)

Матрица может использоваться с keras.ops.tensordot для преобразования спектральных полос произвольного ранга Tensor линейной шкалы в мел-шкалу.

# S has shape [..., num_spectrogram_bins].
# M has shape [..., num_mel_bins].
M = keras.ops.tensordot(S, A, 1)

Ссылки:

  • Мел-шкала (Википедия)
Аргументы
num_mel_bins Целое число Python. Количество полос в результате мел-спектра.
num_spectrogram_bins Целое число Tensor. Количество полос во входных данных спектрограммы, понимаемых как fft_size // 2 + 1, т.е. спектрограмма содержит только нередундантые бины FFT.
sampling_rate Целое число или вещественное число Tensor. Образцы в секунду входного сигнала, используемого для создания спектрограммы. Используется для определения частот, соответствующих каждому бину спектрограммы, что определяет, как они отображаются на мел-шкале.
lower_edge_hertz Вещественное число Python. Нижняя граница частот, которые будут включены в мел-спектр. Это соответствует нижнему краю самой нижней треугольной полосы.
upper_edge_hertz Вещественное число Python. Желаемый верхний край самой верхней полосы частоты.
dtype Тип результата матрицы. Должен быть вещественного типа.
Возвращает
Тензор формы [num_spectrogram_bins, num_mel_bins].

symbolic_call

Просмотреть исходный код

symbolic_call(
    *args, **kwargs
)

© 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/api_docs/python/tf/keras/layers/MelSpectrogram

Spec-Zone.ru

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