作為一個實用項目,我們接下來將會對自己的語音訊號進行處理。對!這就是我們將要與Arduino相結合的地方。
在本項目中,我選擇了帶有MAX9812L放大器和駐極體麥克風的模組。該模組具有以下三個端子:
我們不打算使用Arduino IDE串列監視器,而是直接在Matlab中讀取感測器值。
Arduino 代碼:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (3.3 / 1023.0);
Serial.println(voltage);
}
我們還將使用Matlab來進行處理。為了處理語音訊號,我們將創建一個圖形化使用者介面。該圖形化使用者介面中有兩個按鈕:
在該程式中創建GUI非常容易,因為您可以使用拖動功能來繪製連接點。首先,在命令視窗中輸入guide。
當您點擊“Create New GUI(創建新GUI)”時,將會顯示出來一個使用者友好介面。Matlab GUI不像C#或其他語言那樣需要較高的程式設計技能。在這裡,您需要選擇要添加的塊,並對生成的代碼進行修改。
在左側功能表中包含了用於您的GUI的不同指令。對於本專案來說,需要的元素不會超過三個,因為我們只是要對語音訊號進行顯示而已。因為我們希望在記錄後可以使用資料,所以將創建一個包含錄音內容的 .csv檔,該檔可用於訊號處理。
在我的GUI中,我使用了:
該按鈕的代碼是根據按鈕的規格來構建的。整個代碼將被上傳到GitHub上供您下載。
fid = fopen(‘signal.csv’,’w’)
S=1;
s = serial(‘COM9’);
set(s,’BaudRate’,9600);
fopen(s);
fprintf(s,’%s’,’S’);
如果您已經完成了這一步,那麼恭喜您!到此為止,我們的數位訊號處理系列教程已經結束了。我們介紹了有關訊號處理的各種概念。這是一個非常具有挑戰性的課題,所以如果現在沒有對所有內容都瞭解得很清楚,也不要氣餒!當您覺得在某些概念的理解上出現困難時,您可以從網上大量的資源中獲取更多有關資訊。隨時歡迎您對我們的工作進行訪問和評論,並與我們分享您的成果!
附件