如何让Python说话

时间:2009-10-23 15:02:10

标签: python text-to-speech

我怎么能让Python说出一些文字?

我可以将Festival与subprocess一起使用,但我无法控制它(或者可能在交互模式下,但它不会很干净)。

是否有Python TTS库?就像节日的API,eSpeak,......?

14 个答案:

答案 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)

如何在Windows上听到电脑的声音

class B extends A{
  render(){
    var parent = new A() 
    return <div>
      <h1>{this.state.text}</h1>
      <button onClick={parent.updatedState}>Update state</button>
    </div>
  }
}

使用谷歌文字转语音Api创建一个MP3,在这里

在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中发言,两种方法是:

  • 使用os

如果你在Mac上,你将在你的计算机中内置os模块。您可以使用以下命令导入os模块:

import os

然后,您可以使用os使用os.system命令运行终端命令:

os.system("Your terminal")

在终端中,您使计算机说话的方式是使用“说”命令,从而使计算机说话只需使用:

os.system("say 'some text'")

如果您想使用它来说出变量,您可以使用:

os.system("say " + myVariable)

让python说话的第二种方法是使用

  • pyttsx模块

您必须使用

安装
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系统可能是可用的。

最后,OSXWindows具有用于文本到语音的原生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服务器:

http://wolfpaulus.com/jounal/mac/ttsserver/

答案 10 :(得分:1)

PYTTSX3

THE COMPLETE SOLUTION TO ALL YOU PYTHON TEXT-TO-SPEECH NEEDS

WHAT:

Pyttsx3 是一个python模块,它是Python 2.x的 pyttsx 模块的克隆,除了经过修改以便在最新版本的Python 3中完美运行!

WHY:

100% MULTI-PLATFORM AND 脱机工作 IS ACTIVE / STILL BEING已开发 适用于任何PYTHON版本

HOW:

可以使用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)

结合以下来源,以下代码仅使用platformos模块即可在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?")

我个人使用这个。