在安卓设备上绘制音频文件的频谱图

4

我正在开发一款Android应用程序,在其中需要创建一个声谱图的图形(这是声音频率谱随时间变化的视觉表示)。我有一个音频文件,并使用FFT将信号转换到频域,现在我需要绘制声谱图。我需要一个API来帮助我绘制类似Matlab中的图表。有什么建议吗?


2
你只是想要关于图表的帮助吗?将声音文件分解为PCM样本?对这些样本执行FFT变换以便可以绘制图形?你尝试过什么? - selbie
是的,我只需要关于绘制图表的帮助,我已经完成了将声音记录到.pcm文件并使用FFT的其余部分。现在我只想要绘制频谱图的帮助。 - sandra
快速搜索结果显示jzy3d,看起来它可能有你需要的东西。 - SleuthEye
2个回答

2
在您的布局中声明一个空的<View>元素,大小和适合您想要显示的内容。给它一个id为myview
实现一个继承自View的自定义类,并重写onDraw(Canvas canvas)方法。让我们把这个类叫做MyView。添加任何方法到这个类,以便它可以传递数据(即FFT的结果)。
在您的Activity的onCreate方法中,调用findViewById(R.id.myview).setContentView(new MyView()); 实现MyView.onDraw()方法,使其在画布上绘制您的数据可视化。如果数据发生变化,请调用您的视图类的invalidate方法强制重新绘制。
至于要绘制什么,那就由您决定。我想象每个频率带都有一堆矩形或线条。一种颜色用于“真实”,另一种用于“虚构”。

你确定在Android中没有可用于绘制频谱图的API吗? - sandra
我不知道核心Android SDK库中是否有绘制频谱图的功能。这将是一个非常专业化的类库,而该SDK旨在成为所有应用程序的平台。如果您不想自己渲染,可以考虑寻找第三方库。 - selbie

0
如果你正在寻找一款可以帮助你绘制声谱图的安卓库,前提是你已经得到音频信号的快速傅里叶变换(FFT)数据点,那么你应该考虑以下几个库:

MPAndroidChart

AChartEngine

EazeGraph


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接