< >
Home » Ubuntu系统入门教程 » Ubuntu系统入门教程-整合Festival实现文本-語音(TTS)合成

Ubuntu系统入门教程-整合Festival实现文本-語音(TTS)合成

Ubuntu系统入门教程-安装Festival实现文本-語音(TTS)合成

说明:

  • 介绍如何安装Festival实现文本-語音(TTS)合成
  • 测试环境:ubuntu20.04
  • 相关软件语音包,可以从百度下载,提取码:5v6d

步骤:

  • 安装festival及相关包
sudo apt install festival festlex-cmu festlex-poslex festlex-oald 

测试

  • 命令实现文字转为语音输入
echo "It's such a beautiful day! Why are you in front of the computer?" | festival --tts
date '+%A, %B %e, %Y' | festival --tts
  • 命令实现文字保存为语音文件
echo "It's such a beautiful day! Why are you in front of the computer?" | text2wave -scale 50 -o beautiful_day.wav
date '+%A, %B %e, %Y' | text2wave -scale 50 -o date.wav
  • 在festival提示符下执行
$ festival

Festival Speech Synthesis System 2.5.0:release December 2017
Copyright (C) University of Edinburgh, 1996-2010. All rights reserved.

clunits: Copyright (C) University of Edinburgh and CMU 1997-2010
clustergen_engine: Copyright (C) Carnegie Mellon University 2005-2017
hts_engine: 
The HMM-Based Speech Synthesis Engine "hts_engine API"
hts_engine API version 1.07 (http://hts-engine.sourceforge.net/)
Copyright (C) The HMM-Based Speech Synthesis Engine "hts_engine API"
Version 1.07 (http://hts-engine.sourceforge.net/)
Copyright (C) 2001-2012 Nagoya Institute of Technology
              2001-2008 Tokyo Institute of Technology
All rights reserved.

All rights reserved.
For details type `(festival_warranty)'
festival> (SayText "Hello")
#<Utterance 0x7fc06a4258b0>

安装标准 Festvox 双音素声音

  • 这些声音由 Festvox 项目提供,有些声音有 8k 和 16k 版本。
  • 这是音频合成的输出频率。 16k 版本具有更高质量的输出和更好的声音。
  • 四种英语语音是:
sudo apt install festvox-don festvox-rablpc16k festvox-kallpc16k festvox-kdlpc16k

安装增强的 MBROLA 声音

  • 这些声音由 MBROLA 项目提供,该项目由比利时 Faculté Polytechnique de Mons 的 TCTS 实验室运营。
  • 更多语音库查看github地址使用说明
  • 它们提供多种语言的多种声音,听起来比 Festvox 双音素声音好得多
  • 要使用 MBROLA 语音,我们需要三个部分
  • (1.) 安装mbrola,它解析Festival程序提供的令牌流并将音频数据返回给Festival
  • (2.) MBROLA 语音
  • (3.) Festvox 包装器让Festival使用声音。
  • 安装mbrola
sudo apt install mbrola 
  • 下载us语音包
wget -c https://bitbucket.csiro.au/projects/CASSSOFT/repos/cs-studio/raw/applications/plugins/org.csstudio.utility.speech.mbrola/mbrola_bin/us1-980512.zip?at=a647f5a8de0e05edac363574136ff91a5cc7e4e1 -O us1-980512.zip
wget -c https://bitbucket.csiro.au/projects/CASSSOFT/repos/cs-studio/raw/applications/plugins/org.csstudio.utility.speech.mbrola/mbrola_bin/us2-980812.zip?at=a647f5a8de0e05edac363574136ff91a5cc7e4e1 -O us2-980812.zip
wget -c https://bitbucket.csiro.au/projects/CASSSOFT/repos/cs-studio/raw/applications/plugins/org.csstudio.utility.speech.mbrola/mbrola_bin/us3-990208.zip?at=a647f5a8de0e05edac363574136ff91a5cc7e4e1 -O us3-990208.zip
  • 下载festvox语音包
wget -c http://www.festvox.org/packed/festival/1.96/festvox_us1.tar.gz
wget -c http://www.festvox.org/packed/festival/1.96/festvox_us2.tar.gz
wget -c http://www.festvox.org/packed/festival/1.96/festvox_us3.tar.gz
  • 其他地址https://www.cstr.ed.ac.uk/downloads/festival/1.95/
  • 解压声音
unzip -x us1-980512.zip
unzip -x us2-980812.zip
unzip -x us3-990208.zip
tar xvf festvox_us1.tar.gz
tar xvf festvox_us2.tar.gz
tar xvf festvox_us3.tar.gz
  • 安装声音和包装器
sudo mkdir -p /usr/share/festival/voices/english/us1_mbrola/
sudo mkdir -p /usr/share/festival/voices/english/us2_mbrola/
sudo mkdir -p /usr/share/festival/voices/english/us3_mbrola/
sudo mv us1 /usr/share/festival/voices/english/us1_mbrola/
sudo mv us2 /usr/share/festival/voices/english/us2_mbrola/
sudo mv us3 /usr/share/festival/voices/english/us3_mbrola/
sudo mv festival/lib/voices/english/us1_mbrola/* /usr/share/festival/voices/english/us1_mbrola/
sudo mv festival/lib/voices/english/us2_mbrola/* /usr/share/festival/voices/english/us2_mbrola/
sudo mv festival/lib/voices/english/us3_mbrola/* /usr/share/festival/voices/english/us3_mbrola/
  • 删除临时目录
cd ../
rm -rf mbrola_tmp/

安装增强的 CMU 声音

  • 这些声音是由卡内基梅隆大学语言技术研究所开发的。
  • 它们听起来比双音素和 MBROLA 的声音好得多。
  • 下载语音库
mkdir cmu_tmp
cd cmu_tmp/
wget -c http://festvox.org/cmu_arctic/cmu_arctic/packed/cmu_us_awb_arctic-0.90-release.tar.bz2
wget -c http://festvox.org/cmu_arctic/cmu_arctic/packed/cmu_us_bdl_arctic-0.95-release.tar.bz2
wget -c http://festvox.org/cmu_arctic/cmu_arctic/packed/cmu_us_clb_arctic-0.95-release.tar.bz2
wget -c http://festvox.org/cmu_arctic/cmu_arctic/packed/cmu_us_jmk_arctic-0.95-release.tar.bz2
wget -c http://festvox.org/cmu_arctic/cmu_arctic/packed/cmu_us_rms_arctic-0.95-release.tar.bz2
wget -c http://festvox.org/cmu_arctic/cmu_arctic/packed/cmu_us_slt_arctic-0.95-release.tar.bz2
  • 解压声音
for t in `ls cmu_*` ; do tar xf $t ; done
rm *.bz2
  • 安装声音
sudo mkdir -p /usr/share/festival/voices/english/
sudo mv * /usr/share/festival/voices/english/
  • 更改目录名
for d in `ls /usr/share/festival/voices/english` ; do
if [[ "$d" =~ "cmu_us_" ]] ; then
sudo mv "/usr/share/festival/voices/english/${d}" "/usr/share/festival/voices/english/${d}_clunits" 
fi ; done
  • 删除临时目录
cd ../
rm -rf cmu_tmp/

安装增强的 Nitech HTS 声音

  • 注意:不幸的是,这些声音需要 Festival 1.95
  • 这些声音是由名古屋工业大学主办的 HTS 工作组制作的。
  • 他们产生了非常优质的声音,占用很少的磁盘空间。
  • 就质量和大小而言,可能是可用的最佳(非商业)英语声音。
  • 下载语音包
mkdir hts_tmp
cd hts_tmp/
wget -c http://hts.sp.nitech.ac.jp/archives/2.1/festvox_nitech_us_awb_arctic_hts-2.1.tar.bz2
wget -c http://hts.sp.nitech.ac.jp/archives/2.1/festvox_nitech_us_bdl_arctic_hts-2.1.tar.bz2
wget -c http://hts.sp.nitech.ac.jp/archives/2.1/festvox_nitech_us_clb_arctic_hts-2.1.tar.bz2
wget -c http://hts.sp.nitech.ac.jp/archives/2.1/festvox_nitech_us_rms_arctic_hts-2.1.tar.bz2
wget -c http://hts.sp.nitech.ac.jp/archives/2.1/festvox_nitech_us_slt_arctic_hts-2.1.tar.bz2
wget -c http://hts.sp.nitech.ac.jp/archives/2.1/festvox_nitech_us_jmk_arctic_hts-2.1.tar.bz2
wget -c http://hts.sp.nitech.ac.jp/archives/1.1.1/cmu_us_kal_com_hts.tar.gz
wget -c http://hts.sp.nitech.ac.jp/archives/1.1.1/cstr_us_ked_timit_hts.tar.gz
  • 解压语音包
for t in `ls` ; do tar xvf $t ; done
  • 安装语音包
sudo mkdir -p /usr/share/festival/voices/us
sudo mv lib/voices/us/* /usr/share/festival/voices/us/
sudo mv lib/hts.scm /usr/share/festival/hts.scm
  • 删除临时目录
cd ../
rm -rf hts_tmp/

测试声音并选择默认声音

  • 要获取已安装的所有声音的列表,您只需查看 /usr/share/festival/voices 下的目录:
for d in `ls /usr/share/festival/voices` ; do ls "/usr/share/festival/voices/${d}" ; done
  • 或者在提示符下运行
festival> (voice.list)
(us1_mbrola
 us3_mbrola
 us2_mbrola
 nitech_us_slt_arctic_hts
 nitech_us_jmk_arctic_hts
 nitech_us_clb_arctic_hts
 nitech_us_rms_arctic_hts
 nitech_us_bdl_arctic_hts
 nitech_us_awb_arctic_hts)
  • 测试播放不同声音
  • 要选择语音,请将前缀“voice_”添加到语音名称,并用括号括起来:
festival> (voice_us2_mbrola)
festival> (SayText "Hello from Ubuntu")
festival> (tts "story.txt" nil)
festival> (intro)
  • 选择默认声音
festival> (set! voice_default 'voice_us2_mbrola)

与 PulseAudio、ESD 或 ALSA 配合使用

  • 默认情况下,festival 尝试使用 OSS 将语音合成到 /dev/dsp。

  • 要使其与 ESD、PulseAudio 或 ALSA 一起使用,您有两种选择。

  • 第一个是使用包装器调用festival,第二个是让festival 在内部尝试使用其中一个输出。

  • 第一种方法的优点是您可以随时使用 esd、pluseaudio 或 alsa 包装器,而无需编辑配置文件。

  • 第二种方法的优点是你不必记得调用包装器——直接运行。

  • 配置总是使用 ESD or PulseAudio

  • 编译vim /etc/festival.scm或 vim ~/.festivalrc

  • 增加如下行到文件最后

(Parameter.set 'Audio_Method 'esdaudio)
  • 配置总是使用 ALSA
  • 不能同时使用ALSA和ESD
  • 编译vim /etc/festival.scm或 vim ~/.festivalrc
  • 增加如下行到文件最后
(Parameter.set 'Audio_Command "aplay -D plug:dmix -q -c 1 -t raw -f s16 -r $SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Required_Format 'snd)
  • 在某些配置中,可能需要删除上述 aplay 命令的“-D plug:dmix”部分

  • 测试

#进入提示符
festival
#输出文字语音
festival>(SayText "Hello")
#输入文本语音
festival>(tts "FILENAME" nil)

参考:

  • http://festvox.org/docs/manual-1.4.3/festival_29.html
  • https://blog.csdn.net/derryzhang/article/details/5768950
  • http://awesome-zh.nocode.site/services/festival.html
  • http://festvox.org/
  • https://forum.ubuntu.org.cn/viewtopic.php?t=217065
  • https://ubuntuforums.org/showthread.php?t=751169

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ubuntu系统入门教程