24小時聯系電話:18217114652、13661815404
中文
技術專題
使用 ESP32 制作您自己的 Alexa
使用 ESP32 制作您自己的 Alexa
人機界面技術 (HMI) 在過去 10-15 年中取得了長足的進步:直到 2000 年代初,嵌入式設備上的彩色屏幕和觸摸屏(第一款手持電話,然后被智能手機取代)絕對不是那么-負擔得起的加。隨著處理性能的提高、成本的降低以及新通信技術的出現,已經創建了能夠將用戶想要的內容轉換為命令的設備。
直到幾年前,能夠連接到云并允許通過使用語音命令遠程控制物聯網設備的設備還是純科幻小說。迄今為止,智能傳感器和智能音頻設備可以輕松地為您的語音控制的個人助理創建硬件。
語音助手:系統概述
數字語音輔助系統是一種能夠執行以下步驟的電子設備:
捕捉語音信息
將語音消息轉換為音頻流
通過復雜的算法處理音頻流,將其解釋為唯一的命令
將命令與操作相關聯
播放音頻反饋信息
這一切的背后,是一整套的軟硬件技術。
圖 1 顯示了語音助手的框圖。
圖 1:語音助手框圖
與任何其他通信通道一樣,該通道還涉及原始信號、采集和轉換系統、編碼系統、處理系統、解碼系統和輸出信號發射系統。
在語音輔助系統的情況下,源信號是語音消息,它是一種機械波,通過我們的聲帶調制并作為振動通過空氣(通信方式)傳播。振動由充當信號傳感器的麥克風獲取。然后,對信號進行調理和編碼以進行處理。此時,編碼的音頻流可以在本地(通過微控制器或微處理器)進行操作,也可以通過云上的語音識別算法和 AI 以更有效的方式遠程發送以進行處理。因此,處理輸出將是提供給致動系統的命令。
至于音頻反饋,路徑相似但相反:流被解碼并發送到放大器,放大器將通過揚聲器再現音頻。
系統組件
從頭開始設計語音輔助系統是一項復雜的任務。直到幾十年前,只有具有出色音頻設計技能的工程師團隊才可行。如今,我們很幸運能夠利用一系列硬件和軟件組件,這無疑使任務變得更簡單。
該項目最關鍵的部分之一是音頻采集和再現部分,這需要出色的應用領域知識以及模擬電子技能。為了簡化任務,我們可以使用數字傳感器,它集成了必要的模擬組件并傳輸已經數字編碼的數據。
至于輸入部分,我們可以使用全向麥克風INMP441,它采用MEMS技術(Micro Electro-Mechanical Systems)進行轉換,并實現了I2S數字接口進行數據交換。這樣可以避免信號調節問題,并且與處理單元的接口不受噪聲影響。此外,要處理的信號已經是數字格式。
至于音頻輸出級,我們可以使用MAX98357A,一個2通道3W D類放大器,還配備了I2S接口。與輸入級類似,硬件設計極為簡化:放大器通過 I2S 接口接收輸入端的數字信號,對音頻樣本進行解碼,并在芯片的 L 和 R 端將其再現為電壓,這兩個端簡單連接到揚聲器。
此時,您需要選擇的最后一個設備是微控制器,它必須能夠處理(或發送到云)來自麥克風的音頻流,并發送音頻流以供放大器再現。最適合此用途的 MCU 當然是樂鑫的 ESP32模塊(最好是 WROVER 模塊,配備 8MB RAM 和高達 16MB 的閃存)。由于其高連接性(BLE 和 WiFi)和高性能以及極低的價格,該模塊是智能家居應用的正確選擇。它還具有兩個獨立的 I2S 接口,非常適合該項目的目的。
圖 2 顯示了該項目中使用的三個主要組件。
圖 2:MAX98357A(左)、ESP32-WROVER(中)、INMP441(右)
I2S 通信總線
I2S 接口協議是該項目的一個關鍵點,因為它使硬件和軟件都變得簡單,使設計人員和開發人員免于與模擬采集和再現相關的一系列問題。
I2S 代表 Inter-IC Sound,它是用于連接數字音頻設備的串行接口的電氣標準。它在音頻應用中用于在集成電路之間傳輸 PCM 音頻樣本,就像我們的例子(MCU 和麥克風/放大器)。I2S創建于1986年,是飛利浦半導體(現恩智浦半導體)的產品。
I2S 總線是同步的,因為它從數據線提供不同的時鐘信號,這比異步設備更容易接收,在異步設備中,通信系統直接從數據流中獲取時鐘。它還在同一條數據線上提供最多兩個多路復用通道(右通道和左通道)。
I2S至少包括以下三行:
時鐘線(BCLK):用于標記位時間并允許連接設備之間的同步
字選擇(WS)或左右時鐘(LRCLK)線:用于復用左聲道(WS低)和右聲道(WS高)。因此,它表示為占空比為 50% 的方波
數據線:用于傳輸PCM樣本,根據WS的狀態進行復用;數據以 2 的補碼編碼
時鐘切換頻率 (f ck ) 不能任意選擇,而是根據輸入信號的采樣頻率 (f s )、通道數 (n ch ) 和單個樣本的位數 (n bit),由此?F CK turnsout是
f ck = f s *n位*n ch
例如,要傳輸 2 個 8kHz 采樣數據流,其中每個采樣有 12 位,我們需要設置
f ck = 8000 * 12 * 2 = 192000 次/秒。
圖 3 顯示了總線時序圖的示例。
圖 3:I2S 總線時序圖
電氣連接和軟件片段
圖 4 顯示了系統三個主要組件之間的連接。連接非常容易理解,因為在麥克風/放大器和 MCU 之間連接時鐘信號、字同步和數據線就足夠了。所有模擬調節、濾波和放大都集成到數字設備中。
圖 4:數字元件接線
最后,圖 5 顯示了在 ESP32 的 ESP-IDF 環境中正確使用 I2S 總線的結構配置。該配置是指以 8kHz 的頻率對輸入信號進行采樣,每單通道采樣 16 位,作為輸入和輸出(因為
有一個麥克風,并且有一個單聲道輸出)。
圖 5:I2S 總線配置示例
一個項目,一千種可能
該項目是任何需要音頻輸入、放大輸出以及處理和通信系統的設備的起點:類似的平臺可以在大量應用中實現,例如智能家居助手、音頻播放器、環境警報系統、嬰兒監視器等。