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