文本转换成语音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本转换成语音相关的知识,希望对你有一定的参考价值。

“让别人读书给你听”,在某些情况下是一种需求。从程序员的角度来说,就是要把“人”换成“程序”,让程序来朗读文字。满足这个需求的关键技术点,是“文本转换成语音”,简称TTS。

这次介绍的,并不是TTS实现的原理,而是TTS的应用,也就是基于特定的库或开源项目的使用。对于原理的东西,小程在准备好理论的知识后再尝试讲解清楚。

TTS的实现,有不少项目,这里介绍的是eSpeak。

本文介绍如何通过eSpeak来实现文本转换成语音的功能。

eSpeak是一个语音生成(合成)器,它的官网地址是:
<http://espeak.sourceforge.net/>;

在官网上,可以看到eSpeak的介绍是这样的:
技术分享图片

eSpeak的可执行程序的下载页面是:
<http://espeak.sourceforge.net/download.html>;

在下载页面选择相应平台的程序包,下载,解压后,可以看到这样的程序目录结构:
技术分享图片

小程下载的是mac平台的eSpeak-1.45.04版本。

在执行eSpeak之前,有什么准备工作要做吗?小程觉得,有几个知识点是要注意到的:

* 在eSpeak目录下面找到speek,这个是命令行的可执行程序,通过运行它来实现功能。读者也可以给它设置一个环境变量,这样就可以在任何路径都能执行到这个程序。

* 目录espeak-data,是语音包,支持什么语言,就看这个目录下面有什么内容了。

* 执行speek程序时,可以用参数--path来指定speek使用的语音包,如果没有指定,则默认在/usr/share目录下面查找espeak-data,如果找不到会提示出错。

* 读者需要安装portaudio,因为eSpeak依赖这个库。小程在装备其它环境时,就已经顺带安装过portaudio了,读者可以按照下面这个引导来安装portaudio:

portaudio是一个跨平台的音频输入输出库。在安装portaudio之前,如果是在macos上,则先要安装好xcode,并且保证“command line developer tools”已经安装上,因为需要使用xcode的编译器来make install。可以使用命令xcode-select --install来检测是否已经安装好command line developer tools,如果没有就按提示安装。

然后用brew来安装portaudio:
brew install portaudio

其中,espeak-data是语音包。小程再重点介绍下它里面的内容,可以参考下面几个eSpeak程序目录的截图:
技术分享图片
技术分享图片

一切准备就绪之后,就可以执行speak命令行程序了。

speak的功能,就是把文本读出来,或把“读出来”的语音保存成wav文件。

至于,读什么文本(从哪里读)、以什么语言读、以什么语速读(等等),都可以通过参数来设置。

可以先看一下eSpeak有什么样的参数(./speak -h):
技术分享图片

了解这些参数后,就可以执行speak来“朗读”了,比如:

./speak -stdout "1 2 3 4 5 6 7" --path="./" -s 200 -v zh+f5
表示以中文女声来数数,指定了语音包的位置,以及朗读的速度。

再比如这些命令的截图:
技术分享图片
技术分享图片
技术分享图片

小程在macos上,下载下来的espeak,默认就支持中文语音即zh。但对于粤语,虽然在语音包中有zh-yue文件,但执行时听不到声音(espeak-1.45.04版本),小程没有细究其中的原因。

最后,小程先让eSpeak“读出”一个wav文件,再让读者听一听,命令如下:

./speak -stdio "1 2 3 4 5 6 7 多劳多得!欢迎关注广州小程微信公众号" --path="./" -s 140 -v zh+f5 -w "welcome.wav"

读者如果是在微信公众号(广州小程)打开这篇文章,那可以听一下以下的wav文件(小程上传的文件)。


总结一下,本文介绍了如何使用eSpeak来做到“读出”文本,主要是一些参数的了解与使用,难度系数为低。

以上是关于文本转换成语音的主要内容,如果未能解决你的问题,请参考以下文章

python将文本转换成语音的代码

我怎么能在Python转换文本到语音

有没有一款可以自己输入文字内容,随后可以转换成语音

怎样将文字转换成语音文件

Python实力操作-网页正文转换语音文件

怎么把文字变成语音