[y,fs]=wavread('E:\MATLAB6p5\work\3.wav')%读出信号,采样率。
y=y(:,1)%取单声道。
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)')%画时域波形
(2)关于滤波
声音频率主要集中在0~1KHZ,我想虑掉500hz以下的频率,因此采用一个高通滤波器
这里我使用了一个10阶butterworth高通滤波器,边带是500hz,但是这不能直接用,因为声音文件的采样率是44k,500hz相对于44k来说太小了。所以我得先把我的声音欠采样,然后再滤波。程序如下:
[k,Fs,bits]=wavread('E:\MATLAB6p5\work\3.wav')
k=k(:,1)
y_temp=k(1:90000)
dfactor=3
y=decimate(y_temp,dfactor)
[b,a] = butter(10,500/(Fs/(dfactor*2)),'high')
y=filter(b,a,y)
y=interp(y,dfactor)
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,t,y_temp)xlabel('Time(s)')%滤波后的时域波形
wavwrite(y,Fs,'3_')%保存处理后的声音文件,文件名为”3_”.
声卡采集声音信号的数据采集过程可以分为四步:
初始化。
配置。
采样。启动设备对象,开始采集数据
终止。停止对象并删除对象。
如果是想将声音信号录制到matlab里面,则可以使用以下的函数。R = audiorecorder( 44100, 16 ,2 ) 。
声卡也叫音频卡(港台称之为声效卡):声卡是多媒体技术中最基本的组成部分,是实现声波/数字信号相互转换的一种硬件。
声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,或通过音乐设备数字接口(MIDI)使乐器发出美妙的声音。
声卡发展至今,主要分为板卡式、集成式和外置式三种接口类型,以适用不同用户的需求,三种类型的产品各有优缺点。
你可以利用电脑上的录音器进行录音,设置录音器的采样频率为10kHz,时间有自己手动制,然后在matlab中用wavread函数读取,这个函数的具体用法如下,你可以用matlab的help wavread 进行查看1、 y = wavread(file)
该语句读取文件名为file的音频文件,并将音频数据存储在y中,返回给用户使用。音频数据的值域为[-1,1]
2、[y,fs,nbits] = wavread(file)
同上,file指定音频文件名,y是音频数据。另外该语句还能够返回该音频文件的采样率fs,和采样位数nbits
3、[...] = wavread(file,n)
该语句用来读取文件名为file的音频文件中的前n个数据。如果有多个通道,每个通道的数据都会被读取出来。[...]表示随用户自己定义。如果用户在这里只写一个y,该语句就只会返回音频数据,如果用户写成[y,fs,nbits],该语句就不但会返回音频数据y,还会返回采样率fs,和采样位数nbits
4、[...]=wavread(file,[n1,n2])
该语句用来读取文件名为file的音频文件中的第n1个到第n2个之间的数据。
5、siz = wavread(file,'size')
该语句返回文件名为file的音频文件的数据大小 siz = [samples channels]
6、[y,fs,nbits,opts]=wavread(...)
该语句返回的参数opts包含了音频文件的额外信息。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)