我怎么能让Python说出一些文字?
我可以将Festival与subprocess一起使用,但我无法控制它(或者可能在交互模式下,但它不会很干净)。
是否有Python TTS库?就像节日的API,eSpeak,......?
答案 0 :(得分:35)
请注意,这仅适用于python 2.x
你应该尝试使用PyTTSx包,因为PyTTS已经过时了。 PyTTSx使用最新的python版本。
http://pypi.python.org/pypi/pyttsx/1.0 - >包
希望有所帮助
答案 1 :(得分:29)
有点俗气,但是如果你使用mac,你可以从python将终端命令传递给控制台。
尝试在终端中输入以下内容:
$ say 'hello world'
麦克风会发出声音。从python这样的事情相对容易:
import os
os.system("echo 'hello world'")
os.system("say 'hello world'")
答案 2 :(得分:21)
class B extends A{
render(){
var parent = new A()
return <div>
<h1>{this.state.text}</h1>
<button onClick={parent.updatedState}>Update state</button>
</div>
}
}
在cmd中安装gtts模块后: pip install gtts
from win32com.client import Dispatch
speak = Dispatch("SAPI.SpVoice")
speak.Speak("Ciao")
答案 3 :(得分:15)
Debian,Ubuntu,Redhat和其他Linux发行版中提供了python-espeak包。它有最新的更新,并且工作正常。
from espeak import espeak
espeak.synth("Hello world.")
Jonathan Leaders指出它也适用于Windows,你也可以安装mbrola语音。请访问espeak网站http://espeak.sourceforge.net
答案 4 :(得分:9)
一个简单的Google引导我pyTTS和一些documents about it。但是,它看起来没有维护,特定于微软的语音引擎。
至少在Mac OS X上,您可以使用subprocess
来调用say
命令,这对于弄乱您的同事非常有趣,但对您的需求可能并不十分有用。 / p>
听起来,Festival也有一些公共API:
Festival提供基于BSD套接字的界面。这允许Festival作为服务器运行并允许客户端程序访问它。基本上,服务器为每个附加到它的客户端提供一个新的命令解释器。服务器是为每个客户端分叉的,但这比等待Festival进程从头开始要快得多。此外,服务器可以在更大的机器上运行,提供更快的合成。 linky
还有一个full-featured C++ API,你可以用它制作一个Python模块(很有趣!)。 Festival还提供了一个简化的C API - 继续在该文档中滚动 - 您可以将ctypes
投入一次性。
也许你已经确定了市场上的一个漏洞?
答案 5 :(得分:4)
有很多方法可以让Python在Python3和Python2中发言,两种方法是:
如果你在Mac上,你将在你的计算机中内置os模块。您可以使用以下命令导入os模块:
import os
然后,您可以使用os使用os.system命令运行终端命令:
os.system("Your terminal")
在终端中,您使计算机说话的方式是使用“说”命令,从而使计算机说话只需使用:
os.system("say 'some text'")
如果您想使用它来说出变量,您可以使用:
os.system("say " + myVariable)
让python说话的第二种方法是使用
您必须使用
安装pip isntall pyttsx3
或Python3
pip3 install pyttsx3
然后,您可以使用以下代码来发言:
import pyttsx3
engine = pyttsx3.init()
engine.say("Your Text")
engine.runAndWait()
我希望这有帮助! :)
答案 6 :(得分:2)
可能没有“Python特定”的东西,但KDE和GNOME桌面提供了文本到语音作为其可访问性支持的一部分,并且还提供了python库绑定。 可以使用python绑定来控制桌面库的文本到语音。
如果在JVM上使用Python的Jython实现,FreeTTS系统可能是可用的。
最后,OSX和Windows具有用于文本到语音的原生API。可以通过ctypes或其他机制(如COM)从python中使用这些。
答案 7 :(得分:2)
您可以使用 espeak 使用python进行文本到语音转换 这是一个示例python代码
from subprocess import call speech="Hello World!" call(["espeak",speech])
P.S:如果 espeak 没有安装在您的Linux系统上,那么您需要先安装它。
打开终端(使用ctrl + alt + T)并输入
sudo apt install espeak
答案 8 :(得分:2)
如果您使用的是python 3和Windows 10,我发现最好的解决方案是Giovanni Gianni。这在男声中扮演了我的角色:
import win32com.client as wincl
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak("This is the pc voice speaking")
我也在youtube上找到了这个video,所以如果你真的想要,你可以找到一个你认识的人,并自己做DIY的声音。
答案 9 :(得分:1)
这就是你要找的东西。适用于Mac的完整TTS解决方案。 您可以将此独立版本用作Web应用程序的协同定位Mac服务器:
答案 10 :(得分:1)
THE COMPLETE SOLUTION TO ALL YOU PYTHON TEXT-TO-SPEECH NEEDS
Pyttsx3 是一个python模块,它是Python 2.x的 pyttsx 模块的克隆,除了经过修改以便在最新版本的Python 3中完美运行!
100% MULTI-PLATFORM AND 脱机工作 和 IS ACTIVE / STILL BEING已开发 和 适用于任何PYTHON版本
可以使用pip install pyttsx3
轻松安装,其用法与pyttsx:
import pyttsx3;
engine = pyttsx3.init();
engine.say("I will speak this text");
engine.runAndWait();
它易于操作且完美无缺,因此我认为这是最佳解决方案
答案 11 :(得分:1)
我更喜欢使用Google Text To Speech库,因为它的声音更自然。
from gtts import gTTS
def speak(text):
tts = gTTS(text=text, lang="en")
filename = "voice.mp3"
tts.save(filename)
有一个限制。 gTTS只能将文本转换为语音并保存。因此,您将不得不找到另一个模块或函数来播放该文件。 (例如:playsound)
Playsound是一个非常简单的模块,具有一个功能,即播放声音。
import playsound
def play(filename):
playsound.playsound(filename)
保存mp3文件后,您可以直接调用playsound.playsound()。
答案 12 :(得分:0)
结合以下来源,以下代码仅使用platform
和os
模块即可在Windows,Linux和macOS上运行:
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)
注意:此方法不安全,可能被恶意文本利用。
答案 13 :(得分:0)
只需在python中使用这个简单的代码。
仅适用于 Windows 操作系统。
from win32com.client import Dispatch
def speak(text):
speak = Dispatch("SAPI.Spvoice")
speak.Speak(text)
speak("How are you dugres?")
我个人使用这个。