當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。