MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf
《語音信號處理》仿真作業
院 系 電氣與電子工程學院
專業班級
姓 名
學 號
指導教師
2020 年 3 月
作業題目:語音采集與讀寫
一、目的
(1)了解matlab 采集語音信號的原理與采用命令;
(2 )掌握基于matlab 的語音文件的創建、讀寫等操作。
二、要求
(1 )利用 matlab 程序實現錄音語音信號“你好,武漢歡迎你”,并保存為
wuhan.wav 文件。
(2 )使用waveread 函數讀取wuhan.wav 文件,并使用plot 函數顯示出來。要求:
橫縱坐標帶有標注,橫軸的單位為秒(s),縱軸顯示歸一化后的數值。
三、具體步驟 (包含原理、具體實現、結果對比等)
1、基本原理
利用matlab 的語音工具箱進行錄音,用電腦聲卡進行聲音捕獲。
利用matlab 打開錄音的wav 文件,對錄音進行分析和歸一化,并生成語譜圖。
2 、具體實現 (步驟、代碼)
第一步,用matlab 軟件實現錄音,并存儲為wav 文件,同時繪制語音數據波形,
代碼如下:
recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 5);%設置錄音時間
disp('End of Recording.');% 回放錄音數據
play(recObj);% 獲取錄音數據
myRecording = getaudiodata(recObj);% 繪制錄音數據波形
plot(myRecording);%存儲語音信號
filename = ' G:\Desktop\專業學習教程\語音信號處理\wuhan.wav';
audiowrite(filename,myRecording,12000);
第二步,讀取wav 文件并生成語譜圖,代碼如下:
clear all;
[x,sr]=audioread(' G:\Desktop\ 專 業 學 習 教 程 \ 語 音 信 號 處 理
\wuhan.wav'); %#ok %sr 為采樣頻率
if (size(x,1)>size(x,2))
x=x';
end
s=length(x);
w=round(44*sr/1000); % 窗長,取離44*sr/100 最近的整數
n=w; %fft 的點數
ov=w/2; %50% 的重疊
h=w-ov;
% win=hanning(n)'; %哈寧窗
win=hamming(n)'; %漢明窗
c=1;
ncols=1+fix((s-n)/h); %fix 函數是將(s-n)/h 的小數舎去
d=zeros((1+n/2),ncols);
for b=0:h:(s-n)
u=win.*x((b+1):(b+n));
t=fft(u);
d(:,c)=t(1:(1+n/2))';
c=c+1;
end
tt=[0:h:(s-n)]/sr;
ff=[0:(n/2)]*sr/n;
imagesc(tt/1000,ff/1000,20*log10(abs(d)));
colormap(gray);
axis xy
xlabel('時間/s');
ylabel('頻率/kHz');
3、實驗結果說明
語音數據波形 語譜圖
四、總結
這次做了一些準備工作所以比較順利,在語譜圖的繪制過程中曾經忘了添加
先前wav 錄音文件的具體位置導致編譯失敗,在matlab 報錯后可以仔細看看彈
出的關于相關語句的解析,十分有助于更改錯誤并提高對語句的熟練程度。
總結
以上是生活随笔為你收集整理的MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle创建表空间及用户,Oracl
- 下一篇: oracle导出导入emp,oracle