文字转语音或TTS系统将普通文字转换为语音。这项技术使系统可以用人类的声音说出文字。文本到语音转换的例子很多,例如公共交通工具上的公告,客户服务电话,智能手机中的语音助手或任何机器的导航菜单。您甚至可以在Microsoft Word中找到TTS,并在其中设置它以说出文档中写入的文字。
今天,在本教程中,我们将学习如何使用Arduino制作文本到语音转换器。以前,我们在语音闹钟中将TTS与Raspberry pi一起使用,还使用Google语音键盘在Raspberry pi中将语音转换为文本。
所述在TTS第一步是预处理或正常化。此步骤涉及将符号,数字和缩写转换为可以由“?”之类的机器读取的单词。将被转换为“问号”。
所述第二步骤包括归一化的文本转换成音素或语音转录。音素是口语的一小部分,即构成句子的声音。这一步非常重要,这样机器才能像人类一样讲单词。
在最后一步是合成音素到说话声音。此步骤可以通过不同的方法来实现,例如通过录制不同单词/短语的人类语音,或生成基本声音频率并将其堆积为音素,或复制人类的发音机制。
所需组件
- Arduino板
- 演讲者
- 放大电路
- 稳压电源
- 连接线
电路原理图
在此“文字转语音”转换器中,我们使用了放大器电路来降低噪声并获得清晰的声音。所述放大器电路是通过使用IC LM386制成。其电路图如下所示:
一个100K的电位器用于调节声音。调整它以获得清晰的声音。如果您对此电路有任何疑问,请查看基于LM386的音频放大器电路。如果您没有准确的电阻和电容值,请使用近似值。
将扬声器连接到Arduino
制作放大器电路后,连接非常容易。
将电源连接到放大器电路,并将Arduino的数字引脚3连接到10K电阻,并将Arduino的接地端连接到电路的接地端。现在,通过将扬声器的负极端子接地并将正极端子连接到220µF电容器来连接扬声器,然后连接电源。
为TTS编程Arduino(文本到语音)
这个基于Arduino的TTS的程序也非常容易,因为该库可供使用。该库称为对讲机,可以由库管理器添加。要添加库,请转到 Sketch-> Include Library-> Mange Libraries 。
现在,图书馆管理器将出现在您的屏幕上。在搜索栏中,键入Talkie,然后单击安装按钮。该库将被安装。
该库非常方便,它有1000多个单词和命令。它有几个示例,您可以尝试所有示例,但是这里我们使用一个简单的代码来解释其工作原理。
您还可以尝试库中提供的其他命令。要获取这些命令,请转到 Documents \ Arduino \ libraries \ Talkie \ src ,然后打开头文件并获取几个可用于不同警报的命令。还有许多其他TTS库,例如jscrane TTS库,google TTS库等。您也可以尝试一下。
因此,让我们开始编码。首先包括一些头文件。 Talkie.h 用于初始化此库并将Arduino的数字引脚3设置为输出引脚。该 Vocab_US_Large.h 时使用了我们所使用的警报和 Vocab_Special.h 时使用了我们所使用的暂停。
#include“ Talkie.h” #include“ Vocab_US_Large.h” #include“ Vocab_Special.h”
现在定义一个对象“值”以使用以下命令:
对讲机语音;
在这里,扬声器中会重复出现相同的消息,因此请保持 设置 功能为空,并将命令置于循环功能中。第一个命令 voice.say(spPAUSE2) 将在重复警报消息时暂停片刻。接下来的命令只不过是简单的暗示而已:DANGER DANGER STORM NORTH。
void setup(){ } void loop(){ voice.say(spPAUSE2); voice.say(sp2_DANGER); voice.say(sp2_DANGER); voice.say(sp3_STORM); voice.say(sp3_IN); voice.say(sp3_THE); voice.say(sp3_NORTH); }
最后将代码上传到Arduino,并为其连接电源。电路通电后,您将开始听到警报!如果没有清晰的声音,请尝试调节电位器的旋钮或检查Arduino是否获得正确的电源,并确保Arduino的GND连接到电路的接地。
使用下面的演示视频检查完整的代码。