"AudioMFCC" (神经网络编码器)

NetEncoder["AudioMFCC"]

表示一个编码器,将音频文件或对象转换成它的梅尔频率倒谱系数.

NetEncoder[{"AudioMFCC","param"->val,}]

表示一个编码器,具有用于预处理和特征计算的特定参数.

更多信息

  • "AudioMFCC" 编码器计算 mel 谱图的每帧的对数的 FourierDCT. 只保留前几个系数. Mel-频率倒谱系数 (MFCC) 设法非常显著地降低特征的维数,同时保留原始信号中包含的大量信息,尤其是在语音的情况下.
  • NetEncoder[][input] 对一个输入应用编码器,产生一个 "Real32"输出.
  • NetEncoder[][{input1,input2,}] 对一系列输入应用编码器,产生一系列输出.
  • NumericArray 作为输入时,输出会是 NumericArray.
  • 编码器的输入可以为 Audio 对象或 File[] 表达式.
  • 通过对梅尔频谱应用离散余弦变换来计算输出,只保留前 nc 个系数.
  • 编码器的输出是一个维度为 {n,nc} 的 2 阶张量,其中 n 是应用预处理后的分区的数量,nc 是计算中所用系数的数量.
  • 在构建网络时,可通过指定 "port"->NetEncoder[] 将编码器添加到网络的输入端口上.
  • 参数
  • 支持下列参数:
  • "Augmentation"None是否应用增广
    "Normalization"None是否应用归一化
    "SampleRate"16000目标采样率
    "TargetLength"All目标输出长度
  • 其他分区参数:
  • "WindowSize"Automatic分区的长度
    "Offset"Automatic分区的偏移
    "WindowFunction"Automatic应用于分区的视窗
  • 梅尔频谱参数:
  • "MaximumFrequency"Automatic梅尔滤波器的最大频率
    "MinimumFrequency"Automatic梅尔滤波器的最小频率
    "NumberOfFilters"40梅尔滤波器的数量
  • MFCC 参数:
  • "NumberOfCoefficients"13系数的数量
  • 可以为每个编码器参数指定以下设置和子选项.
  • "Normalization" 可以接受以下设置:
  • None无归一化
    "Max"绝对最大值归一化到 1
    {"Max",val}绝对最大值归一化到 val
    {"RMS",val}输入音频信号的 RMS 归一化到 val
  • "TargetLength" 可以接受以下设置:
  • All与输入信号一样
    dur持续时间 dur 被指定为时间量
    nn 个分区
  • 如果指定的 "TargetLength" 不匹配输入信号的长度,则会进行填充或修剪.
  • "Augmentation" 可用以下键被指定为规则列表:
  • "Convolution"None在输入卷积脉冲响应
    "Noise"None在输入中添加噪声
    "TimeShift"None将输入移动指定的量
    "Volume"None用常量乘以输入
    "VTLP"None将声道长度扰动应用于输入
  • 任何接受数值的增广参数也会被指定为两个数的列表或单变量分布. 在第一种情况下,会根据给定边界间的均匀分布随机化值. 在第二种情况,会使用用户提供的分布.
  • "Convolution" 的可能值包括:
  • None无增广
    signalFileAudio 对象与输入卷积
    {mix,signal}与输入和 mix 参数卷积的信号
  • "Noise" 可能的值包括:
  • None无增广
    amp带有幅度 amp 的白噪声
    noiseFileAudio 对象包含要添加的噪声信号
    {amp,noise}噪声信号和其指定的幅度
  • 使用 "TimeShift"->t 移动输入 t 秒、如果必要则进行填充或剪裁. 使用 Scaled[s] 移动输入 s×dur 秒,其中,dur 是输入信号的持续时间. 使用 {t1,t2}Scaled[{ts1,t2}] 随机化指定时间之间的移动.
  • 使用 "Volume"->val 指定常量乘数.
  • 声道长度扰动 (VTLP) 将梅尔谱图中滤波频率的中心值乘以固定量. 使用 "VTLP"val 指定扰动量.
  • 当参数为 "WindowSize"->Automatic 时,使用 25 毫秒分区长度. 使用 "WindowSize"->dur 选择持续时间 dur 的分区长度. 使用 "WindowSize"->n 选择 n 个样本的分区长度.
  • 当参数为 "Offset"->Automatic 时,使用 8.33 毫秒的分区补偿. 使用 "Offset"->dur 选择持续时间 dur 的分区补偿. 使用 "Offset"->n 选择 n 个样本的分区补偿.
  • 参数 "WindowFunction" 将窗口应用于每个分区. 可能的设置为:
  • None没有视窗应用于输入音频
    Automatic
    func使用函数 func 计算视窗
    list明确指定采样窗口 list
  • 当参数设置为 "MinimumFrequency"->Automatic 时,用 Ceiling[sr/ws] 计算频率,其中 sr 为采样率 "SampleRate"ws 是分区长度 "WindowSize". 用 "MinimumFrequency"f 设定滤波器的最小频率为 f.
  • 当参数设置为r "MaximumFrequency"->Automatic 时,用 Round[Min[8000,sr/2]]] 计算频率,其中 sr 为采样率 "SampleRate". 用 "MaximumFrequency"f 设定滤波器的最大频率为 f.
  • 当参数设置为 "NumberOfFilters"->n 时,在 MFCC 的计算中将使用 n 个滤波器.
  • 当参数设置为 "NumberOfCoefficients"->n 时,在 MFCC 的计算中将使用 n 个系数.

范例

打开所有单元关闭所有单元

基本范例  (1)

创建一个 MFCC NetEncoder

创建一个 Audio 对象:

Audio 对象应用编码器:

绘制结果:

范围  (3)

NetEncoder["AudioMFCC"] 可对 FileAudio 对象进行编码. 创建一个 MFCC 编码器:

File 对象应用编码器:

对核内 Audio 对象应用该编码器:

对核外 Audio 对象应用该编码器:

创建 Audio 对象列表:

对一批输入应用 NetEncoder["AudioMFCC"]

创建一个 MFCC NetEncoder

将编码器添加到网络的输入上:

Audio 对象应用该网络:

Parameters  (9)

"Normalization"  (1)

创建一个 Audio 对象:

应用编码器,设 "Normalization"->None 避免归一化:

由于在计算频谱图之前对信号应用了归一化,因此不能保证结果的界限:

应用编码器,设 "Normalization"->Automatic 将波形样本的最大绝对值归一化为 1

求结果的最小值和最大值:

"SampleRate"  (1)

创建一个 Audio 对象:

在进行短时傅立叶变换之前用 "SampleRate"8000 的编码器将信号重新采样为 8000Hz

"TargetLength"  (1)

创建一个 Audio 对象:

Using an encoder with "TargetLength"All returns the mel-spectrogram for all the data:

Using an encoder with "TargetLength"10 zero-pads the output to be of length 10:

Using an encoder with "TargetLength"2 takes only the first two partitions:

"WindowSize"  (1)

默认分区长度是 25ms

"Offset"  (1)

创建一个 Audio 对象:

分区偏移被自动设为分区长度的 1/3

应用编码器,设 "Offset"10,返回使用偏移量为 10 个样本的分区时算出的 MFCC:

"MinimumFrequency"  (1)

创建一个 Audio 对象:

Ceiling[sr/ws] 自动计算最小频率,其中 sr 为采样率 "SampleRate"ws 是分区长度 "WindowSize"

应用编码器,设 "MinimumFrequency"2000,返回用最小频率为 2000Hz 的滤波器算出的 MFCC:

"MaximumFrequency"  (1)

创建一个 Audio 对象:

Round[Min[8000,sr/2]]] 自动计算最大频率,其中 sr 为采样率 "SampleRate"

应用编码器,设 "MaximumFrequency"2000,返回用最大频率为 2000Hz 的滤波器算出的 MFCC:

"NumberOfFilters"  (1)

创建一个 Audio 对象:

默认情况下,在 MFCC 的计算中使用 40 个滤波器:

应用编码器,设 "NumberOfFilters"14,返回用 14 个滤波器算出的 MFCC:

"NumberOfCoefficients"  (1)

创建一个 Audio 对象:

默认情况下,在 MFCC 的计算中使用 13 个滤波器:

应用编码器,设 "NumberOfCoefficients"40,返回用 40 个滤波器算出的 MFCC:

属性和关系  (1)

创建一个 Audio 对象:

创建一个 MFCC NetEncoder

可用 Ceiling[length/offset] 来计算结果的长度,其中 length 是重新采样后信号的长度,offset 是编码器的 "Offset" 参数: