資料介紹
描述
在我之前的項目中,我展示了如何使用Arduino板和BitVoicer 服務器控制幾個 LED 。在這個項目中,我會讓事情變得更復雜一些。我還將使用Arduino DUE數(shù)模轉換器 (DAC)合成語音。如果您沒有 Arduino DUE,您可以使用其他 Arduino 板,但您需要一個外部 DAC 和一些額外的代碼來操作 DAC(BVSSpeaker庫不會幫助您)。
在下面的視頻中,您可以看到我還讓 Arduino 播放一首小曲并讓 LED 像鋼琴鍵一樣閃爍。對不起我的鋼琴技巧,但這是我能做的最好的:)。LED 實際上以與真正的 C、D 和 E 鍵相同的順序和時間閃爍,因此如果您周圍有鋼琴,您可以跟隨 LED 并演奏相同的歌曲。這是來自一個甚至不復存在的老零售商 (Mappin) 的叮當聲。
將執(zhí)行以下程序將語音命令轉換為 LED 活動和合成語音:
- 1. Sparkfun Electret Breakout板將捕獲并放大音頻波;
- 3. 音頻樣本將通過 Arduino 串口流式傳輸?shù)?BitVoicer Server;
- 4. BitVoicer Server 將處理音頻流并識別其中包含的語音;
- 5. 識別的語音將被映射到預定義的命令,這些命令將被發(fā)送回 Arduino。如果其中一個命令是合成語音,BitVoicer Server 將準備音頻流并將其發(fā)送到 Arduino;
- 6. Arduino 將識別命令并執(zhí)行適當?shù)牟僮鳌?/font>如果接收到音頻流,它將被排入BVSSpeaker類并使用 DUE DAC 和DMA播放。
- 7. SparkFun 單聲道音頻放大器將放大 DAC 信號,以便驅動 8 歐姆揚聲器。
材料清單:
- Arduino到期:~U$ 50.00
- Sparkfun駐極體麥克風突破:7.95美元
- SparkFun 單聲道音頻放大器突破:7.95 美元
- BitVoicer 服務器 1.0 :9.90 美元
- 8 歐姆揚聲器:~U$ 2.00
- 面包板:~U$ 10.00
- 3 個 LED:~U$ 1.00
- 3 x 330 Ohm 電阻器:~U$ 0.75
- 跳線:~U$ 0.50
第 1 步:接線
第一步是將 Arduino 和面包板與組件連接起來,如下圖所示。我不得不在揚聲器下方放置一個小橡膠,因為它會振動很多,沒有橡膠,音頻質量會受到很大影響。
在這里,我們與我之前的項目有一個很小但很重要的區(qū)別。大多數(shù) Arduino 板在 5V 下運行,但 DUE 在 3.3V 下運行。因為我在 3.3V 下運行 Sparkfun Electret Breakout 得到了更好的結果,如果您使用 5V Arduino 板,我建議您在 3.3V 引腳和 AREF 引腳之間添加一個跳線。DUE 已經使用 3.3V 模擬參考,因此您不需要跳線到 AREF 引腳。實際上,DUE 上的 AREF 引腳通過電阻橋連接到微控制器。要使用 AREF 引腳,電阻 BR1 必須從 PCB 上拆焊。
第 2 步:將代碼上傳到 Arduino
現(xiàn)在您必須將以下代碼上傳到您的 Arduino。為方便起見,本文底部的附件部分也提供了 Arduino 草圖。在上傳代碼之前,您必須將 BitVoicer 服務器庫正確安裝到 Arduino IDE(導入 .zip 庫)。
Arduino 草圖:BVS_Demo2.ino
這個草圖有七個主要部分:
- 庫引用和變量聲明:前四行包括對BVSP 、BVMic 、BVSSpeaker和 DAC 庫的引用。這些庫由 BitSophia 提供,可以在 BitVoicer Server 安裝文件夾中找到。當您添加對 BVSSpeaker 庫的引用時,會自動包含 DAC 庫。其他行聲明了整個草圖中使用的常量和變量。BVSP 類用于與 BitVoicer Server 通信,BVMic 類用于捕獲和存儲音頻樣本,BVSSpeaker 類用于使用 DUE DAC再現(xiàn)音頻。
- 設置功能:該功能執(zhí)行以下操作:設置引腳模式及其初始狀態(tài);初始化串行通信;并初始化 BVSP、BVMic 和 BVSSpeaker 類。它還為BVSP 類的 frameReceived、modeChanged 和 streamReceived 事件設置“事件處理程序”(它們實際上是函數(shù)指針) 。
- 循環(huán)函數(shù):該函數(shù)執(zhí)行五個重要操作: 向服務器請求狀態(tài)信息(keepAlive() 函數(shù));檢查服務器是否發(fā)送了任何數(shù)據并處理接收到的數(shù)據(receive() 函數(shù));控制音頻流的錄制和發(fā)送(isSREAvailable()、startRecording()、stopRecording() 和 sendStream() 函數(shù));播放排隊到 BVSSpeaker 類中的音頻樣本(play() 函數(shù));并調用 playNextLEDNote() 函數(shù),該函數(shù)控制在接收到 playLEDNotes 命令后 LED 應如何閃爍。
- BVSP_frameReceived 函數(shù):每次 receive() 函數(shù)識別出已接收到一個完整幀時,都會調用此函數(shù)。在這里,我運行從 BitVoicer Server 發(fā)送的命令。控制 LED 的命令包含 2 個字節(jié)。第一個字節(jié)表示引腳,第二個字節(jié)表示引腳值。我使用analogWrite() 函數(shù)為引腳設置適當?shù)闹怠?/font>我還檢查是否收到了 Byte 類型的 playLEDNotes 命令。如果已收到,我將 playLEDNotes 設置為true并標記當前時間。這個時間將被 playNextLEDNote 函數(shù)用來使 LED 與歌曲同步。
- BVSP_modeChanged 函數(shù):每次接收()函數(shù)識別出站方向(服務器-> Arduino)中的模式更改時調用此函數(shù)。哇?。?!那是什么?!BitVoicer Server 可以向 Arduino 發(fā)送幀數(shù)據或音頻流。在通信從一種模式轉到另一種模式之前,BitVoicer Server 會發(fā)送一個信號。BVSP 類識別此信號并引發(fā) modeChanged 事件。在 BVSP_modeChanged 函數(shù)中,如果我檢測到通信正在從流模式轉到幀模式,我知道音頻已經結束,所以我可以告訴 BVSSpeaker 類停止播放音頻樣本。
- BVSP_streamReceived 函數(shù):每次 receive() 函數(shù)識別到已接收到音頻樣本時,都會調用此函數(shù)。我只需檢索樣本并將它們排隊到 BVSSpeaker 類中,以便 play() 函數(shù)可以重現(xiàn)它們。
- playNextLEDNote 函數(shù):此函數(shù)僅在 BVSP_frameReceived 函數(shù)識別 playLEDNotes 命令時運行。它控制 LED 并將其與從 BitVoicer 服務器發(fā)送的音頻同步。為了使 LED 與音頻同步并知道正確的時間,我使用了Sonic Visualizer 。這個免費軟件讓我可以看到音波,這樣我就可以很容易地分辨出鋼琴鍵是什么時候按下的。它還顯示了一條時間線,這就是我獲得此函數(shù)中使用的毫秒數(shù)的方式。聽起來像一個愚蠢的把戲,它是。我認為可以分析音頻流并打開相應的 LED,但我無法做到。
第 3 步:導入 BitVoicer 服務器解決方案對象
現(xiàn)在您必須設置 BitVoicer Server 才能與 Arduino 一起使用。BitVoicer Server 有四個主要的解決方案對象:位置、設備、二進制數(shù)據和語音模式。
位置表示安裝設備的物理位置。就我而言,我創(chuàng)建了一個名為 Home 的位置。
設備是 BitVoicer 服務器客戶端。我創(chuàng)建了一個混合設備,將其命名為 ArduinoDUE 并輸入通信設置。重要提示:即使 Arduino DUE 也有少量內存來存儲 BitVoicer Server 將流式傳輸?shù)乃幸纛l樣本。如果不限制帶寬,則需要更大的緩沖區(qū)來存儲音頻。由于這個原因,我遇到了一些緩沖區(qū)溢出,因此我不得不將通信設置中的數(shù)據速率限制為每秒 8000 個樣本。
BinaryData 是 BitVoicer Server 可以發(fā)送到客戶端設備的一種命令。它們實際上是可以鏈接到命令的字節(jié)數(shù)組。當 BitVoicer Server 識別出與該命令相關的語音時,它會將字節(jié)數(shù)組發(fā)送到目標設備。我為每個引腳值創(chuàng)建了一個 BinaryData 對象,并將它們命名為 ArduinoDUEGreenLedOn、ArduinoDUEGreenLedOff 等。我的解決方案中最終有 18 個 BinaryData 對象,因此我建議您從下面的VoiceSchema.sof文件下載并導入對象。
語音模式是一切融合在一起的地方。它們定義了應該識別哪些句子以及運行哪些命令。對于每個句子,您可以根據需要定義任意數(shù)量的命令以及它們將執(zhí)行的順序。您還可以定義命令之間的延遲。這就是我如何設法執(zhí)行您在視頻中看到的一系列動作。
我的語音模式中的一個句子是“播放一首小歌”。這句話包含兩個命令。第一個命令發(fā)送一個字節(jié),指示以下命令將成為音頻流。然后,Arduino 在傳輸音頻時開始“播放”LED。音頻是我自己錄制的一小段鋼琴曲,并將其設置為第二個命令的音頻源。BitVoicer Server 僅支持 8 位單聲道 PCM 音頻(每秒 8000 個樣本),因此如果您需要將音頻文件轉換為這種格式,
您可以從以下文件導入(導入解決方案對象)我在此項目中使用的所有解決方案對象。一個包含 DUE 設備,另一個包含語音模式及其命令。
解決方案目標文件:
第 4 步:結論
給你!您可以打開一切并執(zhí)行視頻中顯??示的相同操作。
正如我在之前的項目中所做的那樣,我通過在BitVoicer Server Manager中啟用 Arduino 設備來啟動語音識別。一旦啟用,Arduino 就會識別可用的語音識別引擎并開始將音頻流式傳輸?shù)?BitVoicer 服務器。但是,現(xiàn)在您在 Arduino RX LED 中看到更多活動,同時音頻從 BitVoicer 服務器流式傳輸?shù)?Arduino。
在我的下一個項目中,我將更加雄心勃勃。我打算將 WiFi 通信添加到一個 Arduino 并通過語音一起控制另外兩個 Arduino。我在想他們之間的某種游戲。非常歡迎提出建議!
- 語音識別發(fā)展 Python進行語音識別案例 4次下載
- 使用Elechouse V3和Arduino進行語音識別
- 基于Arduino的語音識別及應用 0次下載
- 如何將Grove語音識別器模塊與Arduino板連接
- Arduino Nano 33 BLE Sense的語音識別項目
- 基于性能影響因素分析的語音識別平臺體系結構 20次下載
- 如何使用語音模塊和Arduino進行交流 32次下載
- 科大訊飛如何SDK導入和進行語音合成移植的詳細資料說明 1次下載
- 如何進行馬來語語音合成系統(tǒng)的設計與實現(xiàn)概述 4次下載
- 如何使用MATLAB進行語音識別算法研究的論文資料免費下載 43次下載
- 語音識別中為什么會出現(xiàn)帶寬失配如何進行補償分析資料概述 3次下載
- 可穿戴計算機中的語音識別、編碼和合成等技術的介紹 3次下載
- 《MATLAB在語音信號分析和合成中的應用》MATLAB程序 79次下載
- 空管模擬訓練中指令的語音識別與合成技術研究 21次下載
- 用語音識別進行無線控制的研究
- 功分器和合成器的主要區(qū)別 816次閱讀
- 基于中文語音合成模塊XF-S4240實現(xiàn)語音車載終端的設計 3786次閱讀
- 基于0MAP5912芯片實現(xiàn)SVM語音識別程序的應用開發(fā) 2643次閱讀
- 基于JuliUS語音識別引擎實現(xiàn)機器人孤立詞語音識別系統(tǒng)的設計 1695次閱讀
- dfrobot語音識別控制板 介紹 2972次閱讀
- 語音識別芯片的原理_語音識別芯片有哪些 5171次閱讀
- 語音識別技術在智能語音機器人中的應用 5357次閱讀
- 語音識別技術的發(fā)展歷程,語音識別是如何工作的?語音識別資料概述 1w次閱讀
- 深度學習進行語音識別的方法 如何建立自己的語音識別系統(tǒng) 1w次閱讀
- 詳細解析WORLD語音合成系統(tǒng)的原理以及使用方法 1.5w次閱讀
- 語音識別技術的發(fā)展及難點分析 2.3w次閱讀
- 語音識別技術是什么_語音識別技術應用領域介紹 1.6w次閱讀
- 基于LD3220的語音識別的模塊進行DIY的小車 1.8w次閱讀
- 基于數(shù)字信號處理器的中文語音合成系統(tǒng)設計 1886次閱讀
- 語音識別技術的應用及發(fā)展 2318次閱讀
下載排行
本周
- 1使用單片機實現(xiàn)七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 2聯(lián)想E46L DAOLL6筆記本電腦圖紙
- 1.10 MB | 2次下載 | 5 積分
- 3MATLAB繪圖合集
- 27.12 MB | 2次下載 | 5 積分
- 4PR735,使用UCC28060的600W交錯式PFC轉換器
- 540.03KB | 1次下載 | 免費
- 5UCC38C42 30W同步降壓轉換器參考設計
- 428.07KB | 1次下載 | 免費
- 6DV2004S1/ES1/HS1快速充電開發(fā)系統(tǒng)
- 2.08MB | 1次下載 | 免費
- 7模態(tài)分解合集matlab代碼
- 3.03 MB | 1次下載 | 2 積分
- 8美的電磁爐維修手冊大全
- 1.56 MB | 1次下載 | 5 積分
本月
- 1使用單片機實現(xiàn)七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 2UC3842/3/4/5電源管理芯片中文手冊
- 1.75 MB | 15次下載 | 免費
- 3DMT0660數(shù)字萬用表產品說明書
- 0.70 MB | 13次下載 | 免費
- 4TPS54202H降壓轉換器評估模塊用戶指南
- 1.02MB | 8次下載 | 免費
- 5STM32F101x8/STM32F101xB手冊
- 1.69 MB | 8次下載 | 1 積分
- 6HY12P65/HY12P66數(shù)字萬用表芯片規(guī)格書
- 0.69 MB | 6次下載 | 免費
- 7華瑞昇CR216芯片數(shù)字萬用表規(guī)格書附原理圖及校正流程方法
- 0.74 MB | 6次下載 | 3 積分
- 8華瑞昇CR215芯片數(shù)字萬用表原理圖
- 0.21 MB | 5次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多