首页 > 解决方案 > 如何处理不同的音频格式进行音频分类?

问题描述

我正在研究音频分类问题陈述以在两个音频类之间进行分类。我从jotform收集了样本,他们提供了音频小部件来收集 .wav 音频,但结果证明小部件以.mp3 格式存储数据:

在我的问题陈述中,分类类来自不同的格式:

class A : all the 100 samples are in .mp3 format ( jot form collection )
class B : all the samples are in .wav format

我在这里添加两种类型的类样本:

A 类示例音频 :它是 .wav 格式

细节 :

General
Complete name                            : count_class_1.wav
Format                                   : Wave
File size                                : 1.41 MiB
Duration                                 : 15 s 445 ms
Overall bit rate mode                    : Constant
Overall bit rate                         : 768 kb/s

Audio
Format                                   : PCM
Format settings                          : Little / Signed
Codec ID                                 : 1
Duration                                 : 15 s 445 ms
Bit rate mode                            : Constant
Bit rate                                 : 768 kb/s
Channel(s)                               : 1 channel
Sampling rate                            : 48.0 kHz
Bit depth                                : 16 bits
Stream size                              : 1.41 MiB (100%)

B 类音频样本Jotform 说它是 .wav 格式,但只有扩展名是 .wav,文件是 .mp3 格式。

细节 :

General
Complete name                            : count.wav
Format                                   : MPEG Audio
File size                                : 183 KiB
Duration                                 : 9 s 360 ms
Overall bit rate mode                    : Constant
Overall bit rate                         : 160 kb/s
Writing library                          : LAME3.99.5
FileExtension_Invalid                    : m1a mpa mpa1 mp1 m2a mpa2 mp2 mp3

Audio
Format                                   : MPEG Audio
Format version                           : Version 1
Format profile                           : Layer 3
Format settings                          : Joint stereo / MS Stereo
Duration                                 : 9 s 360 ms
Bit rate mode                            : Constant
Bit rate                                 : 160 kb/s
Channel(s)                               : 2 channels
Sampling rate                            : 48.0 kHz
Frame rate                               : 41.667 FPS (1152 SPF)
Compression mode                         : Lossy
Stream size                              : 183 KiB (100%)
Writing library                          : LAME3.99.5

在将其输入神经网络之前我在做什么:

  1. 下采样到 16kHz,信号电平被归一化
  2. 通过去除信号中的静音,在音频段中分段
  3. 高滤波(预加重滤波器)。然后将音频片段划分为 25 毫秒的非重叠汉明窗帧。

现在,从每个帧中提取各种特征,包括 MFCC、过零率 (ZCR)、共振峰(前 4 个)等,最后将所有这些特征馈送到简单的密集层神经网络或 CNN(频谱图格式)。

但问题是两个类的音频文件格式不同,A 类音频样本为 .wav,B 类音频样本为 .mp3,网络很可能会偏向格式或音频编码。

我想到的解决方案:

  1. 将所有文件降级到 16kHz 频率(但格式问题仍然存在)
  2. 或将所有文件转换为一种通用格式,例如我将所有 .mp3 文件转换为 .wav 文件,然后所有文件将具有相同的格式,我可以将一种转换为另一种,但我担心转换后的文件会丢失质量.

我的疑问是,如果我将两类音频样本(.wav 和 mp3 两者)都下采样到 16kHz,我的神经网络仍然会存在格式偏差吗?

当音频文件采用不同格式时,对我来说什么是音频分类的好策略?

标签: machine-learningaudiodeep-learningsignal-processinglibrosa

解决方案


仅从 MP3 转换为线性 PCM 并不会消除神经网络可能“学习”到的编码伪影。由于 MP3 是有问题的有损格式,自然的方法是将相同的编解码器应用于您的 WAVE 16 位线性 PCM 文件,并使用 MP3 中编码解码的两个类。

但是,编解码器本身可能不是您的类的唯一意外鉴别器。除了从 jotform 仔细检查音频捕获实现之外,您还可以应用像audiomentations项目中可用的数据增强技术。


推荐阅读