在我之前的項目中,我展示了如何使用Arduino開發(fā)板和BitVoicer服務(wù)器控制幾個LED 。在這個項目中,我將使事情變得更加復(fù)雜。我還將使用Arduino DUE數(shù)模轉(zhuǎn)換器(DAC)合成語音。如果您沒有Arduino DUE,則可以使用其他Arduino板,但是您將需要一個外部DAC和一些其他代碼來操作DAC(BVSSpeaker庫將無法幫助您)。
在下面的視頻中,您可以看到我還讓Arduino播放了一首歌曲,并使LED閃爍,就像它們是鋼琴鍵一樣。對不起,我的鋼琴技巧,但這是我能做到的最好的:)。LED實際上以與真實C,D和E鍵相同的順序和時序閃爍,因此,如果您周圍有鋼琴,則可以跟隨LED并播放同一首歌曲。這是一個不再存在的老零售商(Mappin)的叮當(dāng)聲。
將執(zhí)行以下過程將語音命令轉(zhuǎn)換為LED活動和合成語音:
1. Sparkfun Electret Breakout板將捕獲并放大音頻波;
2.放大后的信號將通過Arduino的模數(shù)轉(zhuǎn)換器(ADC)進行數(shù)字化和緩沖;
3.音頻樣本將使用Arduino串行端口傳輸?shù)紹itVoicer服務(wù)器;
4. BitVoicer服務(wù)器將處理音頻流并識別其包含的語音;
5.識別的語音將映射到預(yù)定義的命令,這些命令將發(fā)送回Arduino。如果其中一個命令用于合成語音,則BitVoicer Server將準備音頻流并將其發(fā)送到Arduino;
6. Arduino將識別命令并執(zhí)行適當(dāng)?shù)牟僮?。如果接收到音頻流,它將被排隊到BVSSpeaker類中,并使用DUE DAC和DMA播放。
7. SparkFun單聲道音頻放大器會放大DAC信號,因此可以驅(qū)動8歐姆揚聲器。
第一步是將Arduino和面包板與組件連接,如下圖所示。我必須在揚聲器下方放置一個小的橡膠墊,因為它會振動很多,而沒有橡膠墊的話,音頻質(zhì)量會受到很大影響。
在這里,與我以前的項目相比,有一個小但重要的區(qū)別。大多數(shù)Arduino板均以5V運行,但DUE以3.3V運行。因為在3.3V下運行Sparkfun駐極體突破效果更好,所以如果您使用5V Arduino板,建議您在3.3V引腳和AREF引腳之間添加一個跳線。DUE已經(jīng)使用了3.3V模擬基準,因此您不需要AREF引腳的跳線。實際上,DUE上的AREF引腳通過電阻橋連接到微控制器。要使用AREF引腳,必須從PCB上拆下電阻器BR1。