语音检测

最近公司给我安排了一个新任务,写一个工具可以判断mp3是否有声音
因为业务需求,统一都是mp3格式录音文件
网上找了许多,发现了sound包可以实现,也借鉴了一下大佬

java数字音频最强教程之如何检测一段音频中是否有声音

当运行发现AudioInputStream识别不了mp3格式,会报错
所以去研究了一下,添加了以下代码

     <dependency><groupId>com.googlecode.soundlibs</groupId><artifactId>mp3spi</artifactId><version>1.9.5.4</version></dependency>
     //URL url = new URL(path); url地址上的mp3文件File f = new File(path); //本地路径的mp3文件AudioInputStream audioStream = AudioSystem.getAudioInputStream(f);AudioFormat sourceFormat = audioStream.getFormat();/**    因为AudioInputStream不支持mp3格式,需要转换一下format配置*  --> AudioFormat.Encoding.PCM_SIGNED // PCM_UNSIGNED  //  PCM_FLOAT*/AudioFormat mp3tFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,sourceFormat.getSampleRate(), 16, sourceFormat.getChannels(),sourceFormat.getChannels() * 2, sourceFormat.getSampleRate(), false);AudioInputStream mp3AudioInputStream = AudioSystem.getAudioInputStream(mp3tFormat, audioStream);

接下来流程都差不多,读取流里面的数据,并根据某些算法来计算声贝这些
看了大佬的算法,也去网上找了其他的算法,都大同小异(看得懂,但是并不知道为什么要这样算)
学习中。。。

这里贴一个另外一种算法

 /*** 计算输入数据段的db值,按公式应该为20*Math.log10(当前振幅值/最大振幅值);* 位深为16bit,则代表两个字节表示一个音量采集单位;* 此处用平方和平均值进行计算;** @param data 输入pcm音频数据* @param bit  位深,8或16* @return 当前分贝值*/public int calculateVolume(byte[] data, int bit) {int[] newBuffer = null;int len = data.length;int index;//排列if (bit == 8) {newBuffer = new int[len];for (index = 0; index < len; ++index) {newBuffer[index] = data[index];}} else if (bit == 16) {newBuffer = new int[len / 2];for (index = 0; index < len / 2; ++index) {byte byteH= data[index * 2];byte byteL = data[index * 2 + 1];newBuffer[index] = bytesToShort(byteH, byteL);}}//平方和求平均值if (newBuffer != null && newBuffer.length != 0) {float avg = 0.0F;for (int i = 0; i < newBuffer.length; ++i) {avg += (float) (newBuffer[i] * newBuffer[i]);}avg /= (float) newBuffer.length;int db = (int) (10.0D * Math.log10(avg + 1));return db;} else {return 0;}}

首次发帖,请多关照!
努力学习中。。。

Java判断mp3文件是否有声音相关推荐

  1. java获取MP3文件的id3信息(包括封面图,歌词,艺术家,标题等)

    MP3结构简单介绍 有时我们会发现MP3文件在电脑上可以显示出封面图,艺术家,标题,唱片集等等信息,这是因为MP3中有ID3标签信息. MP3文件大体上分为三个部分:ID3V2+音频数据+ID3V1 ...

  2. java读取mp3文件

    JMF实际上是Java的一个类包.JMF 2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能.这些功能包括:媒体捕获.压缩.流转.回放,以及对各种主要媒体形式和编码的支 持,如M-J ...

  3. java 判断一个文件是否存在_java判断某个文件是否存在的方法

    java判断某个文件是否存在的方法 发布时间:2020-06-25 17:09:42 来源:亿速云 阅读:119 作者:Leah 这篇文章运用简单易懂的例子给大家介绍java判断某个文件是否存在的方法 ...

  4. java 读取mp3,java 解析MP3文件

    java 解析MP3文件 首先需要知道的是,MP3文件的文件信息都放在文件最后的128个字节里面,这128个字节分别存储的信息如下: char Header[3];    /* 标签头必须是" ...

  5. java mp3 信息_android,java获取MP3文件信息(作者,专辑等)

    接着上一篇文章, 上一篇把ndk开发遍历手机文件分享了一下.遍历出来的MP3文件,我需要展示在android的listview里面,想展示的好看一点,结果发现又是一个坑. 根据mp3文件,获取作者啊专 ...

  6. java mp3 信息_如何用Java读取MP3文件的Tag信息

    展开全部 以随机读写方式打开一个MP3文件 将文件指针偏移量移动到文件长度倒数128位 判断标签头"TAG"是否存在 读取62616964757a686964616fe78988e ...

  7. java获取MP3文件信息(歌手,歌名,封面,专辑,时长)

    可以用本地的文件地址测试(令url=文件地址) package com.test.inside.util;import org.jaudiotagger.audio.AudioFileIO; impo ...

  8. java判断是否文件夹_java中怎么判断是否文件夹

    java判断是否是文件夹的方法:package com.tij.io.file; import java.io.File; /** * 检查File对象是文件还是目录 * @author guoyou ...

  9. java读取mp3文件信息_用JAVA读取MP3文件的标签信息

    突然看到网上有人在用JavaScript来读取MP3中ID3信息.详细请看! 我也在网上搜索了用Flex写的实现同样的功能的.详细请看! 但是我比较熟悉Java.所以也在网上搜索到了用Java实现的读 ...

最新文章

  1. vue 项目配置sass
  2. 丹佛斯变频器模拟量速度输入_变频器与PLC是如何协同作战的?了解这几个控制方式很有必要...
  3. 【Matlab 图像】 app designer
  4. Cetos 7 系统安装备注事项
  5. Fliptile POJ - 3279 (翻转)(二进制+对第一行暴力遍历翻转的位置)
  6. Tecplot云图锯齿状边界解决办法
  7. 读取图像矩阵维度必须一致_深度学习在放射治疗中的应用——工具篇(二)矩阵基本操作...
  8. JAVA 实现FTP功能_在Java程序中实现FTP功能
  9. WGS84地球坐标系,GCJ02火星坐标系,BD09百度坐标系简介与转换
  10. 微信小程序云开发如何修改后台手动添加的数据
  11. Guided Anchoring:在线稀疏anchor生成方案,嵌入即提2AP | CVPR 2019
  12. crysis3 android,Crytek谈安卓版《孤岛危机3》:Tegra X1图形性能OK,瓶颈是CPU
  13. Android录屏技术方案
  14. java身份证号/手机号隐藏中间几位
  15. Linux Centos7 安装Tomcat9并配置环境变量
  16. JAVA简易贪吃蛇游戏实现
  17. M1芯片Mac运行RN报错building for iOS Simulator, but linking in object file built for iOS
  18. XR交互技术趋势:6DoF追踪、手势识别、眼动跟踪……
  19. Python中list和tuple的相互转换
  20. Excel开发(VBA)— 快速定位最后有记录的行

热门文章

  1. 【CodeForces】445B A Lot of Games 字典树博弈
  2. 游戏服务器做的那些事
  3. 【第四阶段 day24】Nacos配置中心
  4. Mysql B+树索引
  5. w7提示无法关闭计算机,电脑关不了机怎么办w7系统_win7电脑正常关机关不了解决方法-win7之家...
  6. 3Dslicer_Editor(2)
  7. 做短视频的必备工具和素材网,一部手机就能做,稳定收益200多
  8. 极简系列|日志模块-clog
  9. Java实现修改文件名
  10. Java交互界面实现计算器开发设计【附函数源码】,java反射原理hash