当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.signal.mfccs_from_log_mel_spectrograms用法及代码示例


计算 log_mel_spectrograms 的 MFCC。

用法

tf.signal.mfccs_from_log_mel_spectrograms(
    log_mel_spectrograms, name=None
)

参数

  • log_mel_spectrograms [..., num_mel_bins] float32 /float64 Tensor of log-magnitude mel-scale 频谱图。
  • name 操作的可选名称。

返回

  • [..., num_mel_bins] float32 /float64 Tensorlog_mel_spectrograms 的 MFCC。

抛出

  • ValueError 如果num_mel_bins 不是正数。

使用GPU-compatible ops 实现并支持渐变。

Mel-Frequency 倒谱系数 (MFCC) 计算包括获取 log-magnitude mel-scale 频谱图的 DCT-II。 HTK 的 MFCC 使用 DCT-II 的特定缩放比例,这几乎是正交归一化。我们遵循这个约定。

返回所有num_mel_bins MFCC,并由调用者根据其应用程序选择 MFCC 的子集。例如,通常只使用前几个进行语音识别,因为这会导致信号的近似 pitch-invariant 表示。

例如:

batch_size, num_samples, sample_rate = 32, 32000, 16000.0
# A Tensor of [batch_size, num_samples] mono PCM samples in the range [-1, 1].
pcm = tf.random.normal([batch_size, num_samples], dtype=tf.float32)

# A 1024-point STFT with frames of 64 ms and 75% overlap.
stfts = tf.signal.stft(pcm, frame_length=1024, frame_step=256,
                       fft_length=1024)
spectrograms = tf.abs(stfts)

# Warp the linear scale spectrograms into the mel-scale.
num_spectrogram_bins = stfts.shape[-1].value
lower_edge_hertz, upper_edge_hertz, num_mel_bins = 80.0, 7600.0, 80
linear_to_mel_weight_matrix = tf.signal.linear_to_mel_weight_matrix(
  num_mel_bins, num_spectrogram_bins, sample_rate, lower_edge_hertz,
  upper_edge_hertz)
mel_spectrograms = tf.tensordot(
  spectrograms, linear_to_mel_weight_matrix, 1)
mel_spectrograms.set_shape(spectrograms.shape[:-1].concatenate(
  linear_to_mel_weight_matrix.shape[-1:]))

# Compute a stabilized log to get log-magnitude mel-scale spectrograms.
log_mel_spectrograms = tf.math.log(mel_spectrograms + 1e-6)

# Compute MFCCs from log_mel_spectrograms and take the first 13.
mfccs = tf.signal.mfccs_from_log_mel_spectrograms(
  log_mel_spectrograms)[...,:13]

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.signal.mfccs_from_log_mel_spectrograms。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。