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 и вычисляет мел-спектрограмму с помощью кратковременного преобразования Фурье и мел-шкалирования. Входные данные должны представлять собой тензор размерности 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

Spec-Zone.ru

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