如何使用命令行进行文本转语音输出?

如何通过使用命令行从输入的文本中获取语音输出?
同时还可以使用简单的命令来更改语速、音调、音量等功能。

1可能是如何安装和使用文本转语音软件?的重复问题。 - Organic Addict
12023年更新:这两个听起来非常自然:Mycroft的模仿和Coqui-ai TTS。在我的回答中查看YouTube上7种TTS的比较:https://askubuntu.com/a/1447599/795299 - alchemy
15个回答

按照降序排列的流行程度
  • say使用GNUstep语音引擎将文本转换为可听的语音。

    sudo apt-get install gnustep-gui-runtime
    say "hello"
    
  • festival通用多语言语音合成系统。

    sudo apt-get install festival
    echo "hello" | festival --tts
    
  • spd-say向speech-dispatcher发送文本到语音输出请求

    sudo apt-get install speech-dispatcher
    spd-say "hello"
    
  • espeak是一个多语言软件语音合成器。

    sudo apt-get install espeak
    espeak "hello"
    

22spd-say 在14.04及以后的版本中似乎是预装的:http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest - Ciro Santilli OurBigBook.com
9还有sudo pip install gTTS,(Google Text to Speech/https://github.com/pndurette/gTTS),然后`gtts-cli "hello" -o hello.mp3你也可以将其导入到mpg123 -中。gtts-cli "why, hello there" | mpg123 -`。 - Elijah Lynn
很遗憾,spd-say似乎无法同时播放TTS,只能一次播放一个。 - phil294
@ElijahLynn 不工作 - Dims
espeak/spd-say 是制作梗最好的工具(其他工具甚至无法正确发音“梗”这个词)。据我所知,spd-say 使用 espeak 作为其后端引擎(声音听起来一样)。 - QwertyChouskie
上面提到的工具中有没有一个可以跨平台使用,比如Windows、Linux和Mac? - Wlad
1@Wlad http://espeak.sourceforge.net/download.html 是跨平台的(但最后一次发布是在2014年)。 - Sylvain Pineau

espeak是一个很好的小工具。
我喜欢在命令行中玩弄它。你可能会发现它与Pulseaudio冲突,所以我使用了一个冗长的版本,避免了必须正确设置它的麻烦。
sudo apt-get install espeak
espeak --stdout "this is a test" | paplay

espeak --help 命令可以显示调整阅读速度、音高、声音等选项。

当你在做笔记时,将它们保存为文本文件,然后执行以下操作:

echo "these are my notes" > text.txt
espeak --stdout -f text.txt > text.wav
paplay text.wav # you should hear "these are my notes"

你可以尝试使用ffmeg等工具将其从PCM压缩成更易处理的格式,比如MP3或OGG。但这是另外一个故事了。

1非常好,你还可以尝试使用图形用户界面来使用espeak,即espeak-gui。 - Sabacon
相比于Mac的文本转语音工具,这个真是太糟糕了。 - Snowcrash
@Snowcrash 好的...你可以自由选择其他的语音合成引擎,比如Mary-TTS,但是安装起来会相当麻烦:https://askubuntu.com/questions/981273/how-to-install-marytts-5-2/985734 - Oli

man spd-say中:
名称 spd-say - 向speech-dispatcher发送文本转语音输出请求
概要 spd-say [选项] "一些文本"
描述 spd-say将文本转语音输出请求发送给speech-dispatcher进程,该进程处理请求并理想地将结果输出到音频系统。
选项 -r, --rate 设置语音的速率(介于-100和+100之间,默认值:0)
-p, --pitch 设置语音的音调(介于-100和+100之间,默认值:0)
-i, --volume 设置语音的音量(强度)(介于-100和+100之间,默认值:0)
因此,您可以通过以下命令获得文本转语音:
spd-say "<type text>"

例:

spd-say "Welcome to Ubuntu Linux"

你还可以设置语速、音调、音量等等。请参阅 man-page。

4spd-say -t female2 "text" 让它变得可忍 - scorpiodawg

Python 谷歌语音:

pip install google_speech

google_speech "Test the hello world"

来自安卓的Svox:

apt-get install svox-pico

pico2wave --wave=test.wav "Test the hello world"
play test.wav

Svox Nanotts:

git clone https://github.com/gmn/nanotts.git
cd nanotts
make

./nanotts -v en-US "Test the hello world"

链接资源:语音合成器比较 发布来源:Linuxhacks.org 披露:我是Linuxhacks.org的所有者。

2在Ubuntu 18.04上安装和使用google_speech,我需要安装python3-piplibsox-fmt-mp3,然后使用pip3 install google_speech - artm

Mbrola从11.10开始无法使用。

SVOX(pico)工具容易安装,易于使用,并在Ubuntu中提供良好质量的语音。安装它:

sudo apt-get install libttspico0 libttspico-utils libttspico-data

更加简单的是,您可以使用LibreOffice与SVOX(pico)工具相结合,通过安装"Read Text"扩展来获得这个优秀的TTS软件的“GUI”:

设置Read Text扩展的选项,方法是在工具 - 插件 - 读取选择...中使用/usr/bin/python作为外部程序。选择一个包含令牌(PICO_READ_TEXT_PY)的命令行选项。


SVOX pico2wave

这是我使用的工具。它听起来很自然,容易理解,并且能够识别单位(米、摄氏度、千克等)。

这里是我关于pico2wave的第一篇文章。

你只需要做以下几步:打开Ubuntu软件中心,搜索"pico"。你会找到4或5个带有"Small Footprint Ling..."的条目。安装它们。

pico2wave的一个可能用途在我的第一篇文章中有描述(点击上面的链接查看)。


我已经使用了你的方法,能否请你告诉我如何通过你的方法获得一个自然甜美的女声? - user49557

还有另一个 espeak 图形界面:gespeaker。它同时使用了 espeak 和 mbrola 引擎。此外,它比 espeak-gui 还有更多选项。

以下不是一个自由开源软件解决方案,但你可能会觉得它值得一试(这是一个wine解决方案)。
我个人非常喜欢TTS,经常使用它...比如听一些漫无边际的讲话,否则我根本不会耐心听下去(因为我需要再来杯咖啡... :))
在这个过程中,我发现了一些事情...或者说,我没有发现的事情...坦率地说:我尝试过的每一个自由开源软件的TTS语音软件都不够好,因此不适合长时间倾听...
我目前使用的是ATnT的NaturalVoices。它只适用于Windows(也许还有Mac),但在Ubuntu上可以通过wine运行...(有时当我离开阅读器时,它会有一些小问题,需要点击面板。与从NatualVoices获得的语音质量相比,这只是一个小问题。)
对于一个半明智的听觉体验,我发现还有其他一些几乎必不可少的东西...
这些TTS程序并不智能(也许只有年轻的狒狒一样聪明),所以它们需要尽可能多的帮助。而且我发现只有一个阅读程序可以在这方面提供很大的帮助。这个应用程序叫做ReadPlease(2003 Pro)。它允许你特别修改要发音的单词和词组,按照你的意愿来发音。它并不完美,但对我来说,它使整个过程可用与否之间产生了巨大的差别。
自然语音中的语音“还行”,但有点无聊。还有其他好的产品,但不幸的是它们都是为Windows而设计的。有时候它表现得令人惊讶地好,但天哪,最初确实让人头疼!所以第二点就是耐心,以及频繁更新你的“特殊单词”列表。当我说耐心时,我的意思是你(我)实际上已经适应了我特定的狒狒式言辞模式:)顺便说一下,我目前有大约3000个单词,现在听起来足够“人类”,我再也不会因为听到它们而感到不安了。
3. “跟着弹动的球走”...由于语音永远无法达到真实讲话者的水平,有时候需要澄清一些事情。我使用的阅读程序有一个功能,即“选择当前正在朗读的单词”。很多阅读器都有这个功能,但ReadPlease将当前行完美地居中显示在屏幕上。这对于能够向前和向后看以快速重新阅读刚刚错过的内容非常有价值(所以自动居中显示当前行是很好的)。
那就是我的经验..我现在要去冲杯咖啡,一边喝咖啡一边听这个,看看它的“读音”如何... TTS对于发现拼写错误非常好(我经常打错字)...
如果有像ATnT NaturalVoices这样好的东西出现在Ubuntu软件库中,我会立刻使用它。
这里有一些Natural Voices的示例链接:我使用的是“MIke”。

对于“节日”(我觉得这个词听起来更自然):
sudo apt-get install festival
echo "hello" | festival --tts

调整音高和速度配置:
创建 ~/.festivalrc 文件,并将以下内容复制进去:
(Parameter.set 'Audio_Command "play -b 16 -c 1 -e signed-integer -r $SR -t raw $FILE tempo 1.5 pitch -100")
(Parameter.set 'Audio_Method 'Audio_Command)

另请参阅http://www.solomonson.com/content/ubuntu-linux-text-speech 更新:在另一台Ubuntu电脑上尝试。必须安装英语语音引擎软件包才能与Festival正常配合使用。
sudo apt-get install festvox-kallpc16k

也,play是一个随着sox软件包一起提供的命令行命令。
sudo apt-get install sox

尽管您已经接受了一个答案,我还想提到“节日”,我也非常喜欢它。这个在Ubuntu论坛上的帖子中有很多关于如何为其设置非常好听的声音的信息。