如何在东芝笔记本电脑和Windows 7上使用python进行文本到语音转换?

tre*_*kby 5 python mp3 wav text-to-speech pyinstaller

我试图找到一种方法在python中创建文本到语音(我在Windows 7上).我正在使用pyinstaller来编译这个程序.我尝试了很多方法,包括使用谷歌通过urllib2模块访问的非官方文本到语音程序.这最终会创建一个mp3文件.有关代码的详细信息,此代码的大部分内容来自http://glowingpython.blogspot.com/2012/11/text-to-speech-with-correct-intonation.html.然后我需要播放这个生成的mp3文件.我使用了mplayer,ffmpeg,mp3play,audiere,pydub和pygame都有相同的结果:没有播放声音,但没有引发异常.我甚至在覆盆子pi上使用了相同的pygame代码并成功播放了mp3文件.我也尝试将它转换为一个wav文件,它运行良好,只有当我尝试用pygame或winsound播放它时,同样的事情发生了.没有声音,没有例外.我当前的代码使用winsound,播放我可以在Windows媒体播放器中成功播放的wav文件(我甚至可以使用os.startfile()从python中的windows media player中打开它).这里是:

winsound.PlaySound("file.wav", winsound.SND_FILENAME)    #the wav file is in the same directory as the program
Run Code Online (Sandbox Code Playgroud)

我也在尝试使用pygame调音台音乐模块.例如:

init()                            #this is pygame.init(), I only imported init and the mixer module
pygame.mixer.init()               #initializes pygame.mixer
pygame.mixer.music.load(filename) #loads it in music
pygame.mixer.music.play()         #plays it in music
time.sleep(20)
Run Code Online (Sandbox Code Playgroud)

我甚至用winsound和win32api Beep()函数成功地从python中播放了声音.但是,这显然无法播放mp3或wav文件.我还尝试了一个完全不同的文本到语音引擎,使用pyttsx在混音中播放没有mp3文件的声音:

import pyttsx

engine = pyttsx.init()

def tts(mytext):
    engine.say(mytext)
    engine.runAndWait()
Run Code Online (Sandbox Code Playgroud)

这也无法创建声音或引发异常.由于这种模式,我觉得这与系统有关,但似乎并不是显而易见的事情.

因为这几乎肯定与硬件有关(pygame.mixer已经在不同的硬件上运行,我相信它通常适用于Windows),知道我使用东芝笔记本电脑可能很重要.另外,我使用的是python 2.7.

理想情况下,我想用pygame做这个,因为我有最丰富的使用经验,并且有一些声音编辑功能我想在pygame中访问,如果可能的话.

我也尝试使用64位python(我在64位Windows 7上使用32位python).它仍然无法工作.

我也试过在Ubuntu虚拟盒环境中播放一个mp3文件,但是在同一个设备上.它仍然无法正常工作.这并不特别令人惊讶,因为virtualbox使用来自主机操作系统的大量资源(如屏幕和wifi),因此它不一定会以不同的方式播放声音.任何解决方法都会有所帮助.有些声音很好,在python中没有专门的mp3或wav文件,所以可能有一个解决方案.

tre*_*kby 1

碰巧的是,我最近有了一个想法,促使我再次尝试这一点。这个解决方案非常hackish,不应该是必要的,但不幸的是它是必要的。基本上我所做的就是在 Windows Media Player 中打开文件,但使用子进程抑制窗口。我已经有了这个问题的基本答案,所以这是因为我不太愿意重写完全相同的东西。