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

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

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

本地通过软件转换

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

在树莓派上可直接安装

$ apt-get install festival

$ festival -v

festival: Festival Speech Synthesis System: 2.1:release November 2010

1

2

3

4

$apt-getinstallfestival

$festival-v

festival:FestivalSpeechSynthesisSystem:2.1:releaseNovember2010

安装好后 测试下

直接输入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 遗憾的是这些没有开放下载

在官方FAQ http://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-api.com/tts.mp3?q=hello+world.

2.google翻译的接口

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

http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=hello+world

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

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

$ apt-get install mpg123

$ mpg123 'http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=today+is+sunday'

1

2

3

$apt-getinstallmpg123

$mpg123'http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=today+is+sunday'

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

参考

你可能感兴趣的:(树莓派文字转语音,python)