Ⅰ 怎麼使用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; % 記錄采樣率
end
4、對數據做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]);
end
5、調整修飾繪圖,並存儲。下面是用到的一些命令。
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)代碼如下:
%clear
clc;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+');%對應音頻,創建lrc
fprintf(fic,'[00:00.00]')
fprintf(fic,'%s',lyric{i-1,1})%寫入帶時間軸歌詞
fclose(fic)%關閉lrc
end
Ⅵ 如何在matlab界面讀入音頻文件
[x fs nbits] = wavread('filename.wav');
用這個指令就能讀入文件。
如果播放上面讀入的文件的話,用soundsc(x,fs);