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

Tensorflow音频分类

tensorflow

https://www.tensorflow.org/lite/examples/audio_classification/overview?hl=zh-cn

官方有移动端demo

前端不会  就只能找找有没有java支持

注意版本

注意JDK版本

package com.example.demo17.controller;import org.tensorflow.*;
import org.tensorflow.ndarray.*;
import org.tensorflow.ndarray.impl.dense.FloatDenseNdArray;
import org.tensorflow.proto.framework.DataType;
import org.tensorflow.proto.framework.MetaGraphDef;
import org.tensorflow.proto.framework.SignatureDef;
import org.tensorflow.proto.framework.TensorInfo;
import org.tensorflow.types.TFloat32;
import org.tensorflow.types.TInt64;import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.xml.transform.Result;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;public class Test {private static FloatNdArray t1() {
//        String audioFilePath = "D:\\ai\\cat.wav";String audioFilePath = "C:\\Users\\user\\Downloads\\output_Wo9KJb-5zuz1_2.wav";
//        String audioFilePath = "D:\\ai\\111\\111.wav";// YAMNet期望的采样率int sampleRate = 16000;// YAMNet帧大小,0.96秒int frameSizeInMs = 96;// YAMNet帧步长,0.48秒int hopSizeInMs = 48;try (AudioInputStream audioStream = AudioSystem.getAudioInputStream(Paths.get(audioFilePath).toFile())) {AudioFormat format = audioStream.getFormat();if (format.getSampleRate() != sampleRate || format.getChannels() != 1) {System.out.println("Warning: Audio must be 16kHz mono. Consider preprocessing.");}int frameSize = (int) (sampleRate * frameSizeInMs / 1000);int hopSize = (int) (sampleRate * hopSizeInMs / 1000);byte[] buffer = new byte[frameSize * format.getFrameSize()];short[] audioSamples = new short[frameSize];// 存储每个帧的音频数据List<Float> floatList = new ArrayList<>();while (true) {int bytesRead = audioStream.read(buffer);if (bytesRead == -1) {break;}// 将读取的字节转换为short数组(假设16位精度)for (int i = 0; i < bytesRead / format.getFrameSize(); i++) {audioSamples[i] = (short) ((buffer[i * 2] & 0xFF) | (buffer[i * 2 + 1] << 8));}// 对当前帧进行处理(例如,归一化和准备送入模型)float[] floats = processFrame(audioSamples);for (float aFloat : floats) {floatList.add(aFloat);}// 移动到下一个帧System.arraycopy(audioSamples, hopSize, audioSamples, 0, frameSize - hopSize);}// 将List<Float>转换为float[]float[] floatArray = new float[floatList.size()];for (int i = 0; i < floatList.size(); i++) {floatArray[i] = floatList.get(i);}return StdArrays.ndCopyOf(floatArray);} catch (UnsupportedAudioFileException | IOException e) {e.printStackTrace();}return null;}private static float[] processFrame(short[] frame) {// 示例:归一化音频数据到[-1.0, 1.0]float[] normalizedFrame = new float[frame.length];for (int i = 0; i < frame.length; i++) {// short的最大值为32767,故除以32768得到[-1.0, 1.0]normalizedFrame[i] = frame[i] / 32768f;}return normalizedFrame;}static Map<String,String> map=new ConcurrentHashMap<>();public static void main(String[] args) throws Exception {FloatNdArray floatNdArray = t1();TFloat32 tFloat32 = TFloat32.tensorOf(floatNdArray);//SavedModelBundle savedModelBundle = SavedModelBundle.load("D:\\saved_model", "serve");SavedModelBundle savedModelBundle = SavedModelBundle.load("C:\\Users\\user\\Downloads\\archive", "serve");Map<String, SignatureDef> signatureDefMap = MetaGraphDef.parseFrom(savedModelBundle.metaGraphDef().toByteArray()).getSignatureDefMap();/*** 获取基本定义信息*/SignatureDef modelSig = signatureDefMap.get("serving_default");String inputTensorName = modelSig.getInputsMap().get("waveform").getName();String outputTensorName = modelSig.getOutputsMap().get("output_0").getName();savedModelBundle.graph();try (Session session = savedModelBundle.session()) {/*JDK 17*/
//            Result run = session.runner()
//                    .feed(inputTensorName, tFloat32)
//                    .fetch(outputTensorName)
//                    .run();
//            Tensor out = run.get(0);
//            Shape shape = out.shape();
//
//            System.out.println(shape);/*JDK 8*/List<Tensor> run = session.runner().feed(inputTensorName, tFloat32).fetch(outputTensorName).run();Tensor tensor = run.get(0);Shape shape = tensor.shape();System.out.println(shape.asArray());String l=String.valueOf(shape.asArray()[0]);//读取CSV文件String csvFile = "C:\\Users\\user\\Downloads\\archive\\assets\\yamnet_class_map.csv";try {List<String> lines = Files.readAllLines(Paths.get(csvFile));for (String line : lines) {String[] values = line.split(",");map.put(values[0], values[2]);}} catch (IOException e) {e.printStackTrace();}String s = map.get(l);System.out.println(s);}}
}

相关文章:

Tensorflow音频分类

tensorflow https://www.tensorflow.org/lite/examples/audio_classification/overview?hlzh-cn 官方有移动端demo 前端不会 就只能找找有没有java支持 注意版本 注意JDK版本 package com.example.demo17.controller;import org.tensorflow.*; import org.tensorflow.ndarra…...

mqtt-emqx:keepAlive机制测试

mqtt keepAlive原理详见【https://www.emqx.com/zh/blog/mqtt-keep-alive】 # 下面开始写测试代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2…...

C++基础7:STL六大组件

目录 一、标准容器 1、顺序容器 vector ​编辑 deque list 容器适配器 stack queue prority_queue: 关联容器 有序关联容器set、mutiset、map、mutimap 增删查O(log n) 无序关联容 unordered_set、unordered_mutiset、unordered_map、unordered_mutimap 增删…...

特别名词Test Paper1

特别名词Test Paper1 ability 能力abstract 摘要accountant 会计accuracy 准确度acid 酸action 行动activity 活动actor 男演员adult 成人adventure 冒险advertisements 广告&#xff0c;宣传advertising 广告advice 建议age 年龄agency 代理机构&#xff0c;中介agreement 同…...

每日题库:Huawe数通HCIA——全部【813道】

1.关于ARP报文的说法错误的是?单选 A.ARP报文不能被转发到其他广播域 B.ARP应答报文是单播方发送的 C.任何链路层协议都需要ARP协议辅助获取数据链路层标识 DARP请求报文是广播发送的 答案:C  解析: STP协议不需要ARP辅助 2.园区网络搭建时,使用以下哪种协议可以避免出现二层…...

#04 Stable Diffusion与其他AI图像生成技术的比较

文章目录 前言1. Stable Diffusion2. DALL-E3. GAN&#xff08;生成对抗网络&#xff09;4. VQ-VAE比较总结 前言 随着人工智能技术的飞速发展&#xff0c;AI图像生成技术已成为创意产业和科研领域的热点。Stable Diffusion作为其中的佼佼者&#xff0c;其性能和应用广受关注。…...

不确定性+电动汽车!含高比例新能源和多类型电动汽车的配电网能量管理程序代码!

前言 能源供应的可持续性和清洁性是当今世界共同关注的议题&#xff0c;配电网与可再生能源发电相结合&#xff0c;通过多能互补和梯级利用&#xff0c;在不同时空取长补短&#xff0c;提高能源利用率&#xff0c;减少温室气体排放&#xff0c;是解决能源短缺和环境问题的有效…...

准确-K8s系列文章-修改containerd 默认数据目录

修改 Kubernetes 集群中 containerd 默认数据目录为 /data/containerd 前言 本文档适用于 Kubernetes 1.24 及以上版本的集群&#xff0c;介绍如何将 containerd 默认的数据目录从 /var/lib/containerd 修改为 /data/containerd。 步骤 1. 停止 containerd 服务&#xff08…...

深入探索Linux命令:`aulastlog`

深入探索Linux命令&#xff1a;aulastlog 在Linux系统中&#xff0c;安全管理一直是管理员和用户关注的焦点。aulastlog是一个非常有用的工具&#xff0c;用于显示用户最近登录的日志。它通过分析/var/log/lastlog文件来提供这些信息&#xff0c;这个文件记录了系统上所有用户…...

Debezium日常分享系列之:Debezium 2.6.2.Final发布

Debezium日常分享系列之&#xff1a;Debezium 2.6.2.Final发布 一、新功能和改进1.Oracle 数据库查询过滤超过 1000 个表 二、修复和稳定性改进1.PostgreSQL 偏移刷新竞争条件2.Avro 兼容性 一、新功能和改进 1.Oracle 数据库查询过滤超过 1000 个表 Debezium Oracle 连接器允…...

PHP质量工具系列之phpmd

PHPMD PHP Mess Detector 它是PHP Depend的一个衍生项目&#xff0c;用于测量的原始指标。 PHPMD所做的是&#xff0c;扫描项目中可能出现的问题如&#xff1a; 可能的bug次优码过于复杂的表达式未使用的参数、方法、属性 PHPMD是一个成熟的项目&#xff0c;它提供了一组不同的…...

【java】速度搭建一个springboot项目

使用软件&#xff1a;IDEA&#xff0c;mysql 使用框架&#xff1a;springboot mybatis-plus druid 坑点 使用IDEA搭建一个springboot项目的时候&#xff0c;需要考虑一下IDEA版本支持的JDK版本以及maven版本。否则再构建项目&#xff0c;引入pom的时候就会报错。 需要检查…...

SystemVerilog测试框架示例

这里是一个完整的SystemVerilog测试框架示例&#xff0c;包括随机化测试和详细注释。 顶层模块 (Top Module) module top;// 信号声明logic clk;logic rst_n;// 接口实例化dut_if dut_if_inst(.clk(clk), .rst_n(rst_n));// DUT实例化 (假设DUT模块名为dut)dut u_dut(.clk(du…...

每天一个数据分析题(三百五十六)-图表决策树

图表决策树中将图表分成四类&#xff0c;分别是&#xff1f; A. 比较类 B. 序列类 C. 构成类 D. 描述类 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案...

Prism 入门06,发布订阅(入门完结)

本章节介绍使用 Prism 框架的消息聚合器 IEventAggregator ,实现如何进行消息发布,订阅,取消订阅的功能 继续使用上一章节使用的 Prism WPF 空模板项目 BlankApp1 1.首先,在使用 Prism 框架当中,进行事件消息的发布和订阅之前,需要定义发布事件的事件消息模型。如下所示:…...

2. pytorch环境安装

概述 ​ 本文提供基于Anaconda环境Windows11操作系统的Pytorch深度学习环境的配置。深度学习环境分为GPU和CPU两大部分。使用GPU进行环境配置&#xff0c;需要保证电脑配有独立显卡&#xff0c;并且显卡驱动安装正常&#xff0c;详情见前文。 1. 创建新的虚拟环境用来配置Pyt…...

力扣爆刷第148天之贪心算法五连刷(区间合并)

力扣爆刷第148天之贪心算法五连刷&#xff08;区间合并&#xff09; 文章目录 力扣爆刷第148天之贪心算法五连刷&#xff08;区间合并&#xff09;一、406. 根据身高重建队列二、452. 用最少数量的箭引爆气球三、435. 无重叠区间四、763. 划分字母区间五、56. 合并区间六、738.…...

JSON及Python操作JSON相关

JSON及Python操作JSON相关 Json简介及Python操作Json相关示例。 1. JSON概念及支持的数据类型 1.1 什么是 JSON&#xff1f; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解…...

[ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月8日14点23分 &#x1f004;️文章质量&#xff1a;94分 前言—— 在现代通信网络中&#xff0c;传输介质是数据传…...

Android 高德地图API(新版)

新版高德地图 前言正文一、创建应用① 获取PackageName② 获取调试版安全码SHA1③ 获取发布版安全码SHA1 二、配置项目① 导入SDK② 配置AndroidManifest.xml 三、获取当前定位信息① ViewBinding使用和导包② 隐私合规设置③ 权限请求④ 初始化定位⑤ 获取定位信息 四、显示地…...

数智驱动 人才筑基——拔尖创新人才与卓越工程师培养论坛举行

3月22日&#xff0c;第二届高等院校新工科人才培养暨产教融合发展大会在北京举行。大会以“科技创新 智造未来”为主题&#xff0c;来自全国各地的本科院校、职业院校、行业企业以及媒体等1000余位嘉宾参会。22日下午&#xff0c;数智驱动 人才筑基——拔尖创新人才与卓越工程师…...

为什么92%的候选人栽在FastAPI流式响应题上?——基于137份大厂AI后端面试记录的深度复盘

第一章&#xff1a;FastAPI 2.0流式响应的核心机制与演进脉络FastAPI 2.0 对流式响应&#xff08;Streaming Response&#xff09;进行了底层重构&#xff0c;将原先依赖 Starlette 的 StreamingResponse 封装升级为原生异步生成器驱动模型&#xff0c;并深度整合 ASGI 3.0 规范…...

NaViL-9B图文理解入门:支持中英文混合提问的实测案例

NaViL-9B图文理解入门&#xff1a;支持中英文混合提问的实测案例 1. 认识NaViL-9B NaViL-9B是一款原生多模态大语言模型&#xff0c;由专业研究机构开发。它最大的特点是能够同时处理文字和图片信息&#xff0c;就像一个能"看图说话"的智能助手。无论是纯文字问题&…...

效果实测:nli-distilroberta-base处理长文本与跨语言推理能力

效果实测&#xff1a;nli-distilroberta-base处理长文本与跨语言推理能力 1. 模型核心能力概览 nli-distilroberta-base作为轻量级自然语言推理模型&#xff0c;在文本理解任务中展现出独特优势。这个基于RoBERTa架构的蒸馏版本&#xff0c;保留了原模型90%以上的性能&#x…...

用TurtleBot3实测:Navigation2局部代价地图的滚动窗口为何必须用odom坐标系?

TurtleBot3实测&#xff1a;为什么Navigation2局部代价地图必须绑定odom坐标系&#xff1f; 当你在Gazebo中第一次看到TurtleBot3的导航表现时&#xff0c;可能会对局部代价地图&#xff08;Local Costmap&#xff09;的坐标系选择产生疑问。为什么这个实时更新的避障地图要绑定…...

Nacos集群启动时,那个神秘的cluster.conf文件到底是怎么被找到和监控的?

Nacos集群启动时cluster.conf文件的寻址与监控机制深度解析 从一次集群配置失效事件说起 上周深夜&#xff0c;我们的分布式系统监控平台突然发出警报——Nacos集群中的三个节点相继失联。紧急排查时发现&#xff0c;明明已经更新了cluster.conf文件新增了两个节点&#xff0c;…...

springboot交通道路监测感知与车路协同系统可视化大屏

目录技术架构设计数据采集与处理可视化大屏功能模块系统集成与部署关键技术点测试与迭代项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术架构设计 采用SpringBoot作为后端框架&#xff0c;提供RESTful API接口&#xff1b;…...

植物大战僵尸修改工具实战指南:从入门到精通

植物大战僵尸修改工具实战指南&#xff1a;从入门到精通 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 认知阶段&#xff1a;工具核心价值与基础架构 工具定位与适用场景 植物大战僵尸修改工具是…...

3分钟掌握Umi-OCR插件:打造你的专属文字识别工具箱

3分钟掌握Umi-OCR插件&#xff1a;打造你的专属文字识别工具箱 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins 还在为不同场景下的文字识别需求而烦恼吗&#xff1f;Umi-OCR插件库为你提供了完美的解决…...

3个核心价值:bilibili-api的API开发与数据接口应用

3个核心价值&#xff1a;bilibili-api的API开发与数据接口应用 【免费下载链接】bilibili-api B站API收集整理及开发&#xff0c;不再维护 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-api 作为开发者&#xff0c;我们经常需要获取B站丰富的视频、用户及互动…...