音频.wav文件的二进制分类

时间:2018-05-15 16:53:50

标签: python-3.x machine-learning classification signal-processing audio-processing

嘿,我是完整的Layman,以防音频处理,所以我的问题将是非常基本的。 我有来自2组X和Y的音频和.wav音频样本,我需要制作正确分类的模型是声音X或Y. 我创建了如何将数据加载到列表中,而不是将其转换为Dataframe我有2列(在第二行中每行有8000个元素)。

       0    1
0   2000    [0.1329449, 0.14544961, 0.19810106, 0.21718721...
1   2000    [-0.30273795, -0.6065889, -0.4967722, -0.47117...
2   2000    [-0.07037315, -0.6685449, -0.48479277, -0.4535...

到目前为止,我从python_speech_features模块创建了这些有用的功能:

 rate,signal = sw.read(i)
    features = psf.base.mfcc(signal)
    features = psf.base.fbank(features)
    features = psf.base.logfbank(features[1])
    features = psf.base.lifter(features,L=22)
    features = psf.base.delta(features,N=13)
    features = pd.DataFrame(features)
  1. 我应该从音频文件中提取哪些其他功能?
  2. 在这里可以看到什么值得展示一些模式?例如。我可以看到一些可以显示A和B之间差异的功能吗?
  3. 进行此分类的最佳方法是,使用NN或传统模型进行分类会更好吗?
  4. 我将感激各种帮助 我们也非常欢迎额外的自学资源。

1 个答案:

答案 0 :(得分:1)

我在将音频文件转换为melspectrograms并使用基本CNN对图像进行分类方面取得了巨大成功。以下函数需要librosa库:

def audio_to_image(path, height=192, width=192):
    signal, sr = lr.load(path, res_type='kaiser_fast')
    hl = signal.shape[0]//(width*1.1)
    spec = lr.feature.melspectrogram(signal, n_mels=height, hop_length=int(hl))
    img = lr.logamplitude(spec)**2
    start = (img.shape[1] - width) // 2
    return img[:, start:start+width]
  1. 加载音频文件
  2. 使跳跃长度比指定宽度长10%
  3. 从音频信号
  4. 创建melspectrogram
  5. 记录与人类听觉相似的振幅
  6. 从开始和结束时切掉5%以处理沉默
  7. 结果将如下所示:

    melspectrogram

    虽然这些图像背后几乎没有人类的直觉,但CNN可以很好地对它们进行分类。玩一点不同的分辨率和设置。让我知道这对你有用。

    编辑:Here是我自己的项目的完整代码,将语音的音频样本分类为他们的口语。