Faire parler la Raspberry

如何使Raspberry Pi使用eSpeak读取文本。

更新 5 11 月 2019 - 0 注释 - , , ,

ⓘ 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上被窃听…

几行esbug错误。
而且,我的朋友,这就是我们所说的“错误” …

如果您尝试直接使eSpeak讲话,则会出现与Raspberry Pi声音服务器Alsa有关的错误。因此,最简单的解决方案是将数据发送到播放,播放本身就可以完美运行。最终,它起作用了,这就是一切。

通过在Raspberry上安装MBROLA来提高eSpeak的声音。

如您所见,eSpeak发出的声音绝对是肮脏的。不要惊慌,我们有解决方案来改善这一点。

我在文章开头提到了它,eSpeak能够生成音素,这些声音构成了一种口头语言。而且,事实证明,还有其他程序可以读取和发音这些音素,并且比eSpeak更具说服力!

在我们的案例中,我们将使用MBROLA软件,这是一个由比利时蒙斯理工学院发起的全球合作项目,旨在设计一个庞大的语音合成数据库。

奇怪的是,MBROLA软件在Raspbian存储库中不可用,而语言数据却可用。结果导致无法安装这些语言数据…

甚至Kevin Hart都发现它有故障!
什么啊

不用担心,我们有解决方案!确实,善良的灵魂足以为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在易用性,执行速度和效率之间提供了很好的折衷方案。

Notez cet article.
分享
通讯
作者:
Raspberry Pi FR
加入Raspberry Pi社区
一台售价35美元的计算机已经售出了1000万本
购买新的RASPBERRY PI 4
相关教程
从Windows和Mac读取Raspberry SD卡的Linux分区。 Raspberry Pi,如何从USB钥匙或外部硬盘驱动器启动。 使用Raspberry Pi Imager从Windows,Mac或Linux创建SD卡。 使用树莓派和桑巴创建 SIN。 如何使用Raspberry Pi控制伺服电机
没有评论

分享
订阅电子报
订阅新闻通讯。
你喜欢这篇文章吗 ?
订阅并保持最新状态!