如何使Raspberry Pi使用eSpeak读取文本。
注释ⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
在计算中,用户界面问题可能是最复杂的问题之一。那,命名事物,并使缓存无效…
从计算机向人类呈现信息的最简单方法通常是使用视觉。但是为此,您需要一个笨重,昂贵的屏幕,因此不太适合车载使用。
在本教程中,我们将通过让Raspberry Pi使用称为“文本转语音”的eSpeak软件说文本来了解如何使用用户的听力而不是他们的视线。
使Raspberry Pi说话的硬件
为了使您的Raspberry Pi说话,我们需要以下设备:
在Raspberry Pi上安装eSpeak
为了使您的Raspberry Pi说话,我们将使用eSpeak软件,这是一种开源的文本转语音软件。
eSpeak的原理如下:您给它一些文本(字符串,文件等),然后将其拆分为音素(构成口语的最小声音),然后使用整套将这些音素转换为真实声音文件的技术。
要在Raspberry Pi上安装eSpeak,这非常简单,因为它已经存在于存储库中。因此,我们只需要更新存储库并要求安装eSpeak:
sudo apt update sudo apt install espeak -y
使用eSpeak阅读句子
现在已经安装了eSpeak,我们将能够使它阅读第一句话。但是在此之前,我们将确保声音从Raspberry Pi的Jack端口输出,并到达扬声器。
为此,请运行sudo raspi-config命令,然后转到“高级选项”,“音频”,“强制3.5毫米('耳机')插孔”,最后是“完成”。
我们将创建一个文件夹 espeak
在用户目录中下载音频文件并播放它,以验证一切是否正常:
mkdir /home/pi/espeak cd /home/pi/espeak wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3 ffplay -nodisp test.mp3
您应该会听到C大调演奏。
现在我们知道发言人正在工作,我们将要求eSpeak说一句“覆盆子栖息在祖父的凳子上。” 为此,我们使用以下命令:
espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
这给了我们这样的东西…
让我们仔细研究一下命令以了解以下内容:
espeak
启动espeak计划-a 200
指示用于声音的音量。取值范围是0〜200,缺省值是100。-v fr+f3
告诉我们使用的语言。fr
对应于法语,+f3
表示我们要使用eSpeak提出的女性语音的第三个变体。切记使语言代码适应您的文本。- 引号中的句子是eSpeak所说的。相反,我们也可以要求它随便读取一个文本文件。
-f le_chemin/du/fichier.txt
。 --stdout
告诉eSpeak,它应该直接将生成的数据发送到终端的标准输出,而不是直接播放音频。| aplay
表示eSpeak生成的输出将重定向到aplay程序的输入,该程序是一种以Wave格式播放音频文件的程序,该程序是eSpeak生成的。请注意,相反,我们可以使用> mon_fichier.wav
将音频输出保存到文件。
如您所见,不是eSpeak,而是播放声音的播放器。原因很简单,espeak已在某些版本的Raspberry Pi上被窃听…
如果您尝试直接使eSpeak讲话,则会出现与Raspberry Pi声音服务器Alsa有关的错误。因此,最简单的解决方案是将数据发送到播放,播放本身就可以完美运行。最终,它起作用了,这就是一切。
通过在Raspberry上安装MBROLA来提高eSpeak的声音。
如您所见,eSpeak发出的声音绝对是肮脏的。不要惊慌,我们有解决方案来改善这一点。
我在文章开头提到了它,eSpeak能够生成音素,这些声音构成了一种口头语言。而且,事实证明,还有其他程序可以读取和发音这些音素,并且比eSpeak更具说服力!
在我们的案例中,我们将使用MBROLA软件,这是一个由比利时蒙斯理工学院发起的全球合作项目,旨在设计一个庞大的语音合成数据库。
奇怪的是,MBROLA软件在Raspbian存储库中不可用,而语言数据却可用。结果导致无法安装这些语言数据…
不用担心,我们有解决方案!确实,善良的灵魂足以为Raspberry Pi自己创建MBROLA包,因此我们决定在该站点上创建镜像。
因此,我们将使用以下命令下载并安装此软件包:
cd ~/espeak wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb sudo dpkg -i mbrola.deb
现在已经安装了MBROLA,我们将能够下载所需的语言文件。所以对我来说 mbrola-fr1
,这是第一个法语声音。使命令适应您的语言。
sudo apt install mbrola-fr1 -y
现在,我们所要做的就是接受我们以前的eSpeak指令,并对其进行调整以生成音素,并由MBROLA读取它们。这将给我们下面的命令。
espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
给我们下面的音频:
您会发现一些与以前相同的设置,但有两个更改:
-v mb-fr1
表示我们要使用MBROLA生成音频文件mb
,以及法语语音号码1-fr1
。-s 150
向他指示我们何时要以每分钟150个单词的速度生成文件。默认值为165,但我发现它有点快,至少对于法语而言。
和以前一样,您当然可以修改命令以创建文件,从txt文件读取文本等。
通过将这些命令与读取RFID标签之类的东西结合起来,您可以轻松创建具有相对完整接口的车载系统。
当然,我们离人类的声音还很遥远,并且知道有更好的“文本到语音”引擎,例如作为Common Voice项目一部分开发的Mozilla的TTS。 尽管如此,MBROLA和eSpeak在易用性,执行速度和效率之间提供了很好的折衷方案。