資料介紹
描述
在我之前的項(xiàng)目中,我展示了如何使用Arduino板和BitVoicer 服務(wù)器控制幾個(gè) LED 。在這個(gè)項(xiàng)目中,我會(huì)讓事情變得更復(fù)雜一些。我還將使用Arduino DUE數(shù)模轉(zhuǎn)換器 (DAC)合成語(yǔ)音。如果您沒(méi)有 Arduino DUE,您可以使用其他 Arduino 板,但您需要一個(gè)外部 DAC 和一些額外的代碼來(lái)操作 DAC(BVSSpeaker庫(kù)不會(huì)幫助您)。
在下面的視頻中,您可以看到我還讓 Arduino 播放一首小曲并讓 LED 像鋼琴鍵一樣閃爍。對(duì)不起我的鋼琴技巧,但這是我能做的最好的:)。LED 實(shí)際上以與真正的 C、D 和 E 鍵相同的順序和時(shí)間閃爍,因此如果您周圍有鋼琴,您可以跟隨 LED 并演奏相同的歌曲。這是來(lái)自一個(gè)甚至不復(fù)存在的老零售商 (Mappin) 的叮當(dāng)聲。
將執(zhí)行以下程序?qū)⒄Z(yǔ)音命令轉(zhuǎn)換為 LED 活動(dòng)和合成語(yǔ)音:
- 1. Sparkfun Electret Breakout板將捕獲并放大音頻波;
- 3. 音頻樣本將通過(guò) Arduino 串口流式傳輸?shù)?BitVoicer Server;
- 4. BitVoicer Server 將處理音頻流并識(shí)別其中包含的語(yǔ)音;
- 5. 識(shí)別的語(yǔ)音將被映射到預(yù)定義的命令,這些命令將被發(fā)送回 Arduino。如果其中一個(gè)命令是合成語(yǔ)音,BitVoicer Server 將準(zhǔn)備音頻流并將其發(fā)送到 Arduino;
- 6. Arduino 將識(shí)別命令并執(zhí)行適當(dāng)?shù)牟僮鳌?/font>如果接收到音頻流,它將被排入BVSSpeaker類并使用 DUE DAC 和DMA播放。
- 7. SparkFun 單聲道音頻放大器將放大 DAC 信號(hào),以便驅(qū)動(dòng) 8 歐姆揚(yáng)聲器。
材料清單:
- Arduino到期:~U$ 50.00
- Sparkfun駐極體麥克風(fēng)突破:7.95美元
- SparkFun 單聲道音頻放大器突破:7.95 美元
- BitVoicer 服務(wù)器 1.0 :9.90 美元
- 8 歐姆揚(yáng)聲器:~U$ 2.00
- 面包板:~U$ 10.00
- 3 個(gè) LED:~U$ 1.00
- 3 x 330 Ohm 電阻器:~U$ 0.75
- 跳線:~U$ 0.50
第 1 步:接線
第一步是將 Arduino 和面包板與組件連接起來(lái),如下圖所示。我不得不在揚(yáng)聲器下方放置一個(gè)小橡膠,因?yàn)樗鼤?huì)振動(dòng)很多,沒(méi)有橡膠,音頻質(zhì)量會(huì)受到很大影響。
在這里,我們與我之前的項(xiàng)目有一個(gè)很小但很重要的區(qū)別。大多數(shù) Arduino 板在 5V 下運(yùn)行,但 DUE 在 3.3V 下運(yùn)行。因?yàn)槲以?3.3V 下運(yùn)行 Sparkfun Electret Breakout 得到了更好的結(jié)果,如果您使用 5V Arduino 板,我建議您在 3.3V 引腳和 AREF 引腳之間添加一個(gè)跳線。DUE 已經(jīng)使用 3.3V 模擬參考,因此您不需要跳線到 AREF 引腳。實(shí)際上,DUE 上的 AREF 引腳通過(guò)電阻橋連接到微控制器。要使用 AREF 引腳,電阻 BR1 必須從 PCB 上拆焊。
第 2 步:將代碼上傳到 Arduino
現(xiàn)在您必須將以下代碼上傳到您的 Arduino。為方便起見(jiàn),本文底部的附件部分也提供了 Arduino 草圖。在上傳代碼之前,您必須將 BitVoicer 服務(wù)器庫(kù)正確安裝到 Arduino IDE(導(dǎo)入 .zip 庫(kù))。
Arduino 草圖:BVS_Demo2.ino
這個(gè)草圖有七個(gè)主要部分:
- 庫(kù)引用和變量聲明:前四行包括對(duì)BVSP 、BVMic 、BVSSpeaker和 DAC 庫(kù)的引用。這些庫(kù)由 BitSophia 提供,可以在 BitVoicer Server 安裝文件夾中找到。當(dāng)您添加對(duì) BVSSpeaker 庫(kù)的引用時(shí),會(huì)自動(dòng)包含 DAC 庫(kù)。其他行聲明了整個(gè)草圖中使用的常量和變量。BVSP 類用于與 BitVoicer Server 通信,BVMic 類用于捕獲和存儲(chǔ)音頻樣本,BVSSpeaker 類用于使用 DUE DAC再現(xiàn)音頻。
- 設(shè)置功能:該功能執(zhí)行以下操作:設(shè)置引腳模式及其初始狀態(tài);初始化串行通信;并初始化 BVSP、BVMic 和 BVSSpeaker 類。它還為BVSP 類的 frameReceived、modeChanged 和 streamReceived 事件設(shè)置“事件處理程序”(它們實(shí)際上是函數(shù)指針) 。
- 循環(huán)函數(shù):該函數(shù)執(zhí)行五個(gè)重要操作: 向服務(wù)器請(qǐng)求狀態(tài)信息(keepAlive() 函數(shù));檢查服務(wù)器是否發(fā)送了任何數(shù)據(jù)并處理接收到的數(shù)據(jù)(receive() 函數(shù));控制音頻流的錄制和發(fā)送(isSREAvailable()、startRecording()、stopRecording() 和 sendStream() 函數(shù));播放排隊(duì)到 BVSSpeaker 類中的音頻樣本(play() 函數(shù));并調(diào)用 playNextLEDNote() 函數(shù),該函數(shù)控制在接收到 playLEDNotes 命令后 LED 應(yīng)如何閃爍。
- BVSP_frameReceived 函數(shù):每次 receive() 函數(shù)識(shí)別出已接收到一個(gè)完整幀時(shí),都會(huì)調(diào)用此函數(shù)。在這里,我運(yùn)行從 BitVoicer Server 發(fā)送的命令。控制 LED 的命令包含 2 個(gè)字節(jié)。第一個(gè)字節(jié)表示引腳,第二個(gè)字節(jié)表示引腳值。我使用analogWrite() 函數(shù)為引腳設(shè)置適當(dāng)?shù)闹怠?/font>我還檢查是否收到了 Byte 類型的 playLEDNotes 命令。如果已收到,我將 playLEDNotes 設(shè)置為true并標(biāo)記當(dāng)前時(shí)間。這個(gè)時(shí)間將被 playNextLEDNote 函數(shù)用來(lái)使 LED 與歌曲同步。
- BVSP_modeChanged 函數(shù):每次接收()函數(shù)識(shí)別出站方向(服務(wù)器-> Arduino)中的模式更改時(shí)調(diào)用此函數(shù)。哇!!!那是什么?!BitVoicer Server 可以向 Arduino 發(fā)送幀數(shù)據(jù)或音頻流。在通信從一種模式轉(zhuǎn)到另一種模式之前,BitVoicer Server 會(huì)發(fā)送一個(gè)信號(hào)。BVSP 類識(shí)別此信號(hào)并引發(fā) modeChanged 事件。在 BVSP_modeChanged 函數(shù)中,如果我檢測(cè)到通信正在從流模式轉(zhuǎn)到幀模式,我知道音頻已經(jīng)結(jié)束,所以我可以告訴 BVSSpeaker 類停止播放音頻樣本。
- BVSP_streamReceived 函數(shù):每次 receive() 函數(shù)識(shí)別到已接收到音頻樣本時(shí),都會(huì)調(diào)用此函數(shù)。我只需檢索樣本并將它們排隊(duì)到 BVSSpeaker 類中,以便 play() 函數(shù)可以重現(xiàn)它們。
- playNextLEDNote 函數(shù):此函數(shù)僅在 BVSP_frameReceived 函數(shù)識(shí)別 playLEDNotes 命令時(shí)運(yùn)行。它控制 LED 并將其與從 BitVoicer 服務(wù)器發(fā)送的音頻同步。為了使 LED 與音頻同步并知道正確的時(shí)間,我使用了Sonic Visualizer 。這個(gè)免費(fèi)軟件讓我可以看到音波,這樣我就可以很容易地分辨出鋼琴鍵是什么時(shí)候按下的。它還顯示了一條時(shí)間線,這就是我獲得此函數(shù)中使用的毫秒數(shù)的方式。聽(tīng)起來(lái)像一個(gè)愚蠢的把戲,它是。我認(rèn)為可以分析音頻流并打開(kāi)相應(yīng)的 LED,但我無(wú)法做到。
第 3 步:導(dǎo)入 BitVoicer 服務(wù)器解決方案對(duì)象
現(xiàn)在您必須設(shè)置 BitVoicer Server 才能與 Arduino 一起使用。BitVoicer Server 有四個(gè)主要的解決方案對(duì)象:位置、設(shè)備、二進(jìn)制數(shù)據(jù)和語(yǔ)音模式。
位置表示安裝設(shè)備的物理位置。就我而言,我創(chuàng)建了一個(gè)名為 Home 的位置。
設(shè)備是 BitVoicer 服務(wù)器客戶端。我創(chuàng)建了一個(gè)混合設(shè)備,將其命名為 ArduinoDUE 并輸入通信設(shè)置。重要提示:即使 Arduino DUE 也有少量?jī)?nèi)存來(lái)存儲(chǔ) BitVoicer Server 將流式傳輸?shù)乃幸纛l樣本。如果不限制帶寬,則需要更大的緩沖區(qū)來(lái)存儲(chǔ)音頻。由于這個(gè)原因,我遇到了一些緩沖區(qū)溢出,因此我不得不將通信設(shè)置中的數(shù)據(jù)速率限制為每秒 8000 個(gè)樣本。
BinaryData 是 BitVoicer Server 可以發(fā)送到客戶端設(shè)備的一種命令。它們實(shí)際上是可以鏈接到命令的字節(jié)數(shù)組。當(dāng) BitVoicer Server 識(shí)別出與該命令相關(guān)的語(yǔ)音時(shí),它會(huì)將字節(jié)數(shù)組發(fā)送到目標(biāo)設(shè)備。我為每個(gè)引腳值創(chuàng)建了一個(gè) BinaryData 對(duì)象,并將它們命名為 ArduinoDUEGreenLedOn、ArduinoDUEGreenLedOff 等。我的解決方案中最終有 18 個(gè) BinaryData 對(duì)象,因此我建議您從下面的VoiceSchema.sof文件下載并導(dǎo)入對(duì)象。
語(yǔ)音模式是一切融合在一起的地方。它們定義了應(yīng)該識(shí)別哪些句子以及運(yùn)行哪些命令。對(duì)于每個(gè)句子,您可以根據(jù)需要定義任意數(shù)量的命令以及它們將執(zhí)行的順序。您還可以定義命令之間的延遲。這就是我如何設(shè)法執(zhí)行您在視頻中看到的一系列動(dòng)作。
我的語(yǔ)音模式中的一個(gè)句子是“播放一首小歌”。這句話包含兩個(gè)命令。第一個(gè)命令發(fā)送一個(gè)字節(jié),指示以下命令將成為音頻流。然后,Arduino 在傳輸音頻時(shí)開(kāi)始“播放”LED。音頻是我自己錄制的一小段鋼琴曲,并將其設(shè)置為第二個(gè)命令的音頻源。BitVoicer Server 僅支持 8 位單聲道 PCM 音頻(每秒 8000 個(gè)樣本),因此如果您需要將音頻文件轉(zhuǎn)換為這種格式,
您可以從以下文件導(dǎo)入(導(dǎo)入解決方案對(duì)象)我在此項(xiàng)目中使用的所有解決方案對(duì)象。一個(gè)包含 DUE 設(shè)備,另一個(gè)包含語(yǔ)音模式及其命令。
解決方案目標(biāo)文件:
第 4 步:結(jié)論
給你!您可以打開(kāi)一切并執(zhí)行視頻中顯??示的相同操作。
正如我在之前的項(xiàng)目中所做的那樣,我通過(guò)在BitVoicer Server Manager中啟用 Arduino 設(shè)備來(lái)啟動(dòng)語(yǔ)音識(shí)別。一旦啟用,Arduino 就會(huì)識(shí)別可用的語(yǔ)音識(shí)別引擎并開(kāi)始將音頻流式傳輸?shù)?BitVoicer 服務(wù)器。但是,現(xiàn)在您在 Arduino RX LED 中看到更多活動(dòng),同時(shí)音頻從 BitVoicer 服務(wù)器流式傳輸?shù)?Arduino。
在我的下一個(gè)項(xiàng)目中,我將更加雄心勃勃。我打算將 WiFi 通信添加到一個(gè) Arduino 并通過(guò)語(yǔ)音一起控制另外兩個(gè) Arduino。我在想他們之間的某種游戲。非常歡迎提出建議!
- 語(yǔ)音識(shí)別發(fā)展 Python進(jìn)行語(yǔ)音識(shí)別案例 4次下載
- 使用Elechouse V3和Arduino進(jìn)行語(yǔ)音識(shí)別
- 基于Arduino的語(yǔ)音識(shí)別及應(yīng)用 0次下載
- 如何將Grove語(yǔ)音識(shí)別器模塊與Arduino板連接
- Arduino Nano 33 BLE Sense的語(yǔ)音識(shí)別項(xiàng)目
- 基于性能影響因素分析的語(yǔ)音識(shí)別平臺(tái)體系結(jié)構(gòu) 20次下載
- 如何使用語(yǔ)音模塊和Arduino進(jìn)行交流 32次下載
- 科大訊飛如何SDK導(dǎo)入和進(jìn)行語(yǔ)音合成移植的詳細(xì)資料說(shuō)明 1次下載
- 如何進(jìn)行馬來(lái)語(yǔ)語(yǔ)音合成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)概述 4次下載
- 如何使用MATLAB進(jìn)行語(yǔ)音識(shí)別算法研究的論文資料免費(fèi)下載 43次下載
- 語(yǔ)音識(shí)別中為什么會(huì)出現(xiàn)帶寬失配如何進(jìn)行補(bǔ)償分析資料概述 3次下載
- 可穿戴計(jì)算機(jī)中的語(yǔ)音識(shí)別、編碼和合成等技術(shù)的介紹 3次下載
- 《MATLAB在語(yǔ)音信號(hào)分析和合成中的應(yīng)用》MATLAB程序 79次下載
- 空管模擬訓(xùn)練中指令的語(yǔ)音識(shí)別與合成技術(shù)研究 21次下載
- 用語(yǔ)音識(shí)別進(jìn)行無(wú)線控制的研究
- 功分器和合成器的主要區(qū)別 816次閱讀
- 基于中文語(yǔ)音合成模塊XF-S4240實(shí)現(xiàn)語(yǔ)音車載終端的設(shè)計(jì) 3786次閱讀
- 基于0MAP5912芯片實(shí)現(xiàn)SVM語(yǔ)音識(shí)別程序的應(yīng)用開(kāi)發(fā) 2643次閱讀
- 基于JuliUS語(yǔ)音識(shí)別引擎實(shí)現(xiàn)機(jī)器人孤立詞語(yǔ)音識(shí)別系統(tǒng)的設(shè)計(jì) 1695次閱讀
- dfrobot語(yǔ)音識(shí)別控制板 介紹 2972次閱讀
- 語(yǔ)音識(shí)別芯片的原理_語(yǔ)音識(shí)別芯片有哪些 5171次閱讀
- 語(yǔ)音識(shí)別技術(shù)在智能語(yǔ)音機(jī)器人中的應(yīng)用 5357次閱讀
- 語(yǔ)音識(shí)別技術(shù)的發(fā)展歷程,語(yǔ)音識(shí)別是如何工作的?語(yǔ)音識(shí)別資料概述 1w次閱讀
- 深度學(xué)習(xí)進(jìn)行語(yǔ)音識(shí)別的方法 如何建立自己的語(yǔ)音識(shí)別系統(tǒng) 1w次閱讀
- 詳細(xì)解析WORLD語(yǔ)音合成系統(tǒng)的原理以及使用方法 1.5w次閱讀
- 語(yǔ)音識(shí)別技術(shù)的發(fā)展及難點(diǎn)分析 2.3w次閱讀
- 語(yǔ)音識(shí)別技術(shù)是什么_語(yǔ)音識(shí)別技術(shù)應(yīng)用領(lǐng)域介紹 1.6w次閱讀
- 基于LD3220的語(yǔ)音識(shí)別的模塊進(jìn)行DIY的小車 1.8w次閱讀
- 基于數(shù)字信號(hào)處理器的中文語(yǔ)音合成系統(tǒng)設(shè)計(jì) 1886次閱讀
- 語(yǔ)音識(shí)別技術(shù)的應(yīng)用及發(fā)展 2318次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多