obj = audiorecorder( 44100, 16, 1);
%创建一个保存音频信息的对象,它包含采样率、时间、录制的音频信息等
%44100是采样率,单位Hz
%16为用16bits存储
%1是单声道,2是两通道立体声
record(obj)%开始录音
pause(5)%录音5秒
stop(obj);%结束录音
myvioce = getaudiodata(obj)
%得到以n*2数字矩阵存储的刚录制的音频信号
axes(handle s.axes1)%在axes1中绘制
plot(myvioce)%绘制声音波形
audio write('myvioce.wav', myvioce, 44100)%将音频写入文件
利用matlab的音频信号处理工具箱,可以实现声音的录制和播放。录音函数wavrecord语法为:
y=wavrecord(n,fs,channel,dataType)
其中
n为采样点数,fs为采样频率,channel(通常取1或者2)为录音通道数,dataType(例如double,single,int16,uint8)是采样点的数据类型。
例子:
fs=16000 %取样频率
duration=2%录音时间
fprintf('Press any key to start %g seconds of recording...\n',duration)
pause
fprintf('Recording...\n')
y=wavrecord(duration*fs,fs)%duration*fs 是总的采样点数
fprintf('Finished recording.\n')
fprintf('Press any key to play the recording...\n')
pause
wavplay(y,fs)
将上述代码保存为record01.m文件,在matlab命令行下输入刚才保存的文件名即可。
运行结果如下图:
就是在gui对应的M文件里使用wav文件读取语句:wavread('*.wav') *代表不同的文件名,同时读入的文件必须在当前的路径里。
如果需要得要各个参数,可是设置输出量:
[y,freq,bit]=wavread('*.wav')
至于FFT的分析,将wav文件读入后,用FFT函数进行分析。下面的代码是一个实例,希望对你有所帮助。
用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱
fs=8000 %语音信号采样频率为8000
x1=wavread('pb8k.wav')
t=(0:length(x1)-1)/8000
y1=fft(x1,2048) %对信号做2048点FFT变换
f=fs*(0:1023)/2048
figure(1)
plot(t,x1) %做原始语音信号的时域图形
grid onaxis tight
title('原始语音信号')
xlabel('time(s)')
ylabel('幅度')
figure(2)
plot(f,abs(y1(1:1024))) %做原始语音信号的FFT频谱图
grid onaxis tight
title('原始语音信号FFT频谱')
xlabel('Hz')
ylabel('幅度')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)