<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用Arduino進行語音識別和合成

使用Arduino進行語音識別和合成

2022-11-17 | zip | 0.59 MB | 次下載 | 免費

資料介紹

描述

在我之前的項目中,我展示了如何使用Arduino板和BitVoicer 服務器控制幾個 LED 。在這個項目中,我會讓事情變得更復雜一些。我還將使用Arduino DUE數模轉換器 (DAC)合成語音。如果您沒有 Arduino DUE,您可以使用其他 Arduino 板,但您需要一個外部 DAC 和一些額外的代碼來操作 DAC(BVSSpeaker庫不會幫助您)。

在下面的視頻中,您可以看到我還讓 Arduino 播放一首小曲并讓 LED 像鋼琴鍵一樣閃爍。對不起我的鋼琴技巧,但這是我能做的最好的:)。LED 實際上以與真正的 C、D 和 E 鍵相同的順序和時間閃爍,因此如果您周圍有鋼琴,您可以跟隨 LED 并演奏相同的歌曲。這是來自一個甚至不復存在的老零售商 (Mappin) 的叮當聲。

將執行以下程序將語音命令轉換為 LED 活動和合成語音:

  • 3. 音頻樣本將通過 Arduino 串口流式傳輸到 BitVoicer Server;
  • 4. BitVoicer Server 將處理音頻流并識別其中包含的語音;
  • 5. 識別的語音將被映射到預定義的命令,這些命令將被發送回 Arduino。如果其中一個命令是合成語音,BitVoicer Server 將準備音頻流并將其發送到 Arduino;
  • 6. Arduino 將識別命令并執行適當的操作。如果接收到音頻流,它將被排入BVSSpeaker類并使用 DUE DAC 和DMA播放。

材料清單:

  • 8 歐姆揚聲器:~U$ 2.00
  • 面包板:~U$ 10.00
  • 3 個 LED:~U$ 1.00
  • 跳線:~U$ 0.50

第 1 步:接線

第一步是將 Arduino 和面包板與組件連接起來,如下圖所示。我不得不在揚聲器下方放置一個小橡膠,因為它會振動很多,沒有橡膠,音頻質量會受到很大影響。

?
?
?
?
pYYBAGN1HaaADxusAAEDWa1Egrc510.jpg
?
1 / 4 ? Fritzing 示意圖
?

在這里,我們與我之前的項目有一個很小但很重要的區別。大多數 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

現在您必須將以下代碼上傳到您的 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再現音頻。
  • 循環函數:該函數執行五個重要操作: 向服務器請求狀態信息(keepAlive() 函數);檢查服務器是否發送了任何數據并處理接收到的數據(receive() 函數);控制音頻流的錄制和發送(isSREAvailable()、startRecording()、stopRecording() 和 sendStream() 函數);播放排隊到 BVSSpeaker 類中的音頻樣本(play() 函數);并調用 playNextLEDNote() 函數,該函數控制在接收到 playLEDNotes 命令后 LED 應如何閃爍。
  • BVSP_frameReceived 函數:每次 receive() 函數識別出已接收到一個完整幀時,都會調用此函數。在這里,我運行從 BitVoicer Server 發送的命令。控制 LED 的命令包含 2 個字節。第一個字節表示引腳,第二個字節表示引腳值。我使用analogWrite() 函數為引腳設置適當的值。我還檢查是否收到了 Byte 類型的 playLEDNotes 命令。如果已收到,我將 playLEDNotes 設置為true并標記當前時間。這個時間將被 playNextLEDNote 函數用來使 LED 與歌曲同步。
  • BVSP_modeChanged 函數:每次接收()函數識別出站方向(服務器-> Arduino)中的模式更改時調用此函數。哇?。?!那是什么?!BitVoicer Server 可以向 Arduino 發送幀數據音頻流。在通信從一種模式轉到另一種模式之前,BitVoicer Server 會發送一個信號。BVSP 類識別此信號并引發 modeChanged 事件。在 BVSP_modeChanged 函數中,如果我檢測到通信正在從流模式轉到幀模式,我知道音頻已經結束,所以我可以告訴 BVSSpeaker 類停止播放音頻樣本。
  • BVSP_streamReceived 函數:每次 receive() 函數識別到已接收到音頻樣本時,都會調用此函數。我只需檢索樣本并將它們排隊到 BVSSpeaker 類中,以便 play() 函數可以重現它們。
  • playNextLEDNote 函數:此函數僅在 BVSP_frameReceived 函數識別 playLEDNotes 命令時運行。它控制 LED 并將其與從 BitVoicer 服務器發送的音頻同步。為了使 LED 與音頻同步并知道正確的時間,我使用了Sonic Visualizer 。這個免費軟件讓我可以看到音波,這樣我就可以很容易地分辨出鋼琴鍵是什么時候按下的。它還顯示了一條時間線,這就是我獲得此函數中使用的毫秒數的方式。聽起來像一個愚蠢的把戲,它是。我認為可以分析音頻流并打開相應的 LED,但我無法做到。

第 3 步:導入 BitVoicer 服務器解決方案對象

現在您必須設置 BitVoicer Server 才能與 Arduino 一起使用。BitVoicer Server 有四個主要的解決方案對象:位置、設備、二進制數據和語音模式。

位置表示安裝設備的物理位置。就我而言,我創建了一個名為 Home 的位置。

設備是 BitVoicer 服務器客戶端。我創建了一個混合設備,將其命名為 ArduinoDUE 并輸入通信設置。重要提示:即使 Arduino DUE 也有少量內存來存儲 BitVoicer Server 將流式傳輸的所有音頻樣本。如果不限制帶寬,則需要更大的緩沖區來存儲音頻。由于這個原因,我遇到了一些緩沖區溢出,因此我不得不將通信設置中的數據速率限制為每秒 8000 個樣本。

BinaryData 是 BitVoicer Server 可以發送到客戶端設備的一種命令。它們實際上是可以鏈接到命令的字節數組。當 BitVoicer Server 識別出與該命令相關的語音時,它會將字節數組發送到目標設備。我為每個引腳值創建了一個 BinaryData 對象,并將它們命名為 ArduinoDUEGreenLedOn、ArduinoDUEGreenLedOff 等。我的解決方案中最終有 18 個 BinaryData 對象,因此我建議您從下面的VoiceSchema.sof文件下載并導入對象。

語音模式是一切融合在一起的地方。它們定義了應該識別哪些句子以及運行哪些命令。對于每個句子,您可以根據需要定義任意數量的命令以及它們將執行的順序。您還可以定義命令之間的延遲。這就是我如何設法執行您在視頻中看到的一系列動作。

我的語音模式中的一個句子是“播放一首小歌”。這句話包含兩個命令。第一個命令發送一個字節,指示以下命令將成為音頻流。然后,Arduino 在傳輸音頻時開始“播放”LED。音頻是我自己錄制的一小段鋼琴曲,并將其設置為第二個命令的音頻源。BitVoicer Server 僅支持 8 位單聲道 PCM 音頻(每秒 8000 個樣本),因此如果您需要將音頻文件轉換為這種格式,

您可以從以下文件導入(導入解決方案對象)我在此項目中使用的所有解決方案對象。一個包含 DUE 設備,另一個包含語音模式及其命令。

解決方案目標文件

第 4 步:結論

給你!您可以打開一切并執行視頻中顯??示的相同操作。

?

正如我在之前的項目中所做的那樣,我通過在BitVoicer Server Manager中啟用 Arduino 設備來啟動語音識別。一旦啟用,Arduino 就會識別可用的語音識別引擎并開始將音頻流式傳輸到 BitVoicer 服務器。但是,現在您在 Arduino RX LED 中看到更多活動,同時音頻從 BitVoicer 服務器流式傳輸到 Arduino。

在我的下一個項目中,我將更加雄心勃勃。我打算將 WiFi 通信添加到一個 Arduino 并通過語音一起控制另外兩個 Arduino。我在想他們之間的某種游戲。非常歡迎提出建議!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>