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


Python tf.signal.linear_to_mel_weight_matrix用法及代碼示例


返回一個矩陣以將線性比例譜圖扭曲到 mel 比例。

用法

tf.signal.linear_to_mel_weight_matrix(
    num_mel_bins=20, num_spectrogram_bins=129, sample_rate=8000,
    lower_edge_hertz=125.0, upper_edge_hertz=3800.0, dtype=tf.dtypes.float32,
    name=None
)

參數

  • num_mel_bins Python int. 生成的梅爾頻譜中有多少條帶。
  • num_spectrogram_bins 一個整數 Tensor 。源頻譜圖數據中有多少個 bin,可以理解為 fft_size // 2 + 1 ,即頻譜圖隻包含非冗餘 FFT bin。
  • sample_rate 整數或浮點數 Tensor 。用於創建頻譜圖的輸入信號的每秒樣本數。用於計算與每個頻譜圖箱對應的頻率,這決定了它們如何映射到梅爾標度中。
  • lower_edge_hertz Python浮點數。要包含在 mel 頻譜中的頻率的下限。這對應於最低三角帶的下邊。
  • upper_edge_hertz Python浮點數。最高頻帶的所需頂部邊。
  • dtype 結果矩陣的DType。必須是浮點類型。
  • name 操作的可選名稱。

返回

  • 形狀為 [num_spectrogram_bins, num_mel_bins]Tensor

拋出

  • ValueError 如果num_mel_bins /num_spectrogram_bins /sample_rate 不是正數,lower_edge_hertz 是負數,頻率邊排序不正確,upper_edge_hertz 大於奈奎斯特頻率。

返回一個權重矩陣,該矩陣可用於重新加權 Tensor ,其中包含 num_spectrogram_bins[0, sample_rate / 2] 線性采樣的頻率信息到來自 [lower_edge_hertz, upper_edge_hertz]num_mel_bins 頻率信息。

此函數遵循隱馬爾可夫模型工具包 (HTK) 約定,根據以下公式以頻率為單位定義梅爾標度:

$$\textrm{mel}(f) = 2595 * \textrm{log}_{10}(1 + \frac{f}{700})$$

在返回的矩陣中,所有三角形(濾波器組)的峰值均為 1.0。

例如,返回的矩陣 A 可用於 right-multiply 一個譜圖 S 的形狀為 [frames, num_spectrogram_bins] 的線性標度譜值(例如 STFT 幅度),以生成一個 "mel spectrogram" M 的形狀 [frames, num_mel_bins] .

# `S` has shape [frames, num_spectrogram_bins]
# `M` has shape [frames, num_mel_bins]
M = tf.matmul(S, A)

該矩陣可與tf.tensordot 一起使用,將線性尺度頻譜箱的任意秩Tensor 轉換為梅爾尺度。

# S has shape [..., num_spectrogram_bins].
# M has shape [..., num_mel_bins].
M = tf.tensordot(S, A, 1)

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.signal.linear_to_mel_weight_matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。