基于采样率,对音频信号进行分类,深度学习,tensorflow2.3
文章目录
@author:tz , time:2020_9_29
1. 了解音频
如果我们想给两类 音频 信号进行分类,该从哪里下手?各类框架对 图片 分类的例子有很多,网上案例一搜一大堆,但是音频这块就很不常见了。
其基本原因是音频信号不够直观,传统 信号与系统 中,对声音进行分析,大多要经历各种 时域 到频域 的变化,诸如fft…
如果从没接触过这块的,光 频域 这个概念都要消化很久,再加上国内教材大多不讲人话,进一步加大了入门难度。
这里推荐一篇简单的入门文章
《信号与系统》太easy了 那是因为看过了这篇奇文
如果还觉得费力可以去看一下 B站 关于 傅里叶变化 的视频
2.对音频进行特征提取
光知道这些,你对音频进行处理后,得到是一大堆数据,
这里面包含有效信息吗?网络结构可以识别的信息?
肯定是包含的,但是!就这样一脑子把数据全丢进去真的好吗?
举个简单的例子:
现在,有一个时钟的图片,要求得到显示的时间?
原始数据:像素网格,你当然可以把图片像素作为数据,丢入网络训练。
比较好的特征:指针的坐标,我们如果以时钟中心为原点,很快就能求到各指针的位置,这样一来,我们就能更快更好的求到时间。
更进一步:指针的角度,这样,我们只要知道时针的角度,就能求解了。
这就是 特征工程 意义。
深度学习就是要从数据中学习表示。与问题相关度越高的数据必然是更好的选择,他能大幅度提高准确率,提升模型的速度。
回到我们 音频 处理,首先,要对我们要处理的数据集有个基本了解,不妨试试求解一下要处理的音频数据的各种特征,看看音频哪种属性(频率,带宽,分贝…) 在我们要处理的数据中是具有辨识度的。
推荐文章:
Python处理音频信号实战 : 手把手教你实现音乐流派分类和特征提取
这里情况开始不同,由于各个人的数据库不相同,你可以使用很多特征。我这里只介绍最基础的——采样点。
3.代码
新手学习代码最好的方法就是找到大神的代码一顿魔改
我找到的:
https://keras.io/examples/audio/speaker_recognition_using_cnn/#setup
由于本地是个二分类单标签问题,加上数据量较小。
结合实际情况,魔改加删减后:
import tensorflow as tf
import os
import numpy as np
import keras
from pathlib import Path
DATASET_AUDIO_PATH = 'your dataset path'
SHUFFLE_SEED = 6
class_names = os.listdir(DATASET_AUDIO_PATH)
print("Our class names: {}".format(</