基于ESP32的文本到語音(TTS)轉(zhuǎn)換web服務(wù)器
文本轉(zhuǎn)語音(TTS)技術(shù)已被廣泛應(yīng)用于語音助手、廣播、自動取款機等領(lǐng)域。它也被用來幫助兒童學(xué)習(xí)說話和盲人交流。今天我們將使用ESP32來構(gòu)建一個TTS(文本到語音)引擎,它可以將任何數(shù)字轉(zhuǎn)換為語音。號碼將從網(wǎng)頁輸入,語音將從ESP32附帶的揚聲器生成。也可以查看其他基于ESP32的物聯(lián)網(wǎng)項目。
所需的組件
?ESP32單片機
?一個演講者
?一種放大電路
?穩(wěn)壓電源
?連接電線
線路圖
我們可以通過將揚聲器連接到ESP32直接驅(qū)動揚聲器,但聲音會有很多噪音。因此,這里使用放大器電路來獲得清晰響亮的聲音。這里使用的是基于LM386的放大電路,其電路圖如下:
這個電路圖取自這個鏈接LM386基于音頻放大器電路,通過這個鏈接了解更多關(guān)于這個放大器的功能。
連接揚聲器到ESP32
完成上述放大電路后,將ESP32連接到放大電路上,如下圖所示。ESP32的數(shù)字引腳25連接到10K電阻,ESP32的地連接到放大電路的地。
ESP32文本到語音的編程
使用ESP32將文本轉(zhuǎn)換為語音的編程部分很簡單。完整的代碼和演示視頻在本教程的最后給出。
首先,我們必須安裝一個名為Talkie的庫,它可以從這里下載。然后通過Sketch->Include Library-> add . zip Library將其添加到Arduino IDE中。
然后通過包含所有必需的庫開始編寫代碼?!癢ifi.h”、“WifiClient.h”用于創(chuàng)建客戶端,通過Wi-Fi連接到ISP。WebServer.h用于創(chuàng)建web服務(wù)器,espmdn .h用于本地mDNS請求。
接下來為Talkie定義對象語音。
在下一部分中,我們將定義數(shù)字(即1、2、3等)。你也可以添加更多的單詞/音素,通過記錄每個聲音并將其轉(zhuǎn)換為十六進制代碼。有各種軟件可用于將它們轉(zhuǎn)換為十六進制,如二進制查看器。
現(xiàn)在定義一個函數(shù),它可以輸出-999,999到999,999之間的任何數(shù)字。這個函數(shù)可以在Talkie庫中找到。這個函數(shù)使用簡單的邏輯。首先,它會檢查數(shù)字是否為負,如果是負的,它會在說出單詞之前加上一個“-”。如果它是零,那么它說的是零。
然后它檢查這個數(shù)字是否大于或等于千,這樣它就可以在輸入之前附加“千”。然后,它通過將數(shù)字除以1000來檢查余數(shù),以告訴1000之后的數(shù)字。同樣的邏輯用于百位數(shù)或三位數(shù)。
現(xiàn)在設(shè)置Wi-Fi。在代碼中輸入替換Wi-Fi的名稱和密碼。因為我們使用的是HTTP協(xié)議,所以我們在server()函數(shù)中輸入80。因為80是HTTP的默認端口號。
現(xiàn)在定義一個數(shù)組htmlResponse來獲取來自網(wǎng)頁的輸入。
接下來定義一個函數(shù)handleRoot()來創(chuàng)建一個html頁面。snprintf()函數(shù)用于生成其中編碼的html頁面?,F(xiàn)在,通過將htmlResponse數(shù)組及其大小傳遞給它,開始對html頁面進行編碼。首先給標題命名為“文本到語音”。然后在HTML中創(chuàng)建文本框和按鈕。
接下來編寫JavaScript代碼。首先為我們正在獲取的輸入定義一個變量Number,然后將文本框中輸入的值賦給Number。最后將網(wǎng)頁發(fā)送到服務(wù)器。
在下一部分中定義一個函數(shù)handleSave()。這里我們把字符串轉(zhuǎn)換成整型,因為我們得到的輸入是一個字符串,為了把它說出來,我們必須把它作為整型來使用。
現(xiàn)在在setup()函數(shù)中,首先,我們將數(shù)字引腳25定義為輸出并保持高電平。然后使用Wifi.begin()函數(shù)初始化Wi-Fi,并打印一些狀態(tài)信息。然后在接下來的幾行中,我們通過調(diào)用handleRoot()函數(shù)啟動服務(wù)器,并通過調(diào)用handleSave()函數(shù)從web頁面獲取輸入,最后打印消息“HTTP服務(wù)器已啟動”。
文本到語音轉(zhuǎn)換使用ESP32通過網(wǎng)頁
最后使用Arduino IDE將代碼上傳到ESP32并運行。打開串口監(jiān)視器,復(fù)制串口監(jiān)視器顯示的IP地址,如下圖所示。
網(wǎng)頁看起來是這樣的:
輸入任意號碼,點擊“說話”按鈕,系統(tǒng)就會說出該號碼。
這就是ESP32如何將文本轉(zhuǎn)換為語音,這個網(wǎng)頁可以在世界任何地方通過轉(zhuǎn)發(fā)Wi-Fi路由器的端口打開。
本文編譯自iotdesignpro