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

问题描述 投票:1回答:1

嘿,我是Layman的全职员工,负责音频处理,所以我的问题很基本。我有来自两组X和Y的音频,并带有.wav音频样本,我需要制作可以正确分类为声音X或Y的模型。我建立了如何将数据加载到列表中,然后将其转换为数据框的方法,我有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或传统模型能够满足的分类更好吗?

我将非常感谢您的各种帮助也将非常欢迎用于自学的其他资源。

python-3.x machine-learning classification signal-processing audio-processing
1个回答
2
投票

我在将音频文件转换为频谱图并使用基本的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.power_to_db(spec)**2
    start = (img.shape[1] - width) // 2
    return img[:, start:start+width]
  1. 加载音频文件
  2. 使跃点长度比指定宽度长10%
  3. 根据音频信号创建频谱图
  4. 对数刻度类似于人类听力的幅度
  5. 从头到尾切掉5%,以保持沉默

结果将看起来像这样:

melspectrogram

尽管这些图像背后几乎没有人的直觉,但CNN可以对它们进行很好的分类。用不同的分辨率和设置播放一点。让我知道这对您如何工作。

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

© www.soinside.com 2019 - 2024. All rights reserved.