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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。