失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 树莓派文字转语音 python_会说话的树莓派 将文字转换为语音

树莓派文字转语音 python_会说话的树莓派 将文字转换为语音

时间:2020-03-16 18:15:15

相关推荐

树莓派文字转语音 python_会说话的树莓派 将文字转换为语音

树莓派带了个音频输出接口,可外接小音箱。要是能实现文本到语音转换(text2speech)的话。 它的可玩性大大的提高了,比如 起床的时候语音播报天气、朗读电子邮件…更多的发挥你的想象力吧

这里介绍两种方式:1.通过本地程序转换 2使用在线api接口,这个需要联网

本地通过软件转换

我使用的是festival一个免费的文字转语音软件,不需要联网。

在树莓派上可直接安装

$ apt-get install festival

$ festival -v

festival: Festival Speech Synthesis System: 2.1:release November

1

2

3

4

$apt-getinstallfestival

$festival-v

festival:FestivalSpeechSynthesisSystem:2.1:releaseNovember

安装好后 测试下

直接输入festival可进入交互方式

$ festival

festival> (SayText "hello boy")

1

2

3

$festival

festival>(SayText"hello boy")

或者直接通过命令行

$ echo 'hello boy' |festival --tts

1

2

$echo'hello boy'|festival--tts

festival 默认带的声音kal_diphone效果并不好(呃,有点模糊,电音效果?)

官方也有其他的声音,效果也不错online demo遗憾的是这些没有开放下载

在官方FAQhttp://www.cstr.ed.ac.uk/projects/festival/demofaq.html#voices

Q:I really like your demo, where can I download voice XYZ?

A: ….

The good news, though, is that we’re currently putting together a portfolio of dozens and dozens (really!) of voices which will be available to download shortly. Some voices will be available for commercial use only, some for non-commercial use only, and indeed some for both.

不知道shortly是什么时候

但是我们可以选择安装一些第三方的语音库,下面介绍两个

mbroal

我按照说明做了一下,路径稍微有点不同,上面说要解压 festvox_us1到/usr/share/festival/lib/voices, 而实际目录是/usr/share/festival/voices/不然会报错,可能跟festival的版本有关系

1.Install the festival voice wrapper. 安装festvox_us1

root@coolpi:/tmp#

$ wget http://www.cstr.ed.ac.uk/downloads/festival/1.95/festvox_us1.tar.gz

$ tar -xzvf festvox_us1.tar.gz

festival/lib/voices/english/us1_mbrola/festvox/us1_mbrola.scm

festival/lib/voices/english/us1_mbrola/festvox/usdurtreeZ.scm

festival/lib/voices/english/us1_mbrola/usradio

$ cp festival/lib/voices/english/us1_mbrola /usr/share/festival/voices/english/ -R

1

2

3

4

5

6

7

8

root@coolpi:/tmp#

$wgethttp://www.cstr.ed.ac.uk/downloads/festival/1.95/festvox_us1.tar.gz

$tar-xzvffestvox_us1.tar.gz

festival/lib/voices/english/us1_mbrola/festvox/us1_mbrola.scm

festival/lib/voices/english/us1_mbrola/festvox/usdurtreeZ.scm

festival/lib/voices/english/us1_mbrola/usradio

$cpfestival/lib/voices/english/us1_mbrola/usr/share/festival/voices/english/-R

2.Get the MBROLA voice and binary. 到 http://tcts.fpms.ac.be/synthesis/mbrola.html

下载 MBROLA binary 和 MBROLA Voices

分别选择

Raspberri_pi注意binary要选择适用于树莓派的版本

压缩包中的文件 $ wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/raspberri_pi/mbrola.tgz #里面只有一个二进制文件mbrola,把它解压到 /usr/local/bin下 $ tar -xzvf mbrola.tgz -C /usr/local/bin/

#

$ wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/us1/us1-980512.zip

$ unzip us1_mbrola.zip -d /usr/share/festival/voices/english/us1_mbrola/

1

2

3

4

#

$wgethttp://tcts.fpms.ac.be/synthesis/mbrola/dba/us1/us1-980512.zip

$unzipus1_mbrola.zip-d/usr/share/festival/voices/english/us1_mbrola/

最后目录结构看起来是这样的

/usr/share/festival/voices/english/us1_mbrola/

├── festvox

│ ├── us1_mbrola.scm

│ └── usdurtreeZ.scm

├── us1

│ ├── license.txt

│ ├── TEST

│ │ ├── alice.pho

│ │ ├── mbrola.pho

│ │ ├── mbroli.ini

│ │ ├── push.pho

│ │ └── xmas.pho

│ ├── us1

│ ├── us1mrpa

│ └── us1.txt

└── usradio

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/usr/share/festival/voices/english/us1_mbrola/

├──festvox

│├──us1_mbrola.scm

│└──usdurtreeZ.scm

├──us1

│├──license.txt

│├──TEST

││├──alice.pho

││├──mbrola.pho

││├──mbroli.ini

││├──push.pho

││└──xmas.pho

│├──us1

│├──us1mrpa

│└──us1.txt

└──usradio

查看 已安装的语音

festival> (voice.list)

(us1_mbrola kal_diphone)

1

2

3

festival>(voice.list)

(us1_mbrolakal_diphone)

选择声音,测试下

festival> (voice_us1_mbrola)

us1_mbrola

festival> (SayText "hello boy")

1

2

3

4

festival>(voice_us1_mbrola)

us1_mbrola

festival>(SayText"hello boy")

嗯 比自带的那个声音好点…

cmu(更接近真人声音的)

1.安装 festlex-cmu

$ apt-get install festlex-cmu

1

2

$apt-getinstallfestlex-cmu

2.下载 cmu

cd /usr/share/festival/voices/english/

#这个压缩包100多M

sudo wget -c http://www.speech.cs.cmu.edu/cmu_arctic/packed/cmu_us_clb_arctic-0.95-release.tar.bz2

sudo tar jxf cmu_us_clb_arctic-0.95-release.tar.bz2

sudo ln -s cmu_us_clb_arctic cmu_us_clb_arctic_clunits

1

2

3

4

5

6

cd/usr/share/festival/voices/english/

#这个压缩包100多M

sudowget-chttp://www.speech.cs.cmu.edu/cmu_arctic/packed/cmu_us_clb_arctic-0.95-release.tar.bz2

sudotarjxfcmu_us_clb_arctic-0.95-release.tar.bz2

sudoln-scmu_us_clb_arcticcmu_us_clb_arctic_clunits

选择声音,测试下

festival> (voice_cmu_us_clb_arctic_clunits)

cmu_us_clb_arctic_clunits

festival> (SayText "hello boy")

1

2

3

4

festival>(voice_cmu_us_clb_arctic_clunits)

cmu_us_clb_arctic_clunits

festival>(SayText"hello boy")

声音又上了一个档次,但是解析的时候能明显感觉出来有延迟。估计放到配置高点的电脑上会好些。

可以在配置文件中设置默认的声音

sudo cp /etc/festival.scm /etc/festival.scm.backup

sudo echo "(set! voice_default 'voice_cmu_us_clb_arctic_clunits)" >> /etc/festival.scm

1

2

3

sudocp/etc/festival.scm/etc/festival.scm.backup

sudoecho"(set! voice_default 'voice_cmu_us_clb_arctic_clunits)">>/etc/festival.scm

在线tts api接口

找到两个

1.tts-api这个接口是免费的,效果还行,起码比festival好

http://tts-/tts.mp3?q=hello+world.

2.google翻译的接口

这个接口并不是官方正式提供的,不过从速度,声音效果来说是最好的(非常好!),网速好的话基本上感觉不出来延迟

/translate_tts?ie=UTF-8&tl=en&q=hello+world

三个参数 q=要转换的文字; tl=文字的语言 中文选择zh-cn; ie 要转换的文字q的编码方式;

上面接口返回音频格式是mp3的,可使用mpg123 直接播放

$ apt-get install mpg123

$ mpg123 '/translate_tts?ie=UTF-8&tl=en&q=today+is+sunday'

1

2

3

$apt-getinstallmpg123

$mpg123'/translate_tts?ie=UTF-8&tl=en&q=today+is+sunday'

上面两种方式可以结合着使用,比如在为联网的时候使用festival,联网使用效果更好的在线接口

参考

如果觉得《树莓派文字转语音 python_会说话的树莓派 将文字转换为语音》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。