MelSpectrogram
类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
单个或批量音频信号作为输入,并使用短时傅里叶变换(Short-Time Fourier Transform)和梅尔缩放计算梅尔谱图。输入应为表示音频信号的 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)
输入形状
形状为 (..., samples)
的 1D(非批量)或 2D(批量)张量。
输出形状
形状为 (..., num_mel_bins, time)
的 2D(非批量)或 3D(批量)张量。
参数
window
的窗口大小。如果为 None
,则默认为 fft_length
。"hann"
和 "hamming"
。如果 window
是张量,它将直接用作窗口,其长度必须是 sequence_length
。如果 window
为 None
,则不使用窗口。默认为 "hann"
。None
,则默认为 sampling_rate / 2
。max(10 * log10(S)) - top_db
。10 * log10(S / ref_power)
。ref_power
的最小值。