当前位置:首页 > 物联网 > IoT设计分享
[导读]文本转语音(TTS)技术已被广泛应用于语音助手、广播、自动取款机等领域。它也被用来帮助儿童学习说话和盲人交流。今天我们将使用ESP32来构建一个TTS(文本到语音)引擎,它可以将任何数字转换为语音。号码将从网页输入,语音将从ESP32附带的扬声器生成。也可以查看其他基于ESP32的物联网项目。

文本转语音(TTS)技术已被广泛应用于语音助手、广播、自动取款机等领域。它也被用来帮助儿童学习说话和盲人交流。今天我们将使用ESP32来构建一个TTS(文本到语音)引擎,它可以将任何数字转换为语音。号码将从网页输入,语音将从ESP32附带的扬声器生成。也可以查看其他基于ESP32的物联网项目。

所需的组件

•ESP32单片机

•一个演讲者

•一种放大电路

•稳压电源

•连接电线

线路图

我们可以通过将扬声器连接到ESP32直接驱动扬声器,但声音会有很多噪音。因此,这里使用放大器电路来获得清晰响亮的声音。这里使用的是基于LM386的放大电路,其电路图如下:

这个电路图取自这个链接LM386基于音频放大器电路,通过这个链接了解更多关于这个放大器的功能。

连接扬声器到ESP32

完成上述放大电路后,将ESP32连接到放大电路上,如下图所示。ESP32的数字引脚25连接到10K电阻,ESP32的地连接到放大电路的地。

ESP32文本到语音的编程

使用ESP32将文本转换为语音的编程部分很简单。完整的代码和演示视频在本教程的最后给出。

首先,我们必须安装一个名为Talkie的库,它可以从这里下载。然后通过Sketch->Include Library-> add . zip Library将其添加到Arduino IDE中。

然后通过包含所有必需的库开始编写代码。“Wifi.h”、“WifiClient.h”用于创建客户端,通过Wi-Fi连接到ISP。WebServer.h用于创建web服务器,espmdn .h用于本地mDNS请求。

接下来为Talkie定义对象语音。

在下一部分中,我们将定义数字(即1、2、3等)。你也可以添加更多的单词/音素,通过记录每个声音并将其转换为十六进制代码。有各种软件可用于将它们转换为十六进制,如二进制查看器。

现在定义一个函数,它可以输出-999,999到999,999之间的任何数字。这个函数可以在Talkie库中找到。这个函数使用简单的逻辑。首先,它会检查数字是否为负,如果是负的,它会在说出单词之前加上一个“-”。如果它是零,那么它说的是零。

然后它检查这个数字是否大于或等于千,这样它就可以在输入之前附加“千”。然后,它通过将数字除以1000来检查余数,以告诉1000之后的数字。同样的逻辑用于百位数或三位数。

现在设置Wi-Fi。在代码中输入替换Wi-Fi的名称和密码。因为我们使用的是HTTP协议,所以我们在server()函数中输入80。因为80是HTTP的默认端口号。

现在定义一个数组htmlResponse来获取来自网页的输入。

接下来定义一个函数handleRoot()来创建一个html页面。snprintf()函数用于生成其中编码的html页面。现在,通过将htmlResponse数组及其大小传递给它,开始对html页面进行编码。首先给标题命名为“文本到语音”。然后在HTML中创建文本框和按钮。

接下来编写JavaScript代码。首先为我们正在获取的输入定义一个变量Number,然后将文本框中输入的值赋给Number。最后将网页发送到服务器。

在下一部分中定义一个函数handleSave()。这里我们把字符串转换成整型,因为我们得到的输入是一个字符串,为了把它说出来,我们必须把它作为整型来使用。

现在在setup()函数中,首先,我们将数字引脚25定义为输出并保持高电平。然后使用Wifi.begin()函数初始化Wi-Fi,并打印一些状态信息。然后在接下来的几行中,我们通过调用handleRoot()函数启动服务器,并通过调用handleSave()函数从web页面获取输入,最后打印消息“HTTP服务器已启动”。

文本到语音转换使用ESP32通过网页

最后使用Arduino IDE将代码上传到ESP32并运行。打开串口监视器,复制串口监视器显示的IP地址,如下图所示。

网页看起来是这样的:

输入任意号码,点击“说话”按钮,系统就会说出该号码。

这就是ESP32如何将文本转换为语音,这个网页可以在世界任何地方通过转发Wi-Fi路由器的端口打开。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭