当前位置: 首页 > news >正文

语音识别--使用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分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…...

前端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

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握MVC的用法。 三、源代码以及执行结果截图&#xff1a; inputMenu.jsp&#xff1a; <% page contentType"text/html" %> <% page pageEncoding "utf-8" %> &…...

《Python编程从入门到实践》day21

# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构&#xff1a;方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…...

上位机图像处理和嵌入式模块部署(树莓派4b镜像烧录经验总结)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 陆陆续续也烧录了好多次树莓派的镜像了&#xff0c;这里面有的时候很快&#xff0c;有的时候很慢。特别是烧录慢的时候&#xff0c;也不知道是自己…...

简单数据加解密,JS和JAVA同时实现

前端Vue调用Java后端接口中的数据进行加密&#xff0c;以避免敏感数据泄露。 现在实现一个高性能加密方法&#xff0c;用来对数据进行加密后传输。算法包括JS的加密和解密方法&#xff0c;也包括Java的加密解密方法。 可以在前端加密&#xff0c;后端解密。也可以在后端加密&…...

Android Framework中PackageManagerService的深度剖析

摘要 Android操作系统的核心服务之一——PackageManagerService(PMS)&#xff0c;扮演着至关重要的角色&#xff0c;负责维护系统中所有应用程序的生命周期管理。本文旨在全面探讨PMS的功能特性、工作流程、实际应用场景&#xff0c;并对其进行优劣分析&#xff0c;以期为开发者…...

(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实例连接访问控制

实例访问控制可以控制来自于不同主机&#xff0c;不同用户是否允许访问指定的数据库&#xff0c;以及验证方式。 与oracle中的连接管理器的功能相同&#xff0c;之前有写过一篇oracleCMAN连接管理器的配置实操&#xff1a; 配置oracle连接管理器&#xff08;cman&#xff09;…...

2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录

摘要: 2024-05-07 商业分析-如何成为一个靠谱的工具人 如何在社会层面做一个更好的工具人 那么今天讲的这个主题呢&#xff0c;对吧&#xff1f;你们一看啊&#xff0c;就觉得这个就不应该我讲是吧啊&#xff0c;但是呢这个逻辑呢我还得跟你们讲一下啊&#xff0c;就是如何成为…...

C++设计模式-创建型设计模式

设计模式 设计模式是什么 设计模式是指在软件开发中&#xff0c;经过验证的&#xff0c;用于解决在特定环境下&#xff0c;重复出现的&#xff0c;特定问题的解决方案&#xff1b;其实就是解决问题的固定套路。但是要慎用设计模式&#xff0c;有一定的工程代码量之后用它比较…...

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…...

leetcode47-Permutations II

分析 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 题目 由于元素是重复的&#xff0c;要求返回不重复的&#xff0c;所以一定会有…...

246 基于matlab的交流电机动态方程

基于matlab的交流电机动态方程&#xff0c;用于交流电机动态分析。输入电机的额定功率(kW)、电机的额定转速(r/min)、转子外径(m)、铁心长(m)转子槽数、电机极对数 等参数&#xff0c;输出转速变化、力矩变化等结果。程序已调通&#xff0c;可直接运行。 246 交流电机动态 转速…...

7天入门Android开发之第2天——四大组件之活动

一、活动是什么 活动&#xff08;Activity&#xff09;是 Android 应用程序中的一个重要组件&#xff0c;它代表用户界面上的单个窗口&#xff0c;通常会填充整个屏幕。通过活动&#xff0c;可以创建各种各样的用户界面&#xff0c;并控制界面的行为。活动可以包含各种 UI 元素…...

3个步骤,让猫抓帮你轻松捕获网页视频资源

3个步骤&#xff0c;让猫抓帮你轻松捕获网页视频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况&#xff1f;在网…...

SiameseAOE模型多模态扩展探索:结合图像信息的属性抽取

SiameseAOE模型多模态扩展探索&#xff1a;结合图像信息的属性抽取 最近在做一个项目&#xff0c;需要从一堆产品说明书里自动提取技术参数。这些说明书五花八门&#xff0c;有的是纯文本PDF&#xff0c;有的则是图文混排&#xff0c;甚至有些关键参数就印在产品图片的标签上。…...

PyTorch 2.8镜像工业设计:CAD图纸→AI生成产品渲染视频→营销素材输出

PyTorch 2.8镜像工业设计&#xff1a;CAD图纸→AI生成产品渲染视频→营销素材输出 1. 工业设计新范式&#xff1a;从CAD到营销视频的全流程AI化 传统工业设计流程中&#xff0c;从CAD图纸到产品营销素材的转化往往需要耗费大量时间和人力成本。设计师需要先完成3D建模&#x…...

Graphormer部署指南:3.7GB纯Transformer图神经网络GPU快速启动

Graphormer部署指南&#xff1a;3.7GB纯Transformer图神经网络GPU快速启动 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。这个3.7GB大小的模型在OGB、PCQM4M…...

基于AI政策路径与通胀预期模型的美联储决策分析:鲍威尔观望信号引发加息预期归零

摘要&#xff1a;本文通过构建AI政策路径预测模型&#xff0c;结合通胀预期识别系统、能源价格传导算法与劳动力市场评估框架&#xff0c;对美联储在当前环境下的利率决策逻辑进行分析&#xff0c;重点解析“观望策略”背后的模型依据及市场加息预期快速回落的原因。一、AI政策…...

Qwen3-14B项目管理助手:需求文档生成、甘特图描述、风险点预判

Qwen3-14B项目管理助手&#xff1a;需求文档生成、甘特图描述、风险点预判 1. 项目管理的AI革命 项目管理是一项复杂的工作&#xff0c;涉及需求分析、进度规划、资源调配和风险控制等多个环节。传统方式下&#xff0c;项目经理需要花费大量时间编写文档、绘制甘特图和评估风…...

Pixie微型LED链式显示模块技术解析与嵌入式驱动开发

1. Pixie显示模块技术解析与嵌入式驱动开发指南Pixie 是一款面向嵌入式系统的链式可扩展微型LED点阵显示模块&#xff0c;由Lixie Labs LLC&#xff08;Connor Nishijima&#xff09;设计并开源。其核心价值在于以极小物理尺寸&#xff08;20.6mm 34.7mm&#xff09;集成双57共…...

LeetCode Hot 100 | 滑动窗口专题(C++ 题解)

LeetCode Hot 100 | 滑动窗口专题&#xff08;C 题解&#xff09; 滑动窗口是处理连续子数组/子字符串问题的核心技巧&#xff0c;通过维护一个可变窗口来避免重复计算&#xff0c;将 O(n) 的暴力枚举优化到 O(n)。本文涵盖 LeetCode Hot 100 中 2 道经典滑动窗口题目&#xff…...

[具身智能-190]:具身智能常见的仿真平台与常见的模型算法,包括传统算法与AI算法。

在具身智能的开发中&#xff0c;仿真平台与模型算法是相辅相成的两个核心部分。仿真平台为算法提供了安全、高效、低成本的“练兵场”&#xff0c;而算法则是赋予机器人智能的“大脑”。以下为你梳理当前主流的仿真平台以及两类核心的模型算法&#xff1a;传统算法与AI算法。&a…...

嵌入式Linux C++开发框架AppKit实战解析

1. 嵌入式Linux C开发框架AppKit深度解析在嵌入式Linux开发领域&#xff0c;C开发者经常面临一个尴尬局面&#xff1a;标准库功能有限&#xff0c;而ROS等框架又过于庞大。AppKit框架正是为解决这一痛点而生&#xff0c;它提供了恰到好处的中间层抽象。我在多个工业控制项目中实…...