1

我目前正在从事一个在 RPi 上使用 Festival TTS 引擎的项目。

以前用过很多次。我也用 pyfestival 来做一些基本的事情。我目前正在尝试为一段文本生成语音视位文件。如果在 Festival 命令解释器中完成,这非常有效,我需要在 bash 或 python 中执行完全相同的操作。

节日>(设置!mytext(SayText“Hello word”))节日>(utt.save.segs mytext“hw_viseme_file”)

已经搜索了这个信息的高低,但已经画了一个空白。有人可以举例说明如何从 bash 或 Python 调用上面的 2 行代码吗?

非常感谢。

DP。

4

2 回答 2

0

Festival 命令有一个 --script 选项,因此您应该能够从 bash 运行,例如:

festival --script generate_visemes

其中“ generate-visemes ”包含您要执行的 Festival 命令(上图)。

在 python 中,您可以像这样调用外部程序:

os.system("festival --script generate_visemes")

也许要创建脚本文件,如下所示:

import os

ttsMessage = "Hello World"
ttsVisemeFile = "hw_viseme_file"

f = open('generate_visemes','w')
textParam = '(set! mytext(SayText "{0}"))\n'.format(ttsMessage)
visemeParam = '(utt.save.segs mytext "{0}")\n'.format(ttsVisemeFile)

f.write(textParam)
f.write(visemeParam)
f.close()

os.execute("festival --script generate_visemes")
于 2016-03-27T10:05:45.447 回答
0

终于解决了这个问题 - 相当参与。安装 Festival TTS 引擎后,以下在 RPi 上的 Python 2.7 中运行。

    import os

    #Simple example
    bashcommand = "echo 'Hello World' | festival --tts"
    os.system(bashcommand)

    # This bash command takes the entered phrase and returns an audio .wav file and a text file of the visemes

    while True:
        phrase = raw_input("Enter phrase:")  

        bashcommand = "festival -b '(set! mytext (Utterance Text " + '"' + phrase + '"))' + "' '(utt.synth mytext)' '(utt.save.wave mytext " + '"my_wav.wav")' + "' '(utt.save.segs mytext " + '"textfile"' + ")'"

        os.system(bashcommand)

当然,您也可以只从命令行运行 bash。希望这可以帮助将来的人。

于 2016-04-19T09:20:43.050 回答