Ⅰ 怎么使用MATLAB导入语音,如果是用MP3录音过的WAV文件又怎么导入
1)用录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址)。
2)使用如下程序,做波形显示以及fft变换。
[y,Fs,bits]=wavread('cricket.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;
figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');
t=(0:sigLength-1)/Fs;
figure;plot(t,y);xlabel('Time(s)');
3)频率看频谱就有了,声音间隔看声音波形,周期看声音波形。
4)关于去噪声。
a)如果噪声是特定频率的周期噪声(periodic noise),比如说50hz,那么你可以用matlab的filter,作一个低通、高通、带通或者带阻滤波。
b)如果声音是高斯白噪声。那就用自适应滤波(adaptive filter,wiener filter)。这里涉及到对噪声的采样、计算特征值以及决定阶数的问题。
c)幸好我们可以“耍赖”——用cool editor。用它打开wav文件,用鼠标把一段噪声圈起来,采样,然后直接选择去噪就可以了。各大网站有介绍。
Ⅱ MATLAB 怎么生成wav文件
1、用CooEdit录制声音,可以选择采样率为96kHz,单声道。录制声音长度约为10s,然后存储文件为Windows PCM wav文件格式。文件名最好包括进入测试条件。测试多组数据,将其保存在同一个文件夹中,便于matlab后期的批处理。2、使用matlab读取一个文件夹里的所有wav文件。在下面的操作中,把sqrt0目录下的所有wav文件名读取到fnames中了。dirs=dir('sqrt0/*.wav'); % 读取当前目录下所有的excel文件dircell=struct2cell(dirs)' ; % 结构体(struct)转换成元胞类型(cell),转置一下是让文件名按列排列。fnames=dircell(:,1); % 第一A列是文件名3、通过wavread函数读取wav文件数据,并将其存储在Ydata和Fdata中。fnumber=size(fnames,1); % 求取表格行数,即文件个数for N=1:1:fnumber filename=char(fnames(N,1)); % 将cell转换为string filename=strcat(path,filename); % 校正文件路径 [Y,Fs]=wavread(filename,Num); % 读取当前文件前65536个点 Ydata(N,:) = Y; % 记录数据 Fdata(N,:) = Fs; % 记录采样率end4、对数据做FFT运算,并绘制其频谱图。for N=1:1:fnumber yy = fft(Ydata(N,:),Num); % 对数据做Num点FFT运算 Yfft(N,:) = 20*log10(abs(yy)); % 对计算结果取模 figure; ff = linspace(0,Fdata(N),Num); % 在0-采样率之间取Num个频率点 plot(ff,Yfft(N,:),'r'); % 绘制频谱 grid on; axis([400 3000 -20 70]);end5、调整修饰绘图,并存储。下面是用到的一些命令。 set(gcf,'Position',[200 200 350 250]); % 设置绘图的大小 tt = strcat(Freq(N,:),',',Sqrt(N,:),',',Modindex(N,:));title(tt); % 设置绘图标题 legend('m=1.0'); xlabel('Frequency(Hz)','FontSize',14,'FontName','Times New Roman');% 设置x坐标轴标注字体 ylabel('Amplitude(dB)','FontSize',14,'FontName','Times New Roman'); Note = strcat('m=',Modindex(N,:)); text(1800,55,Note,'FontSize',14); % 在400,300位置添加标注 set(gca,'FontSize',12); % 设置坐标轴字体 set(gcf,'visible','off'); % 不显示图片 tt = strcat(Freq(N,:),'_',Sqrt(N,:),'_',Modindex(N,:),'.emf'); saveas(gcf,tt,'emf'); % 存储绘图为eps格式6、将生成的图片,导入到excel中。因为excel不能识别eps图片,所以生成emf图片。两种格式都是矢量图,放大缩小不会失真。可以调出excel工具栏的图片工具,第一个工具即为插入快捷键。这样会更方便快捷。
Ⅲ 如何在matlab中读入一个wav声音文件
在matlab中,可以用wavread函数来打开wav格式的声音文件。wavread函数的用法如下: 1、y = wavread(filename)% 输入参数filename为指定载入的音频文件名称,为单引号引出的字符串形式。返回参数y% % 为所读取的音频数据样本。当文件无扩展名时,系统自动附加扩展名.wav。 2、[y, Fs, nbits] = wavread(filename)% 参数filename、y的定义同上,Fs为采样频率,nbits为文件中每个样本的字节数。 3、[...] = wavread(filename, N)% 参数N为文件每个通道的前N个样本。 4、[...] = wavread(filename,[N1 N2])% 参数N1、N2为文件每个通道从N1到N2的样本。举例说明如下:[y,fs,nbits]= wavread('d:\shuisound.wav'); sound(x,fs,bits); % 播放声音% y就是音频信号; % fs是采样频率,比如说16000就是每秒16000次; % nbit是采样精度,比如说16就是指16位精度的采样。
Ⅳ Matlab如何读取wav文件,为什么wavread不行
waveread函数只支持脉冲编码调制(PCM)数据格式,所以一般的wav格式matlab是不认的,所以需要用一些格式转换软件,自定义一下输出格式,改为PCM输出即可。然后就是wavread的文件路径必须是完整路径。
Ⅳ 怎样用matlab分割音频文件(wav)或其他
用matlab根据lrc文件切割音频,适用于wav音频(一句歌词一个音频一个lrc)代码如下:
%clearclc;clearall;%用ImportData导入lrc文件,设置‘[’,']',':'为分隔符,出现三个矩阵,分别改名为minuate、second、lyric[y,fs]=audioread('JohnLennon-OhMyLove.wav');%根据歌曲名修改fori=6:36%根据歌词导出矩阵小修min_start=minuate((i-1),1);min_end=minuate(i,1);sec_start=second((i-1),1);sec_end=second(i,1);time_start=min_start*60+sec_start;time_end=min_end*60+sec_end;Y2=y(((fs*time_start+1):fs*time_end),:);%根据lrc的时间剪切音频Filename=sprintf('song%d.wav',i);%为音频命名audiowrite(Filename,Y2,fs);%写出音频lrc_name=sprintf('song%d.lrc',i);%对应音频,为lrc命名fic=fopen(lrc_name,'a+');%对应音频,创建lrcfprintf(fic,'[00:00.00]')fprintf(fic,'%s',lyric{i-1,1})%写入带时间轴歌词fclose(fic)%关闭lrcend
Ⅵ 如何在matlab界面读入音频文件
[x fs nbits] = wavread('filename.wav');用这个指令就能读入文件。如果播放上面读入的文件的话,用soundsc(x,fs);
