自然的语音合成?

我正在寻找一些适用于Ubuntu的易于安装的文本转语音软件,声音要自然。我已经安装了Festival、Gespeaker等等,但是没有一个听起来很自然。都非常合成和难以理解。
有什么推荐吗?

1可能是重复的问题,可参考以下链接:如何安装和使用文本转语音软件? - Organic Addict
16个回答

SVOX pico2wave
sudo apt install libttspico-utils

一个非常简约的TTS,声音比espeak或mbrola(在我看来)更好听。一些信息这里
我不明白为什么与espeak或mbrola相比,pico2wave很少被讨论。它很小,但听起来真的很好(自然)。没有修改,你会听到一个自然的女声。
而且...与Mbrola相比,它可以识别单位,并且以正确的方式发音! 例如: - 2°C → 两度 - 2m → 两米 - 2kg → 两千克
安装后,我在脚本中使用它。
#!/bin/bash
pico2wave -w=/tmp/test.wav "$1"
aplay /tmp/test.wav
rm /tmp/test.wav

然后用所需的文本运行它。
<scriptname>.sh "hello world"

或者阅读整个文件的内容:
<scriptname>.sh "$(cat <filename>)"

这就是在Ubuntu上拥有一个轻量级、稳定的工作TTS所需的全部。

2就我所见,它只使用命令行参数作为输入。有没有办法让pico2wave从文件名中读取文本呢? - Carlos Eugenio Thompson Pinzón
17pico2wave在最新版本的Ubuntu中的软件包libttspico-utils中。@CarlosEugenioThompsonPinzón cat <filename> | xargs -I foo -0 pico2wave -w blah.wav foo - naught101
3@CarlosEugenioThompsonPinzón pico2wave -w a.wav "$(input.txt)" =). 我同意这个命令行界面设计得很糟糕:与绝大多数命令行界面不同,并且可能达到操作系统最大命令行参数长度 - Ciro Santilli OurBigBook.com
我已经安装了它,请告诉我如何在espeak中使用它,我无法理解。 - user49557
@user49557:这个回答与espeak无关。对于这个回答,你需要安装libttspico-utils软件包,然后运行pico2wave -w ~/output.wav "the text"命令。 - Koen
1@Koen 我不知道!:-) 像任何其他问题一样,尝试生成一个最小的示例,例如使用 echo {1..1000} - Ciro Santilli OurBigBook.com
@koen 谢谢,伙计,但是我还可以问你与此相关的更多问题吗? - user49557
1@user49557 我们不应该抢答别人的问题,所以也许你可以创建一个新的问题,解释一下你安装了什么,出了什么问题,然后我可以尽力帮助你(虽然不能保证,因为我不是专家 :P) - Koen
@user85321 我不明白为什么相比于espeak或mbrola,pico2wave很少被讨论。因为它的名字不太容易找到,但你完全正确,我尝试过它并与eSpeak进行了比较,确实好得多! - 2ndGAB
@2ndGAB,由于语法本身不支持文件,并且应该在两个步骤中使用(如shell中所解释的),而且pico2wave命令本身不支持管道,如果有人能提供关于管道的解决方法,那将是很好的。否则,这种朗读几乎与Prestigio的文本转语音一样流畅自然,没有被其他产品超越。 - user10089632
在Ubuntu 18.04上,当我要求其发音英语时,这听起来非常不自然。"Hello world"的发音成为"hee-low valud" :( - Martin Eden
1@MartinEden 这是因为在这个回答中,调用pico2wave的脚本行包含了选项-l=de-DE,导致它使用了德语语音。只需移除该选项,它将默认使用英语(美国)语音。鉴于回答和示例文本("hello world")都是英语而非德语,我将提出对此回答的修改建议。 - Jon Bentley
这太棒了,但我不知道我们如何将默认的Ubuntu TTS espeak替换为这个? - Binod Kalathil

Pico和espeak很有趣,也很容易使用,但它们并不是那么好。 默认的Festival语音也不算太好。然而,Festival是一个基于Scheme的语音框架,在这个框架上有许多研究者构建了更好的插件语音。在标准的Ubuntu上,你可以轻松超越pico2wave的质量,因为其中一个语音是作为一个现成的软件包提供的。
要让Festival听起来自然,请按照以下步骤进行:
sudo apt-get install festival
sudo apt-get install festvox-us-slt-hts
festival -i
festival> (voice_cmu_us_slt_arctic_hts) 
festival> (SayText "Don't hate me, I'm just doing my job!")

你可以通过命令行来完成,使用-b(或--batch)并将每个命令放在单引号中:
festival -b '(voice_cmu_us_slt_arctic_hts)' \
    '(SayText "The temperature is 22 degrees centigrade and there is a slight breeze from the west.")'

你可以从Nitech存储库中获取其他相当不错的声音,但安装它们有些麻烦,并且默认路径已更改,因此捆绑方案文件中的文件名引用可能需要手动编辑才能在标准Ubuntu上正常工作。

4顺便说一下,在Ubuntu 16.04中,这个软件包似乎缺失了。你可以从Debian下载并安装deb文件,它将正常工作:https://packages.debian.org/sid/all/festvox-us-slt-hts/download sudo dpkg -i Downloads/festvox-us-slt-hts_0.2010.10.25-2_all.deb - Jon Watte
比pico2wave好得多,可调节性更强,词语之间的分隔更好,定制性更佳,一步到位。使用pico时,我不得不减慢输出音频才能理解它。 - Berry Tsakala
@BerryTsakala 我刚刚将上面的脚本复制粘贴到了~/.bashrc文件中作为一个函数。我给这个函数取名为speak,现在我只需要使用speak "something to say"就可以完美地运行它了。 - WinEunuuchs2Unix
1OP要求自然流畅的TTS。Festival仍然有些机械化。 - Nav
1从bash中读取剪贴板内容的小命令:echo "(SayText \"$(xclip -selection clipboard -o)\")" | festival '(voice_cmu_us_slt_arctic_hts)' --pipe - Olle Härstedt
有没有办法将它转换为wav文件?它崩溃了,因为我的服务器没有音频输出... - jjxtra
@jjxtra 手册页面位于https://linux.die.net/man/1/festival,记录了命令的详细信息。您可以以--server模式运行。或者您可以使用festival命令语言合成一个话语并将其保存到磁盘上。另请参阅https://www.cstr.ed.ac.uk/projects/festival/manual/festival_7.html。 - Jon Watte
一个关于如何读取文本文件并能够暂停的示例也会很好。 - undefined

SpeakIt!

我相信我找到了免费的最佳TTS软件,使用了一个名为“SpeakIt”的Google Chrome扩展程序。这只在Ubuntu上的Chrome浏览器上运行,不知道为什么在Chromium上不起作用。SpeakIt提供了两个女声,与其他语音比较,听起来非常逼真。如果你在Chrome Web Store中使用“TTS”作为搜索查询,至少还有四种男声和女声的扩展可以选择。

使用方法: 用于网站。你可以高亮要朗读的文本,然后右键点击并选择“SpeakIt”,或者点击位于Chrome顶部栏的SpeakIt图标。


Firefox用户也有两个选择。在Firefox插件中,搜索TTS,你应该会找到“Click Speak”和“Text to Voice”。这些声音不如Chrome SpeakIt的声音好,但绝对可用。
SpeakIt扩展使用iSpeech技术,每年20美元的价格,该网站可以将文本转换为MP3音频文件。您可以输入文本、URL、RSS订阅源,以及TXT、DOC和PDF等文档,并输出为MP3。您可以制作播客、嵌入音频等。这是一个链接,这是他们音频的示例(不知道链接能持续多久)。

4很不幸,没有任何浏览器选项适用于PDF文件。你有遇到可以做到这一点的吗?我想能够选择段落从PDF中阅读(即不必把片段粘贴到终端或其他地方)。 - James Owers
1这个扩展在我的Chromium 50.0.2661.94上使用Debian 8.4很好用!我特别喜欢英文女声。我唯一的抱怨是它在逗号上停顿时间太长了。 - mulllhausen
它经常发音错误,而且发送文本需要时间,因为它会将文本发送到另一个服务器,而不是直接使用您自己的系统。 - Goddard
链接已损坏。 - steoiatsl
输出与Voicerss相比很差 - 非常机械化。 - Michael

简单的Google™ TTS

项目页面更新2016):目前该项目未得到维护,并将在可预见的未来保持这种状态


因为没有更好的选择,我写了一个bash脚本,与Michal Fapso的perl脚本进行交互,通过Google翻译提供TTS(文本转语音)功能。根据项目描述:

目的是通过Google的语音合成系统提供一个易于使用的文本转语音输出接口。当没有网络连接时,使用pico2wave作为备选方案自动提供TTS合成。

目前,该包装器支持从标准输入、纯文本文件和X选择(高亮文本)读取。

主要特点包括:

  • 通过Google翻译进行在线TTS合成
  • 通过pico2wave进行离线TTS合成
  • 支持多种不同语言
  • 可以从命令行界面、文本文件和高亮文本读取
  • 支持以固定格式阅读高亮文本(例如PDF文件)

安装和使用方法详见项目页面

如果你愿意尝试一下,我会很高兴的。欢迎提供错误报告和任何其他反馈意见

这绝对是我见过的最酷的项目之一。真是太厉害了。 - user525989
6这个不再维护了。 - Goddard

我为Ubuntu寻找了各种文本转语音的高质量工具,但没有找到。由于我的声带瘫痪,我需要TTS(文本转语音)来给我的Ubuntu 视频添加语音说明。你可以在这里购买商业高质量的Linux文本转语音软件,但价格非常昂贵。最后我选择购买了适用于Windows的自然阅读器(无法在Ubuntu上通过Wine运行),售价为40美元。也许以后我会考虑购买Linux版本。


兄弟,上周我还在用的,至少有5、6个,可是现在怎么找也找不到了。真是爱死我们的社区了。 - mchid
1Textaloud有关于如何在Wine下使用他们的产品的说明。请参考http://nextup.com/forum/viewtopic.php?t=3349。我相信Cepstral也有一个适用于Linux的版本。但是我一直无法让我最喜欢的软件Balabolka正常工作。我安装了Windows 10主要是为了TTS处理。MS David很好,与Cepstral David类似。如果你有Windows 10,前者是免费的。 - Bhikkhu Subhuti

Piper

一个快速、本地的神经网络文本转语音系统。请查看项目网站以获取安装、下载声音和使用方法。例如:

echo 'Welcome to the world of speech synthesis!' | \
  ./piper --model blizzard_lessac-medium.onnx --output_file welcome.wav

gTTS, Google 文字转语音

gTTS 是一个用于与 Google 翻译的文字转语音 API 进行交互的 Python 库和命令行工具。它可以将语音 mp3 数据写入文件、写入类似文件的对象(字节串)以进行进一步的音频处理,或者写入 stdout

缺点:仅支持命令行界面。需要在线使用,因为它需要向 Google 的公共开放端点发送请求。

sudo -H pip install gTTS  # Install

使用方法
gtts-cli 'hello' --output hello.mp3
gtts-cli -l es 'Nadie es patria, todos lo somos' | play -t mp3 -

文档和更多示例

其他

有些已经提到过了


我一直在研究最好听且易于调整的文本转语音声音。以下是我认为声音质量最好的前5个产品的列表。这些产品的大多数网站都有互动演示,可以让您自行判断。
1. NeoSpeech 2. iVona 3. Acapela 4. AT&T自然语音 5. CereProc Voices

3有适用于Linux的版本吗?我不认为有。 - Mehdi Khademloo

我发现Nitech HTS音频在节日中非常自然和令人安心,比我听过的其他声音更好。点击此链接了解如何使用festival设置Nitech和其他声音。我还没有找到一个好的图形界面,可以用来配置这些声音,但是通过festival.scm进行设置仍然有效。那篇文章很旧了,你可能想要使用"locate festival"命令找到实际的安装目录。

看起来很不错。在这里找到了演示 http://www.cstr.ed.ac.uk/projects/festival/onlinedemo.html - Iacchus
2是的,Nitech的声音确实比其他节日声音要好得多(除了CMU的声音,它们也非常好)。可惜安装起来有些困难。 在Ubuntu中有一个默认包含的好的CMU语音,叫做cmu_us_slt_arctic_hts,它包含在festvox-us-slt-hts这个软件包中。 它比pico或espeak好得多! - Jon Watte

将SVOX工具(pico)与LibreOffice结合使用:
在Ubuntu中,安装SVOX(pico)工具非常简单,并且提供了高质量的语音。请按照以下步骤进行安装:
sudo apt-get install libttspico0 libttspico-utils libttspico-data

你可以在安装了"Read Text" extension的情况下,将LibreOffice与SVOX(pico)工具结合使用,并获得这个优秀的TTS软件的“GUI”界面:
通过工具 - 插件 - 读取选项...设置Read Text扩展的选项。将/usr/bin/python作为外部程序。选择一个包含(PICO_READ_TEXT_PY)标记的命令行选项,你可以尝试其中一些。
现在,你只需要在LO Writer、Calc、Impress或Draw中选择一些文本,然后点击添加为工具栏的图标(一个带有气球的笑脸)。

这是我为了在pdf和其他文本文件中获得纯自然语音所做的操作(其他解决方案要么不自然,要么是付费服务)。实际上,这是使用Chromium或Chrome的一个变通方法,速度快且简单。
1. 在您的Chrome或Chromium上安装SpeakIt!扩展程序。 2. 如果您使用的是Chromium(Chrome已经有免费的PDF阅读器),请安装PDF Viewer并在Chromium的扩展程序设置中勾选“允许在隐身模式下”和“允许访问文件URL”的选项。 3. 将您的PDF文件拖放到浏览器中。 4. 现在,选择一些文本,右键点击并选择SpeakIt!,这样您就可以听到纯自然的文本转语音。
还有其他方法可以在Chrome中打开.doc和.txt等其他文件,并进行相同的操作。Chrome还有其他查看PDF文件的扩展程序,可以检查哪个更适合您。此外,您可以上传各种文本到Google Drive,并使用SpeakIt!为您朗读它们。另一个名为“Speak text”的扩展程序也是同样的方式,并具有自然语音。

你能详细说明如何让SpeakIt朗读保存在Google Drive中的PDF文件吗? - Marco Lackovic