跳到内容

↑ 音频特征

预处理

预处理规范示例 (假设音频文件的采样率为 16000)

preprocessing:
    type: fbank
    missing_value_strategy: bfill
    audio_file_length_limit_in_s: 7.5
    fill_value: null
    norm: null
    window_length_in_s: 0.04
    window_shift_in_s: 0.02
    window_type: hamming
    in_memory: true
    padding_value: 0.0
    num_fft_points: null
    num_filter_bands: 80

Ludwig 支持使用 PyTorch 的 Torchaudio 库读取音频文件。该库支持 WAV, AMB, MP3, FLAC, OGG/VORBIS, OPUS, SPHEREAMR-NB 格式。

参数

  • type (默认: fbank) : 定义要使用的音频特征类型。选项: fbank, group_delay, raw, stft, stft_phase。有关每种类型的解释,请参阅此处
  • missing_value_strategy (默认: bfill) : 当音频列中存在缺失值时应遵循的策略。选项: fill_with_const, fill_with_mode, bfill, ffill, drop_row。详见缺失值策略
  • audio_file_length_limit_in_s (默认: 7.5): 定义音频文件最大长度限制(以秒为单位)的浮点值。所有超过此限制的文件将被截断。所有短于此限制的文件将使用 padding_value 进行填充。
  • fill_value (默认: null): 在 missing_value_strategy 为 fill_with_const 时用于替换缺失值的值。
  • norm (默认: null): 音频文件的归一化策略。如果为 None,则不执行归一化。如果为 per_file,则按“每个文件”级别应用 z-norm。选项: per_file, null
  • window_length_in_s (默认: 0.04): 定义短时傅里叶变换使用的窗口长度。仅当 audio_feature_type 为 'raw' 时需要此参数。
  • window_shift_in_s (默认: 0.02): 定义短时傅里叶变换使用的窗口移位(也称为 hop_length)。仅当 audio_feature_type 为 'raw' 时需要此参数。
  • window_type (默认: hamming): 定义在进行短时傅里叶变换之前对信号进行加权处理的窗口类型。选项: bartlett, blackman, hamming, hann
  • in_memory (默认: true): 定义音频数据集在训练过程中是驻留在内存中,还是动态地从磁盘获取(对大型数据集有用)。后一种情况下,每个训练迭代都会从磁盘获取一批输入音频。选项: true, false
  • padding_value (默认: 0.0): 用于填充的浮点值。
  • num_fft_points (默认: null): 定义短时傅里叶变换使用的 FFT 点数。
  • num_filter_bands (默认: 80): 定义滤波器组中使用的滤波器数量。仅当 audio_feature_type 为 'fbank' 时需要此参数。

预处理参数也可以在 类型全局预处理 部分中定义一次并应用于所有音频输入特征。

输入特征

音频文件根据 preprocessing 配置下的 type 参数转换为以下类型之一。

  • raw: 音频文件被转换为大小为 N x L x W 的浮点张量(其中 N 是数据集的大小,L 对应于 audio_file_length_limit_in_s * sample_rateW = 1)。
  • stft: 音频被转换为 stft 幅度。音频文件被转换为大小为 N x L x W 的浮点张量(其中 N 是数据集的大小,L 对应于 ceil(audio_file_length_limit_in_s * sample_rate - window_length_in_s * sample_rate + 1/ window_shift_in_s * sample_rate) + 1W 对应于 num_fft_points / 2)。
  • fbank: 音频文件被转换为 FBANK 特征(也称为 log Mel-滤波器组值)。FBANK 特征是根据 HTK Book 中的定义实现的:原始信号 -> 预加重 -> 去除直流均值 -> stft 幅度 -> 功率谱:stft^2 -> Mel-滤波器组值:应用在 Mel 尺度上等间距的三角形滤波器 -> 对数压缩:log()。总体而言,音频文件被转换为大小为 N x L x W 的浮点张量,其中 N,Lstft 中的相同,W 等于 num_filter_bands
  • stft_phase: 每个 stft bin 的相位信息附加到 stft 幅度上,因此音频文件被转换为大小为 N x L x 2W 的浮点张量,其中 N,L,Wstft 中的相同。
  • group_delay: 音频根据这篇论文中的方程 (23) 转换为群延迟特征。群延迟特征与 stft 具有相同的张量大小。

在特征级别指定的编码器参数为

  • tied (默认 null): 用于与该编码器共享权重的另一个输入特征的名称。它必须是同一类型且具有相同编码器参数的特征的名称。

输入特征列表中的音频特征条目示例

name: audio_column_name
type: audio
tied: null
encoder: 
    type: parallel_cnn

编码器

音频特征编码器与 序列特征 的编码器相同。

编码器类型和编码器参数也可以在 类型全局编码器 部分中定义一次并应用于所有音频输入特征。

输出特征

目前没有音频解码器。

如果这为您的应用开启了有趣的用例,请提交 GitHub Issue 或在社区 Discord 上联系我们。