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 и вычисляет мел-спектрограмму с помощью кратковременного преобразования Фурье и мел-шкалирования. Входные данные должны представлять собой тензор размерности 1 (без пакетной обработки) или 2 (с пакетной обработкой), содержащий аудиосигналы. Результатом будет тензор размерности 2 или 3, содержащий мел-спектрограммы.
Спектрограмма — это похожее на изображение представление, показывающее частотный спектр сигнала во времени. Ось 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)| Форма входных данных | |
|---|---|
Тензор размерности 1 (без пакетной обработки) или 2 (с пакетной обработкой) с формой:(..., samples). |
| Форма выходных данных | |
|---|---|
Тензор размерности 2 (без пакетной обработки) или 3 (с пакетной обработкой) с формой:(..., num_mel_bins, time). |
| Аргументы | |
|---|---|
fft_length | Целое число — размер окна БПФ. |
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 и позволяет создать тот же слой из словаря конфигурации. Он не обрабатывает связи между слоями (это делает Network) и веса (это делает 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], представленных в мел-шкале.
Эта функция следует соглашению инструментария скрытых марковских моделей (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, то есть спектрограмма содержит только неповторяющиеся полосы БПФ. |
sampling_rate | Целое число или число с плавающей точкой Tensor. Количество отсчётов в секунду входного сигнала, использованного для создания спектрограммы. Применяется для определения частот, соответствующих каждой полосе спектрограммы, от чего зависит их отображение в мел-шкалу. |
lower_edge_hertz | Число с плавающей точкой Python. Нижняя граница частот, включаемых в мел-спектр. Соответствует нижнему краю самой низкой треугольной полосы. |
upper_edge_hertz | Число с плавающей точкой Python. Желаемая верхняя граница самой высокочастотной полосы. |
dtype | 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