语音识别--猫狗声音识别

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计8970字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我

猫狗声音识别


一、任务需求

ESC-50数据集(Piczak,2015年)是2000个五秒时长的环境录音集合。该数据集由 50 个类组成,每个类有 40 个样本。

要求:利用YAMNet针对ESC-50数据集建立猫狗声音识别模型

二、任务目标

1、掌握TF Hub的使用方法
2、学习YAMNet网络推断
3、学习对音频数据集的操作

三、任务环境

1、jupyter开发环境
2、python3.6
3、tensorflow2.4

四、任务实施过程

ESC-50数据集(Piczak,2015年)是2000个五秒时长的环境录音集合。该数据集由 50 个类组成,每个类有 40 个样本。

import os

from IPython import display
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_io as tfio

1、探索数据

ESC-50-master/meta/esc50.csv中存储了每个音频样本的元数据

ESC-50-master/audio/存放了所有的音频文件

接下来我们使用pandas读取元数据进行查看

_ = '/home/jovyan/datas/ESC-50-master'
esc50_csv = _+'/meta/esc50.csv'
base_data_path = _+'/audio/'
pd_data = pd.read_csv(esc50_csv)
pd_data.head()

2、过滤数据

现在数据存储在 DataFrame 中,应用一些转换:

过滤掉其他类,只保留dog和cat两类。 当然,如果需要使用任何其他类,可以在这一步进行选择。

然后我们要修改文件名以获得完整路径,方便文件加载。

最后将修改标签,将dog标签保持为0,cat标签修改为1。

my_classes = ['dog', 'cat']
map_class_to_id = {
   'dog':0, 'cat':1}

filtered_pd = pd_data[pd_data.category.isin(my_classes)]

class_id = filtered_pd['category'].apply(lambda name: map_class_to_id[name])
filtered_pd = filtered_pd.assign(target=class_id)

full_path = filtered_pd['filename'].apply(lambda row: os.path.join(base_data_path, row))
filtered_pd = filtered_pd.assign(filename=full_path)

filtered_pd.head(10)
filename	fold	target	category	esc10	src_file	take
0	/home/jovyan/datas/ESC-50-master/audio/1-10003...	1	0	dog	True	100032	A
14	/home/jovyan/datas/ESC-50-master/audio/1-11038...	1	0	dog	True	110389	A
157	/home/jovyan/datas/ESC-50-master/audio/1-30226...	1	0	dog	True	30226	A
158	/home/jovyan/datas/ESC-50-master/audio/1-30344...	1	0	dog	True	30344	A
170	/home/jovyan/datas/ESC-50-master/audio/1-32318...	1	0	dog	True	32318	A
175	/home/jovyan/datas/ESC-50-master/audio/1-34094...	1	1	cat	False	34094	A
176	/home/jovyan/datas/ESC-50-master/audio/1-34094...	1	1	cat	False	34094	B
229	/home/jovyan/datas/ESC-50-master/audio/1-47819...	1	1	cat	False	47819	A
230	/home/jovyan/datas/ESC-50-master/audio/1-47819...	1	1	cat	False	47819	B
231	/home/jovyan/datas/ESC-50-master/audio/1-47819...	1	1	cat	False	47819	C

3、加载音频文件并使用YAMNet计算声音嵌入

在这一步,我们将为使用load_wav_16k_mono读取 WAV 数据,为模型提取做准备。

使用YAMNet从 WAV 数据中提取嵌入时,会得到一个(N, 1024)的数组, 其中N是 YAMNet 计算的帧数(每 0.48 秒音频一帧)。

模型将使用每一帧作为一个输入。因此,我们需要创建一个每行一帧的数组。

需要注意的是,这里我们不能将帧进行混合,因为在执行拆分时,最终可能会在不同的拆分中拥有相同音频的部分,而混合帧会降低验证和测试步骤的效率。

filenames = filtered_pd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂开发的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值