Chinaunix首页 | 论坛 | 博客
  • 博客访问: 660847
  • 博文数量: 810
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5025
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 11:41
文章分类

全部博文(810)

文章存档

2011年(1)

2008年(809)

我的朋友

分类: LINUX

2008-08-22 11:54:26


也许已经有一部分人早就知道Festival这个语音合成软件,也就是所谓的TTS(texttospeech)。不过网上相关的安装资料大同小异,基本上是在Gentoo上安装的心得。我发现Ubuntu只有Festival,而没有相关的speechd软件。我经过一晚上的探索,终于可以把这个Festival玩转起来,而且有了一些比较好的效果,下面共享自己的经验出来。

安装基本上Ubuntu的库里就有Festival软件。
$sudoapt-getinstallfestival
使用Festival的基本用法:
交互模式:直接输入festival进入它的命令行界面。

$festival
festival〉(SayText”hello,festivaliscoming“)
festival〉(ttsmyfile)

第二行是读取myfile文件里的内容。
命令行模式:
$festival–ttsmyfile直接读取myfile里的内容。
$echo“hello,festivaliscoming”|festival–tts

读取字符串。

配置Festival默认用的是oss,在一些系统会独占音频。这里我们将配置成使用alsa发音。
新建文件~/.festivalrc,输入以下内容:

(Parameter.set‘Audio_Command“aplay-q-c1-traw-fs16-r$SR$FILE”)
(Parameter.set‘Audio_Method‘Audio_Command)

如果想提高音量,可添加:

(set!default_after_synth_hooks
(list(lambda(utt)(utt.wave.rescaleutt1.6t))))

至此festival应该比较好的工作了。在集成声卡中会出现音速过快的问题。

我找到了如何将语速恢复正常的方法。

主要是集成在主板上的声卡会出现语速过快的问题,解决方式是:

在/usr/lib/festival/目录下创建一个文件siteinit.scm,内容如下:

(Parameter.set‘Audio_Method‘Audio_Command)
(Parameter.set‘Audio_Command“sox-traw-sw-r$SR$FILE-c2-tossdsp/dev/dsp”)

这个参数写在~/.festivalrc上也是有效的。不过就和前面我设置用alsa发音的设置冲突了。那个alsa的设置好像也能把语速减慢一点吧。我这里提供方法。你自己看着选择了。

安装新语音这部分才是我写此文章的重要目的。因为在Gentoo的帖子,安装一个新的女声,只需要emergembrola。而在Ubuntu的库中并没有收录此包。(也许是我不知道,谁知道告诉我)另一个原因是,默认的美国男声似乎有些含糊不清。所以我找了mbrola的女声来安装(注意,不得用于商业用途,他说的)。

手动安装festivalmbrola的信息。

安装festivalvoicewrapper(这个咋翻译偶拿不准)下载festvox_us1.tar.gz,把它解压到festival的安装目录下,Ubuntu下为/usr/share/festival。

获取MBROLA声音文件和它的执行文件跳到,点击download,下载MBROLAbinary和你需要的声音文件。这里选择美国英语女声(forus1)。

安装MBROLAbinary,这里你应该下载到一个名为mbr301h.zip的文件。解压后把其中名为mbrola-linux-i386的文件改名为mbrola,再复制到/usr/local/bin目录中。

安装声音文件,这里你下载到的声音文件的文件名应该类似us1-980512.zip,把它解压到

[festival_install_dir]/festival/lib/voices/english/us1_mbrola
[festival_install_dir]为festival的安装目录。在Ubuntu下应为/usr/share/festival。

测试新的声音在执行完上面步骤后新的美国英语女声应该安装完毕。进入festival命令行测试一下:

festival)(voice_us1_mbrola)
festival)(SayText”hello,americanenglishfemalevoiceiscoming”)

在这里你应该听到优美的美国英语女声了吧。
更换默认声音如果想把上面的女声变成默认的声音,请在~/.festivalrc文件中添加:

(set!voice_default‘voice_us1_mbrola)

到这里比较完美了吧。

其它玩法当然你会因为一时好奇而装它。不过过一会之后就会想它会有什么用呢?我这里提供自己的一些玩法。

集成词典发音在我之前的vim技巧中有提到过sdcv这个词典翻译软件。它是星际译王的命令行版本。自从有了它之后我就再也没有打开过星际译王了。因为有需要就直接sdcv“word”就行了。当然默认它是没有将单词的读音读出来的。星际译王也有个100多M的语音库,但那个库是一个单词一个文件。只能读库里有语音文件的单词。所以我们可以写个脚本,让sdcv和festival绑定,这样学习英语来不是更形象嘛。

$catdict
#!/bin/sh

echo“$1”|festival–tts>/dev/null2>&1&
sdcv-n$1

使用dict代替sdcv,查询的单词无论怎样都会有读音。

读中文你在开玩笑吧。是的,基本上是个玩笑。中文语音合成国内863好象有项目。不过似乎没有给公共平台提供什么软件接口。这里你可以让festival读中文拼音,有外国人读中文的味道。(linuxsir上的网友发现的)

$echo“nihao,huanyinlaidaolinux”|festival–tts

读文章用它来读英文文章。但我想,对于我这程度,大概会把我逼疯。
当然如果你还有什么好的主意,欢迎告诉我。

后记:以上内容部分参考Gengoo里的HOWTO,对于转贴我很欢迎,但希望能保留原始出处。上面提到的下载mbrola文件的网站我用代理才能上。为免大家下载麻烦,我把下载的三个文件打好包了。

(文lerosua) 下载本文示例代码
阅读(1955) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~