声音识别和自然语言处理类似,声音和文本都是一种序列化的数据。自然语言处理要处理文本,首先要将文本表示成为计算机能够识别的数据,比如one-hot编码,词袋模型,或者训练成词向量嵌入到空间内。在声音领域内,声音可以通过librosa库进行特征处理,例如提取melspectrogram,mfcc特征。进而可以成为计算机可以识别,处理的数据。

     本次做食物声音识别,共有20种咀嚼食物的声音,如咀嚼肉饼,卷心菜等。baseline采用的是CNN,最后一层接全连接层,激活函数采用softmax,做多种声音识别

     提取特征后的数据要经过处理输入到Conv2D函数中,Conv2D处理的数据是四维数据,且Conv2D处理的数据格式为conv2d(in_channels,out_channels,kernel_size, stride=(1,1),padding=0,dilation=(1,1),groups=1)。

经过处理之后X-train格式为(750,16,8,1),X-test格式为(250,16,8,1),四维数据的物理意义为(batch_size, channel, height, width)

经过CNN网络,卷积,池化,flatten,最后经过softmax分类经过的网络结构如下图所示,总共的参数为1144596个

Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 16, 8, 64)         640       
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 8, 4, 64)          0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 8, 4, 128)         73856     
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 4, 2, 128)         0         
_________________________________________________________________
dropout (Dropout)            (None, 4, 2, 128)         0         
_________________________________________________________________
flatten (Flatten)            (None, 1024)              0         
_________________________________________________________________
dense (Dense)                (None, 1024)              1049600   
_________________________________________________________________
dense_1 (Dense)              (None, 20)                20500     
=================================================================
Total params: 1,144,596
Trainable params: 1,144,596
Non-trainable params: 0

   框架选用的是基于tensorflow的kears框架,最后将训练后的model应用到测试数据,即可预测测试声音的标签,结果并保存到submit.csv

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐