我正在开发一个应用程序,实时从麦克风获取源音频,没有文件存储.基本上,我使用:

mRecorder = new MediaRecorder();

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

mRecorder.setOutputFile("/dev/null");

我的问题是,如何从这个实时音频中创建频谱图形,没有文件.可以办到?

我读到的所有帖子都在分析缓冲文件.

谢谢你,对不起我的英语.

解决方法:

是的,它可以做到.

您只需要一个快速的FFT算法!

首先确定你想要的频率分辨率,例如你可以设置麦克风的采样率为8000hz,现在选择一个像1024或2048这样的块大小来从麦克风中捕获.

如果您选择2048点和采样率8000,您的频率分辨率是否为3.9063(8000/2048).

在2048点上应用一个窗口函数,然后应用FFT并获得幅度!

记得Nyquist定理采样率= 8000/2 = 4000,现在你知道你的FFT可以在4000 Hz时获得3.9063 Hz之间的频率.

相应频率的FFT Bin:

1 -> 3,90625 hz

2 -> 7,8125 hz

3 -> 11,71875 hz

...

1024 -> 4000 hz

...

2048 - > 8000 hz

对于它,您只需要FFT的前半部分值,在这种情况下为1024.

现在,如果您从FFT绘制这些数据,您将拥有一个频谱!

编辑

伪代码:

#construct one hanning window Function

Chunk = 2048;

windowed = [Chunk];

hanning = [Chunk];

for i 1:Chunk:

hanning[i] = ((1 - cos(i*2*pi/Chunk-1))/2)

#start capture from Mic

while true:

#into values capture 2048 points from your mic

values=dataFromMic(Chunk);

#Apply Window hanning = multiply window function(hanning) over your 2048 points

for i 1:Chunk:

windowed[i] = values[i] * hanning[i]

#Apply FFT

fftData=fft(windowed);

#Get Magnitude (linear scale) of first half values

Mag=abs(fftData(1:Chunk/2))

# update/show results

plot(Mag)

end

标签:android,audio,spectrum

来源: https://codeday.me/bug/20191004/1851565.html

android 自定义频谱,android – 如何从实时音频开发频谱分析仪?相关推荐

  1. Android自定义View,Android炫酷的音乐频谱进度条,变化自如的音乐进度条

    前段时间,公司项目有个UI需求,要做一个这么的东西 : 一个仿音乐频率谱线进度条(这是什么鬼?),那好,就先将这个控件命名为:音乐频谱进度条:) 废话不多说,先来看一下效果图: 附上在GitHub上的 ...

  2. android 自定义相机,Android自定义相机Camera基础

    创建自定义相机界面调用Camera来实现拍照功能.如左图:上方是一个CAPTURE按钮,下方是用来实时显示摄像头预览画面的SurfaceView,通过点击CAPTURE按钮进行拍照,并将拍摄的图片显示 ...

  3. android 自定义loading,Android自定义动画-StarLoadingView

    今天来分享第二个自定义loading的动画,起了个名字叫 蹦跶的星星 ,还是老规矩先介绍,后上图. 实现效果在最后,GIF有点大,手机流量慎重. 介绍 首先声明做这个动画的初衷是为了学习和分享,所以从 ...

  4. android 自定义命名空间,Android自定义ActionBar实例

    本文实例讲述了android自定义actionbar的实现方法.分享给大家供大家参考.具体实现方法如下: android 3.0及以上已经有了actionbar的api,可以通过引入support p ...

  5. android 自定义图形,Android自定义View之图形图像(模仿360的刷新球自定

    概述: 360安全卫士的那个刷新球(姑且叫它刷新球,因为真的不知道叫什么好,不是dota里的刷新球!!),里面像住了水一样,生动可爱,看似简单,写起来不太简单,本例程只是实现了它的部分功能而已,说实话 ...

  6. android 自定义event,Android运用onTouchEvent自定义滑动布局

    写在自定义之前 我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件. 1.boolean onTouch(View v, Motio ...

  7. Android 自定义 圆环,Android自定义view实现圆环效果实例代码

    先上效果图,如果大家感觉不错,请参考实现代码. 重要的是如何实现自定义的view效果 (1)创建类,继承view,重写onDraw和onMesure方法 public class CirclePerc ...

  8. android自定义抽奖,Android自定义view制作抽奖转盘

    本文实例为大家分享了Android自定义view制作抽奖转盘的具体代码,供大家参考,具体内容如下 效果图 TurntableActivity package com.bawei.myapplicati ...

  9. android 自定义banner,Android项目 引入Banner开源库(轮播图)

    Banner开源库是什么? Banner 是 Android广告图片轮播控件,内部基于ViewPager2实现,Indicator和UI都可以自定义. 怎么使用 Banner 开源库? 1.在项目\a ...

最新文章

  1. 第十六届智能车竞赛MCU这么多,该怎么办?别慌,RT-Thread来帮忙。
  2. Opencv头文件记要~
  3. Dubbo-go 发布 1.5 版,朝云原生迈出关键一步
  4. cad2014卡顿的解决方法_升级iOS14.1后出现卡顿、闪退?这3种方法可以解决
  5. 我的博客今天6岁298天了,我领取了元老博主徽章
  6. nginx集群_windows环境下搭建简单Nginx+Tomcat集群
  7. python设置默认密码_使用Python生成随机密码的示例分享
  8. linux 中断 应用程序,Linux中断编程
  9. 任正非卸任上海华为董事;百度“云手机”今日线上发布;Inkscape 1.0 RC 版发布 | 极客头条...
  10. CentOS 7下基于bitnami的Redmine结合Subversion的设置
  11. SoundMorph Dust for Mac(双耳环绕音频颗粒合成仪)
  12. 电脑编程需要下载什么软件吗
  13. HTML5七夕情人节表白网页制作【一起跨年表白代码】HTML+CSS+JavaScript
  14. 利用OneNET实现SIM868使用HTTP协议给服务器发送数据并显示
  15. 养殖环控程序 三菱plc可以带物联网模块,7寸触摸屏程序
  16. suse账号解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁
  17. VMware安装WinXP蓝屏及激活
  18. java培训记录Day06 2022/3/19星期六(网页布局:grid)
  19. Kubernetes 的 CI/CD 管道概述
  20. 他为何放弃工程局工作,也要转行学python,还拿下17.5K的offer

热门文章

  1. 序数是什么意思_序数与基数
  2. python 数据库表结构转为类_顺序表数据结构在python中的应用
  3. rar for android最新版,RAR for Android手机版下载-RAR for Android 安卓压缩软件v5.30 安卓版下载-腾牛安卓网...
  4. ercp手术为什么那么贵_尼泊尔佛像为什么那么贵?
  5. 各种实用的 PHP 开源库推荐
  6. Nginx禁止指定目录运行PHP脚本
  7. python3.6 websocket异步高并发_Python3.6 websocket开发
  8. pandas concat_pandas合并几百个csv只需要一分钟?(含代码,拿去即可用)
  9. matplotlib库绘图基础
  10. java多线程间的通信传值_Java 多线程之间的通信