如何读取wav文件,并画成波形图

如何读取wav文件,并画成波形图,第1张

先熟悉Wave文件格式,如Wave文件头格式、声音数据格式等

然后镇闷以时间作为横坐标,采样点作为纵坐标,然后画点连线。

可以参考《Programming Windows,Fifth Edition,Charles Petzold 》第22章 声音与音乐

需要注意的是Wave文件格式有很多种吵余,可以在升旅滚网上查找相关资料。

你要画波形图这个肯定是可以的,但是JAVA没有这个波形图显示控件,你要自己开发一个显示控件。

获得显示坐标和波形图的代码呢,方法比较多,弊备以前我在.NET里做,画图塌卜枣用的那个GDI+来实现坐标和画图的。

简单的画个圆啥的就可以用那个自带的类啊,以下代码仅供参考。

java.awt

类 Graphics

Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。

Graphics 对象封装了 Java 支持的基本呈现 *** 作所需的状态信息。此状态信息包括以下属性:

要在其上绘制的 Component 对象。

呈现和剪贴坐标的转换原点。

当前剪贴区。

当前颜色。

当前字体。

当前逻辑像素 *** 作函数(XOR 或 Paint)。

当前 XOR 交替颜色(参见 setXORMode(java.awt.Color))。

坐标是无限细分的,并且位于输出设备的像素之间。绘制图形轮廓的 *** 作是通过使用像素大小的画笔遍历像素间团拆无限细分路径的 *** 作,画笔从路径上的锚点向下和向右绘制。填充图形的 *** 作是填充图形内部区域无限细分路径 *** 作。呈现水平文本的 *** 作是呈现字符字形完全位于基线坐标之上的上升部分。

%你好,该程序读mywav.wav文件,然后显示频谱以及波形。注意,mywav.wav文件不要太长,否则运算会很慢。

[y,Fs,bits]=wavread('mywav.wav')%读滚慎出信号,采样率和采样位数。

y=y(:,1)%我者段这里假首备誉设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

sigLength=length(y)

Y = fft(y,sigLength)

Pyy = Y.* conj(Y) / sigLength

halflength=floor(sigLength/2)

f=Fs*(0:halflength)/sigLength

figureplot(f,Pyy(1:halflength+1))xlabel('Frequency(Hz)')

t=(0:sigLength-1)/Fs

figureplot(t,y)xlabel('Time(s)')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12251086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存