语音识别--使用YAMNet识别环境音
⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我
语音识别--使用YAMNet识别环境音
- 使用YAMNet识别环境音
- 一、任务需求
- 二、任务目标
- 1、学习TF Hub使用
- 2、学习YAMNet网络
- 3、学习tf模型推理
- 三、任务环境
- 1、jupyter开发环境
- 2、python3.6
- 3、tensorflow2.4
- 四、任务实施过程
- 1、导入 TensorFlow 和其他库
- 2、从 TensorFlow Hub 加载 YAMNet
- 3、加载类映射
- 4、运行推理
- 五、任务小结
- 说明
使用YAMNet识别环境音
一、任务需求
YAMNet是一个预训练的深度神经网络,可以从521 个类别中预测音频事件,例如笑声、吠叫或警报声。
YAMNet采用MobileNetV1深度可分离卷积架构。它可以使用音频波形作为输入,并对来自AudioSet语料库的 521 个音频事件中的每一个进行独立预测。
在内部,该模型从音频信号中提取“帧”并批量处理这些帧。此版本的模型使用 0.96 秒长的帧,每 0.48 秒提取一帧。
该模型接受包含任意长度波形的一维 float32 张量或 NumPy 数组,表示为范围内的单通道(单声道)16 kHz 样本[-1.0, +1.0]。本教程包含帮助我们将 WAV 文件转换为支持格式的代码。
该模型返回 3 个输出,包括类分数、嵌入(我们将用于迁移学习)和对数梅尔谱图。
YAMNet 的一个特定用途是作为高级特征提取器 - 1,024 维嵌入输出。我们将使用基础 (YAMNet) 模型的输入特征,并将它们输入由一个隐藏tf.keras.layers.Dense层组成的较浅层模型。然后,我们将使用少量数据训练网络以进行音频分类,而无需大量标记数据和端到端训练。
首先,我们将测试模型并查看对音频进行分类的结果。然后,我们将构建数据预处理管道。
要求:加载并使用 YAMNet 模型进行推理。 使用 YAMNet 嵌入构建一个新模型来对环境音进行分类。 评估并导出您的模型。
二、任务目标
1、学习TF Hub使用
2、学习YAMNet网络
3、学习tf模型推理
三、任务环境
1、jupyter开发环境
2、python3.6
3、tensorflow2.4
四、任务实施过程
1、导入 TensorFlow 和其他库
这里我们要载入tensorflow_io,帮助我们轻松地从磁盘加载音频文件。
import osfrom IPython import display
import matplotlib.pyplot as plt
import numpy as np
import pandas as pdimport tensorflow as tf
import tensorflow_hub as hub
import tensorflow_io as tfio
2、从 TensorFlow Hub 加载 YAMNet
使用来自Tensorflow Hub的预训练 YAMNet 从声音文件中提取嵌入。
从 TensorFlow Hub 加载模型很简单:选择模型,复制其 URL,然后使用load函数。
yamnet_model_handle = 'https://tfhub.dev/google/yamnet/1'
yamnet_model = hub.load(yamnet_model_handle)
当然,这会涉及到网络下载,需要联网,并能顺利访问对应网址。为了避免不稳定的情况发生,我们下载好了模型,存放在/home/jovyan/datas/yamnet中,然后使用离线方式加载模型,这与上述在线方式并没有什么不同。
yamnet_model_handle = '/home/jovyan/datas/yamnet'
yamnet_model = hub.load(yamnet_model_handle)
加载示例文件
testing_wav_file_name = '/home/jovyan/datas/miaow_16k.wav'
现在我们还需要一个函数来加载音频文件,稍后在处理训练数据时也会用到它。
# 定义函数,加载音频文件,并确保采样率是正确的@tf.function
def load_wav_16k_mono(filename):""" 加载一个WAV文件,将其转换为浮点tensor,重新采样到16khz单通道音频 """file_contents = tf.io.read_file(filename)wav, sample_rate = tf.audio.decode_wav(file_contents,desired_channels=1)wav = tf.squeeze(wav, axis=-1)sample_rate = tf.cast(sample_rate, dtype=tf.int64)wav = tfio.audio.resample(wav, rate_in=sample_rate, rate_out=16000)return wav
testing_wav_data = load_wav_16k_mono(testing_wav_file_name)_ = plt.plot(testing_wav_data)display.Audio(testing_wav_data,rate=16000)

这是我们读取的样本之一,以上展示了声音内容及对应的波形图。
3、加载类映射
加载 YAMNet 能够识别的类名很重要。映射文件yamnet_model.class_map_path()以 CSV 格式存在。
class_map_path = yamnet_model.class_map_path().numpy().decode('utf-8')
class_names =list(pd.read_csv(class_map_path)['display_name'])for name in class_names[:20]:print(name)
print('...')
Speech
Child speech, kid speaking
Conversation
Narration, monologue
Babbling
Speech synthesizer
Shout
Bellow
Whoop
Yell
Children shouting
Screaming
Whispering
Laughter
Baby laughter
Giggle
Snicker
Belly laugh
Chuckle, chortle
Crying, sobbing
...
4、运行推理
YAMNet 提供帧级别的类分数(即每帧 521 分)。为了确定剪辑级别的预测,可以跨帧按类别聚合分数(例如,使用平均值或最大聚合)。这是由下面完成的scores_np.mean(axis=0)。最后,要在剪辑级别找到得分最高的类,我们需要取 521 个汇总分数中的最大值。
scores, embeddings, spectrogram = yamnet_model(testing_wav_data)
class_scores = tf.reduce_mean(scores, axis=0)
top_class = tf.argmax(class_scores)
inferred_class = class_names[top_class]print(f'The main sound is: {inferred_class}')
print(f'The embeddings shape: {embeddings.shape}')
The main sound is: Animal
The embeddings shape: (13, 1024)
五、任务小结
本实验完成学习使用TF Hub预训练模型相关内容,通过本实验我们学习到了加载并使用 YAMNet 模型进行推理相关知识,需要掌握以下知识点:
- tfhub的使用方法
- YAMNet网络的调用方法
- 模型的加载和使用方法
- 模型评估方法
–end–
说明
本实验(项目)/论文若有需要,请后台私信或【文末】个人微信公众号联系我
相关文章:
语音识别--使用YAMNet识别环境音
⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号…...
前端JS必用工具【js-tool-big-box】,邮箱,手机,身份证号,ip地址等正则验证方法学习
这一小节,我们针对前端npm包 js-tool-big-box 的使用做一些讲解,主要是针对项目中,邮箱,手机号,身份证号,ip地址,url格式,邮政编码等验证的方法使用。 目录 1 安装和引入 2 邮箱验…...
notepad++安装 hex-editor插件
打开notepad 点击插件 搜索 hex-editor,点击右侧 安装install 安装成功后,在已安装插件中就有显示了...
Ubuntu18.04设置SSH密钥登录
我们一般使用 VSCode 、MobaXterm、PuTTY等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。但是即…...
自动化运维管理工具----------Ansible模块详细解读
目录 一、自动化运维工具有哪些? 1.1Chef 1.2puppet 1.3Saltstack 二、Ansible介绍 2.1Ansible简介 2.2Ansible特点 2.3Ansible工作原理及流程 2.3.1内部流程 2.3.2外部流程 三、Ansible部署 3.1环境准备 3.2管理端安装 ansible 3.3Ansible相关文件 …...
零基础代码随想录【Day27】|| 39. 组合总和,40.组合总和II, 131.分割回文串
目录 DAY27 39. 组合总和 解题思路&代码 40.组合总和II 解题思路&代码 131.分割回文串 解题思路&代码 DAY27 39. 组合总和 力扣题目链接(opens new window) 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有…...
实验15 MVC
二、实验项目内容(实验题目) 编写代码,掌握MVC的用法。 三、源代码以及执行结果截图: inputMenu.jsp: <% page contentType"text/html" %> <% page pageEncoding "utf-8" %> &…...
《Python编程从入门到实践》day21
# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构:方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…...
上位机图像处理和嵌入式模块部署(树莓派4b镜像烧录经验总结)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 陆陆续续也烧录了好多次树莓派的镜像了,这里面有的时候很快,有的时候很慢。特别是烧录慢的时候,也不知道是自己…...
简单数据加解密,JS和JAVA同时实现
前端Vue调用Java后端接口中的数据进行加密,以避免敏感数据泄露。 现在实现一个高性能加密方法,用来对数据进行加密后传输。算法包括JS的加密和解密方法,也包括Java的加密解密方法。 可以在前端加密,后端解密。也可以在后端加密&…...
Android Framework中PackageManagerService的深度剖析
摘要 Android操作系统的核心服务之一——PackageManagerService(PMS),扮演着至关重要的角色,负责维护系统中所有应用程序的生命周期管理。本文旨在全面探讨PMS的功能特性、工作流程、实际应用场景,并对其进行优劣分析,以期为开发者…...
(AI Web、ChatGPT Native、Ai Loading、AI Tools、知豆AI)
目录 1、AI Web 2、ChatGPT Native 3、Ai Loading 4、AI Tools 5、知豆AI 1、AI Web...
VBA 批量处理Excel文件
目录 一. 批量创建Excel文件1.1 VBA的方式1.2 Powershell方式 二. 批量删除文件三. 批量重命名文件四. 合并多个Excel数据到一个Excel文件中 一. 批量创建Excel文件 1.1 VBA的方式 Sub CreateFiles()Dim strPath As String, strFileName As StringDim i As Long, rDim pathSe…...
PG实例连接访问控制
实例访问控制可以控制来自于不同主机,不同用户是否允许访问指定的数据库,以及验证方式。 与oracle中的连接管理器的功能相同,之前有写过一篇oracleCMAN连接管理器的配置实操: 配置oracle连接管理器(cman)…...
2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录
摘要: 2024-05-07 商业分析-如何成为一个靠谱的工具人 如何在社会层面做一个更好的工具人 那么今天讲的这个主题呢,对吧?你们一看啊,就觉得这个就不应该我讲是吧啊,但是呢这个逻辑呢我还得跟你们讲一下啊,就是如何成为…...
C++设计模式-创建型设计模式
设计模式 设计模式是什么 设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案;其实就是解决问题的固定套路。但是要慎用设计模式,有一定的工程代码量之后用它比较…...
code-server容器webpack的ws无法连接解决方法
TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务;[ht…...
leetcode47-Permutations II
分析 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 题目 由于元素是重复的,要求返回不重复的,所以一定会有…...
246 基于matlab的交流电机动态方程
基于matlab的交流电机动态方程,用于交流电机动态分析。输入电机的额定功率(kW)、电机的额定转速(r/min)、转子外径(m)、铁心长(m)转子槽数、电机极对数 等参数,输出转速变化、力矩变化等结果。程序已调通,可直接运行。 246 交流电机动态 转速…...
7天入门Android开发之第2天——四大组件之活动
一、活动是什么 活动(Activity)是 Android 应用程序中的一个重要组件,它代表用户界面上的单个窗口,通常会填充整个屏幕。通过活动,可以创建各种各样的用户界面,并控制界面的行为。活动可以包含各种 UI 元素…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
【多线程初阶】单例模式 指令重排序问题
文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...
大模型智能体核心技术:CoT与ReAct深度解析
**导读:**在当今AI技术快速发展的背景下,大模型的推理能力和可解释性成为业界关注的焦点。本文深入解析了两项核心技术:CoT(思维链)和ReAct(推理与行动),这两种方法正在重新定义大模…...
电脑定时关机工具推荐
软件介绍 本文介绍一款轻量级的电脑自动关机工具,无需安装,使用简单,可满足定时关机需求。 工具简介 这款关机助手是一款无需安装的小型软件,文件体积仅60KB,下载后可直接运行,无需复杂配置。 使用…...
Qt Quick模块功能及架构
Qt 6.0 中的 Qt Quick 模块是构建现代、动态用户界面的核心框架,基于声明式编程(QML)和 JavaScript,专注于高性能、流畅的动画和跨平台 UI 开发。、 一、主要功能改进 1. Qt Quick 核心架构 QML 引擎升级:Qt 6.0 使用…...
