簡介:一個“無麥克風”語音助手的案例
在一個總是監(jiān)聽設備的時代,我想探索另一種選擇:一種智能、反應靈敏、完全由用戶控制的語音助手。我的ESP32語音助手v0.1項目演示了如何構建一個強大的人工智能驅動的設備,而不需要一個“永遠在線”的麥克風。這不僅提供了一層隱私,而且還允許有意控制API令牌的使用(服務器代碼中限制為25個)。
本指南將引導您將ESP32,使用Gemini API和gTTS的Python服務器,I2S音頻放大器和OLED顯示器集成到功能性語音助手中。
功能一覽
?離線操作:按鈕驅動的選擇預定義的提示可重復,麥克風自由交互。
?Gemini API集成:Python服務器使用Gemini進行智能文本響應。
?token - efficient:在Python服務器中故意設置輸出長度限制(25),以管理AI令牌消耗。
?文本到語音(TTS):通過gTTS庫生成實時音頻流。
?I2S音頻輸出:通過MAX98357A放大器和4歐姆揚聲器播放高質量聲音。
?視覺反饋:0.96英寸的OLED顯示屏和狀態(tài)led提供清晰的操作狀態(tài)(例如,“Thinking…”,“Speaking…”,“Ready”)。
它是如何工作的:系統(tǒng)架構
該項目采用客戶機-服務器體系結構。ESP32作為客戶端,處理用戶輸入和音頻輸出,而Python服務器管理AI和TTS處理。
?初始化:ESP32連接到Wi-Fi,顯示“Ready”,等待輸入。
?用戶輸入:
?“下一步”按鈕:循環(huán)通過存儲在ESP32上的預定義文本提示數(shù)組。
?“發(fā)言”按鈕:觸發(fā)發(fā)言過程。當前選擇的提示符通過HTTP GET請求發(fā)送到Python服務器。
?Python服務器處理:
?接收到提示后,服務器將其發(fā)送到Gemini API。
?Gemini返回一個文本響應。然后將此響應截斷或過濾為預定義的長度,以保存AI令牌。
?處理后的文本被輸入到gTTS庫中,該庫生成一個音頻流。
?音頻回放:服務器將音頻流回ESP32。ESP32利用其I2S外設通過MAX98357A放大器和揚聲器播放該流。
?狀態(tài)更新:服務器通信時OLED顯示屏顯示“Thinking…”,音頻播放時顯示“Speaking…”,并有對應的LED指示燈。
它是如何制作的
硬件組件
?單片機:ESP32 Dev Kit C
?顯示:0.96英寸OLED顯示屏(SSD1306)
?音頻輸出:MAX98357A I2S d類放大器+ 8歐姆揚聲器
?用戶輸入:2個觸覺按鈕
?視覺提示:紅色和綠色led
?雜項:面包板,跳線,1A USB電源
接線圖和引腳
(所有接地引腳應接在共同接地軌上)
軟件設置:固件和服務器
該項目需要設置ESP32固件(使用Arduino IDE)和Python服務器。在這里獲取代碼。
1. ESP32固件安裝(Arduino IDE)
?安裝Arduino IDE并添加ESP32板管理器
?從Boards Manager中安裝esp32包。
?通過庫管理器安裝必要的庫:“Adafruit GFX庫”和“Adafruit SSD1306庫”。
?上傳提供的固件代碼(確保更新了Wi-Fi憑據(jù))。
2. Python服務器設置
?確保安裝了Python 3。
?創(chuàng)建并激活虛擬環(huán)境。
?安裝依賴:pip Install -r requirements.txt
?使用GEMINI_API_KEY="YOUR_API_KEY_HERE"創(chuàng)建a.e env文件。
?運行server: python server.py。
結論和未來的改進
該項目為構建交互式AI驅動硬件提供了堅實的基礎。它突出了將現(xiàn)成的微控制器與強大的AI API和高效的TTS解決方案相結合的能力。未來的增強可能包括添加更復雜的提示管理、基于web的配置界面,甚至與本地語音模型集成,以實現(xiàn)完全的氣隙操作。
本文編譯自hackster.io





