How to make Python speak
我如何让Python说一些文字?
我可以在子进程中使用Festival,但是我将无法控制它(或者可能在交互模式下,但它不是干净的)。
有Python TTS库吗? 就像节日的API一样,eSpeak,...?
请注意,这仅适用于python 2.x
由于PyTTS已过时,因此您应尝试使用PyTTSx软件包。 PyTTSx使用最新的python版本。
http://pypi.python.org/pypi/pyttsx/1.0->程序包
希望能帮助到你
有点俗气,但是如果您使用的是Mac,则可以从python将终端命令传递给控制台。
尝试在终端中键入以下内容:
1 | $ say 'hello world' |
Mac会发出声音,说出这一点。从python这样的事情相对容易:
1 2 3 | import os os.system("echo 'hello world'") os.system("say 'hello world'") |
如何使用Windows PC的文本语音转换功能
1 2 3 4 5 | from win32com.client import Dispatch speak = Dispatch("SAPI.SpVoice") speak.Speak("Ciao") |
使用Google文本语音Api创建mp3并收听
在cmd中安装gtts模块后:
点安装gtts
1 2 3 4 5 6 7 | from gtts import gTTS import os tts = gTTS(text="This is the pc speaking", lang='en') tts.save("pcvoice.mp3") # to start the file from python os.system("start pcvoice.mp3") |
python-espeak软件包在Debian,Ubuntu,Redhat和其他Linux发行版中可用。它具有最新更新,并且运行良好。
1 2 | from espeak import espeak espeak.synth("Hello world.") |
Jonathan Leaders指出它也可以在Windows上运行,您也可以安装mbrola声音。请访问espeak网站,网址为http://espeak.sourceforge.net
一个简单的Google引导我使用pyTTS,以及有关它的一些文档。但是,它看起来没有维护,并且特定于Microsoft的语音引擎。
至少在Mac OS X上,您可以使用
听起来Festival也有一些公共API:
Festival提供了基于BSD套接字的接口。这使Festival可以作为服务器运行,并允许客户端程序对其进行访问。基本上,服务器为连接到它的每个客户端提供一个新的命令解释器。服务器是为每个客户端分叉的,但这比必须等待Festival进程从头开始要快得多。服务器也可以在更大的计算机上运行,??从而提供更快的综合速度。林克
还有一个功能齐全的C ++ API,您可以使用它制作一个Python模块(这很有趣!)。 Festival还提供了简化的C API-继续滚动该文档-您可能可以将
也许您发现了市场上的漏洞?
有很多方法可以使Python在Python3和Python2中都可以使用,其中两种很棒的方法是:
- 使用操作系统
如果您使用的是Mac,您将在计算机中内置os模块。您可以使用以下命令导入os模块:
1 | import os |
然后,您可以使用os使用os.system命令来运行终端命令:
1 | os.system("Your terminal") |
在终端中,使计算机发言的方式是使用" say"命令,因此,只需使用以下命令即可使计算机发言:
1 | os.system("say 'some text'") |
如果您想使用它来说一个变量,可以使用:
1 | os.system("say" + myVariable) |
让python说话的第二种方法是使用
- pyttsx模块
您将必须使用安装
1 | pip isntall pyttsx3 |
或对于Python3
1 | pip3 install pyttsx3 |
然后,您可以使用以下代码说出它:
1 2 3 4 5 6 | import pyttsx3 engine = pyttsx3.init() engine.say("Your Text") engine.runAndWait() |
我希望这有帮助! :)
PYTTSX3!
什么:
Pyttsx3是一个python模块,是pyttsx的现代克隆,经过修改可在最新版本的Python 3中完美地运行!
- 用于下载的Python软件包索引:https://pypi.python.org
- 有关源代码,错误和问答的GitHub:https://github.com/nateshmbhat/pyttsx3
- 阅读完整文档,网址为:https://pyttsx3.readthedocs.org
为什么:
它是100%的多平台并且可以离线工作,并且可以在任何PYTHON版本上进行活跃/仍处于开发和工作状态
怎么样:
可以使用
1 2 3 4 | import pyttsx3; engine = pyttsx3.init(); engine.say("I will speak this text"); engine.runAndWait(); |
这是最好的多平台选择!
您可以使用python使用espeak进行文本到语音的转换器。
这是一个示例python代码
1 2 3 | from subprocess import call speech="Hello World!" call(["espeak",speech]) |
附言:如果您的linux系统上未安装espeak,则需要先安装它。
打开终端(使用ctrl + alt + T)并输入
1 | sudo apt install espeak |
如果您使用的是python 3和Windows 10,我发现有效的最佳解决方案是Giovanni Gianni。这对我来说是男性的声音:
1 2 3 | import win32com.client as wincl speak = wincl.Dispatch("SAPI.SpVoice") speak.Speak("This is the pc voice speaking") |
我也在youtube上找到了该视频,因此,如果您真的愿意,可以找一个认识的人,并发表自己的DIY tts声音。
可能没有任何"特定于Python"的东西,但是KDE和GNOME桌面提供文本到语音作为其可访问性支持的一部分,还提供python库绑定。
可能可以使用python绑定来控制用于文本到语音的桌面库。
如果在JVM上使用Python的Jython实现,则FreeTTS系统可能可用。
最后,OSX和Windows具有用于文本到语音的本机API。可能可以通过ctypes或其他机制(例如COM)从python使用它们。
这就是您要寻找的。适用于Mac的完整TTS解决方案。
您可以将此独立服务器或作为托管服务器的Mac服务器用于Web应用程序:
http://wolfpaulus.com/jounal/mac/ttsserver/
我更喜欢使用Google Text To Speech库,因为它的声音更自然。
1 2 3 4 5 | from gtts import gTTS def speak(text): tts = gTTS(text=text, lang="en") filename ="voice.mp3" tts.save(filename) |
有一个限制。 gTTS只能将文本转换为语音并保存。因此,您将不得不找到另一个模块或函数来播放该文件。 (例如:playsound)
Playsound是一个非常简单的模块,具有一个功能,即播放声音。
1 2 3 | import playsound def play(filename): playsound.playsound(filename) |
保存mp3文件后,可以直接调用playsound.playsound()。
结合以下来源,以下代码仅使用
- mac命令的cantdutchthis'答案
- natka_m对Ubuntu命令的注释
- BananaAcid对于Windows命令的答案
- Louis Brandy关于如何检测操作系统的答案
- nc3b关于如何检测Linux发行版的答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | tx = input("Text to say >>>") tx = repr(tx) import os import platform syst = platform.system() if syst == 'Linux' and platform.linux_distribution()[0] =="Ubuntu": os.system('spd-say %s' % tx) elif syst == 'Windows': os.system('PowerShell -Command"Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak(%s);"' % tx) elif syst == 'Darwin': os.system('say %s' % tx) else: raise RuntimeError("Operating System '%s' is not supported" % syst) |
注意:此方法不安全,可能被恶意文本利用。