隨著數位化技術推進,電子數位應用產品為人類生活帶來極佳的便利性與樂趣。越來越多的數位產品,因應高齡使用者與弱勢族權,語音提示顯示內容的需求越來越迫切。因此,語音模組已成為產業的關注焦點,全球相關廠商也投注資源開發語音模組之新技術、新應用,並為提升人類便利使用而努力。
由於許多電子線路必須將內部的狀態資訊,透過音效、語音等方式,發聲音到外部使用者,最常見的發聲音的簡單方式是使用簡單的揚聲器;進階的是使用更高階的語音處理晶片來產生語音、音效。
本系列是「物聯網系列」系列電腦音效子系列第二篇:讓電腦發出音效(簡單揚聲器篇),主要告訴讀者,電腦發出聲音的基本原理,往後筆者可以一一介紹如何產生音效、語音等技術。
揚聲器
由於許多電子線路必須將內部的狀態資訊,透過音效、語音等方式,發聲音到外部使用者,最常見的發聲音的簡單方式是使用簡單的揚聲器。
幸運的是,使用 Arduino 開發板,使用一個 Digital Pin(數位接腳),連接到到處可見的揚聲器裝置(喇叭),就可以透過 Arduino 開發板發出簡單,可辨識的音樂、特效、語音等,而且非常方便。
Tone 函式
使用 Arduino 開發板,使用一個 Digital Pin (數位接腳)連接喇叭,如本例子是接在數位接腳 13( Digital Pin 13 ),讀者也可將喇叭接在您想要的腳位,只要將下列程式作對應修改,可以產生想要的音調。
我們將下表程式,請讀者鍵入 Sketch IDE 軟體(軟體下載),編譯完成後上傳到開發版進行測試。
範例程式:在這裡
揚聲器程式下載網址
讀者可以由下表所示,可以了解使用 Tone 函數時,發出哪一種聲音,就必須輸入哪種參數。
表 1- Tone 頻率表
常態變數 | 頻率(Frequency [Hz]) |
NOTE_B2 | 123 |
NOTE_C3 | 131 |
NOTE_CS3 | 139 |
NOTE_D3 | 147 |
NOTE_DS3 | 156 |
NOTE_E3 | 165 |
NOTE_F3 | 175 |
NOTE_FS3 | 185 |
NOTE_G3 | 196 |
NOTE_GS3 | 208 |
NOTE_A3 | 220 |
NOTE_AS3 | 233 |
NOTE_B3 | 247 |
NOTE_C4 | 262 |
NOTE_CS4 | 277 |
NOTE_D4 | 294 |
NOTE_DS4 | 311 |
NOTE_E4 | 330 |
NOTE_F4 | 349 |
NOTE_FS4 | 370 |
NOTE_G4 | 392 |
NOTE_GS4 | 415 |
NOTE_A4 | 440 |
NOTE_AS4 | 466 |
NOTE_B4 | 494 |
NOTE_C5 | 523 |
NOTE_CS5 | 554 |
NOTE_D5 | 587 |
NOTE_DS5 | 622 |
NOTE_E5 | 659 |
NOTE_F5 | 698 |
NOTE_FS5 | 740 |
NOTE_G5 | 784 |
NOTE_GS5 | 831 |
NOTE_A5 | 880 |
NOTE_AS5 | 932 |
NOTE_B5 | 988 |
NOTE_C6 | 1047 |
NOTE_CS6 | 1109 |
NOTE_D6 | 1175 |
NOTE_DS6 | 1245 |
NOTE_E6 | 1319 |
NOTE_F6 | 1397 |
NOTE_FS6 | 1480 |
NOTE_G6 | 1568 |
NOTE_GS6 | 1661 |
NOTE_A6 | 1760 |
NOTE_AS6 | 1865 |
NOTE_B6 | 1976 |
NOTE_C7 | 2093 |
NOTE_CS7 | 2217 |
NOTE_D7 | 2349 |
NOTE_DS7 | 2489 |
NOTE_E7 | 2637 |
NOTE_F7 | 2794 |
NOTE_FS7 | 2960 |
NOTE_G7 | 3136 |
NOTE_GS7 | 3322 |
NOTE_A7 | 3520 |
NOTE_AS7 | 3729 |
NOTE_B7 | 3951 |
NOTE_C8 | 4186 |
NOTE_CS8 | 4435 |
NOTE_D8 | 4699 |
NOTE_DS8 | 4978 |
讀者可以由下表所示,可以了解使用 Tone 函數時,發出哪一種聲音,就必須輸入哪種參數。
表 2 – Tone 音階頻率對照表
音階 | 常態變數 | 頻率(Frequency [Hz]) |
低音Do | NOTE_C4 | 262 |
低音Re | NOTE_D4 | 294 |
低音Mi | NOTE_E4 | 330 |
低音Fa | NOTE_F4 | 349 |
低音So | NOTE_G4 | 392 |
低音La | NOTE_A4 | 440 |
低音Si | NOTE_B4 | 494 |
中音Do | NOTE_C5 | 523 |
中音Re | NOTE_D5 | 587 |
中音Mi | NOTE_E5 | 659 |
中音Fa | NOTE_F5 | 698 |
中音So | NOTE_G5 | 784 |
中音La | NOTE_A5 | 880 |
中音Si | NOTE_B5 | 988 |
高音Do | NOTE_C6 | 1047 |
高音Re | NOTE_D6 | 1175 |
高音Mi | NOTE_E6 | 1319 |
高音Fa | NOTE_F6 | 1397 |
高音So | NOTE_G6 | 1568 |
高音La | NOTE_A6 | 1760 |
高音Si | NOTE_B6 | 1976 |
高高音Do | NOTE_C7 | 2093 |
讀者可以由下圖所示,可以使用 Tone 函數,其硬體如何組立,為了方便,通常會加入一個降壓電阻。
讀者可以由下圖所示,可以了解硬體組立之電路圖。
如果要使用 Arduino 開發板發出一個完整的音樂,同樣使用一個 Digital Pin (數位接腳)連接喇叭,下列程式就可以產收馬力歐( Mario )的音樂的音調。
Mario音樂範例
本實驗除了一塊 Arduino 開發板與 USB 下載線外,我們加入小喇叭(如下圖.(c)所示)。
如下圖所示,這個實驗我們需要用到的實驗硬體有下圖 .(a) 的 Arduino Mega 2560、下圖 .(b) USB 下載線、下圖 .(c) 小喇叭。
我們遵照前幾章所述,將 Arduino 開發板的驅動程式安裝好之後,遵照下圖之電路圖進行組裝。
我們將下表程式,請讀者鍵入 Sketch IDE 軟體,編譯完成後上傳到開發版進行測試。
我們發現 Arduino 開發板已經可以驅動小喇叭讓它發出歐揖、歐揖的聲音。
表 3 讓 Arduino 發出聲音程式
讀者也可以在筆者 YouTube 頻道中,看到本次實驗:讓Arduino發出聲音執行情形。
當然、如下圖所示,我們可以看到組立好的實驗圖,Arduino 開發板可以發出聲音。
讓Arduino發出簡單音樂
前面筆者已經讓 Arduino 開發板發出聲音,但如果我們要讓 Arduino 開發板發出簡單音樂,我們必需加入新的指令:tone(),對於這個指令不熟的讀者,可以參考 Google Books 、Google Play 或 Pubu 電子書城等筆者相關作品。
本實驗除了一塊Arduino 開發板與USB下載線之外,我們加入小喇叭(如圖 6.(c) 所示)。
如圖 3所示,這個實驗我們需要用到的實驗硬體有圖 6.(a) 的 Arduino Mega 2560、圖 6.(b) USB 下載線、圖 6.(c) 小喇叭。
我們遵照前幾章所述,將 Arduino 開發板的驅動程式安裝好之後,遵照圖 7 之電路圖進行組裝。
我們將下表程式,請讀者鍵入 Sketch IDE 軟體,編譯完成後上傳到開發版進行測試。
我們發現 Arduino 開發板,已經可以驅動小喇叭,讓它發出瑪琍歐的簡單音樂。
表 4讓 Arduino 發出簡單音樂程式
表 5讓 Arduino 發出簡單音樂程式之 h 檔
讀者也可以在筆者 YouTube 頻道中,在網址,看到本次實驗:讓 Arduino 發出瑪琍歐的簡單音樂執行情形。
當然、如下圖所示,我們可以看到組立好的實驗圖,Arduino開發板可以發出馬力歐的簡單音樂。
本文為「物聯網系列」系列電腦語音子系列第二篇:讓電腦發出音效(簡單揚聲器篇),主要是介紹物聯網產品開發時,如何不透過音效模組或語音模組十,卻要發出音效、音樂的功能,我們可以利用簡單、常見揚聲器來當發聲的媒介。
本篇是作者開啟物聯網系列的一個子系列:電腦語音,主要是透過本專欄的介紹,讓讀者可以了解物聯網( Internet of Thing:IOT )更多相關的使用、開發、設計中,如何產生音效、音樂、甚至語音等技術,期望在往後專欄之中,可以實作出更多物聯網的產品或實驗,
後續筆者還會繼續發表「物聯網系列」系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網產品開發相關技術。
敬請期待更多的文章。