我怎样才能让 Python 说出一些文字?
我可以将 Festival 与 subprocess 一起使用,但我无法控制它(或者可能在交互模式下,但它不会是干净的)。
有 Python TTS 库吗?像 Festival、eSpeak、... 的 API 一样?
我怎样才能让 Python 说出一些文字?
我可以将 Festival 与 subprocess 一起使用,但我无法控制它(或者可能在交互模式下,但它不会是干净的)。
有 Python TTS 库吗?像 Festival、eSpeak、... 的 API 一样?
您应该尝试使用 PyTTSx 包,因为 PyTTS 已过时。PyTTSx 适用于 Python 2。对于 Python 3,请安装 PyTTSx3 包。
有点俗气,但是如果您使用 mac,您可以将终端命令从 python 传递到控制台。
尝试在终端中输入以下内容:
$ say 'hello world'
并且将有来自 mac 的声音会说出来。从python这样的事情是相对容易的:
import os
os.system("echo 'hello world'")
os.system("say 'hello world'")
安装 pip 安装 pypiwin32
from win32com.client import Dispatch
speak = Dispatch("SAPI.SpVoice").Speak
speak("Ciao")
在 cmd 中安装 gtts 模块后: pip install gtts
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 发行版中可用。它有最近的更新,并且工作正常。
from espeak import espeak
espeak.synth("Hello world.")
Jonathan Leaders 指出它也适用于 Windows,您也可以安装 mbrola 语音。请参阅http://espeak.sourceforge.net上的 espeak 网站
一个简单的谷歌引导我到pyTTS,以及一些关于它的文档。然而,它看起来没有维护并且特定于微软的语音引擎。
至少在 Mac OS X 上,您可以使用subprocess
调用say
命令,这对于与您的同事打交道很有趣,但对于您的需求可能不是非常有用。
听起来 Festival 也有一些公共 API:
Festival 提供了一个基于 BSD 套接字的接口。这允许 Festival 作为服务器运行并允许客户端程序访问它。基本上,服务器为每个附加到它的客户端提供了一个新的命令解释器。服务器为每个客户端分叉,但这比等待 Festival 进程从头开始要快得多。服务器也可以在更大的机器上运行,提供更快的合成。 链接的
还有一个功能齐全的 C++ API,您可以用它制作 Python 模块(这很有趣!)。Festival 还提供了一个精简的 C API——在该文档中继续滚动——你可以一次性扔掉ctypes
它。
也许你已经发现了市场上的一个漏洞?
有很多方法可以让 Python 在 Python3 和 Python2 中说话,两个很好的方法是:
如果您使用的是 mac,您的计算机中将内置 os 模块。您可以使用以下方法导入 os 模块:
import os
然后,您可以使用 os 使用 os.system 命令运行终端命令:
os.system("Your terminal")
在终端中,使计算机说话的方式是使用“say”命令,因此要使计算机说话,您只需使用:
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()
我希望这有帮助!:)
Pyttsx3是一个 python 模块,它是pyttsx的现代克隆,修改为最新版本的 Python 3!
它是多平台的,可以离线工作,并且正在/仍在开发中,并且可以与任何 Python 版本一起使用
它可以轻松安装,pip install pyttsx3
使用方法与 pyttsx 相同:
import pyttsx3;
engine = pyttsx3.init();
engine.say("I will speak this text");
engine.runAndWait();
我认为这肯定是最好的多平台选择
您可以使用espeak使用 python 进行文本到语音转换器。
这是一个示例python代码
从子流程导入调用 演讲=“你好世界!” 通话([“说话”,演讲])
PS:如果你的linux系统上没有安装espeak,那么你需要先安装它。
打开终端(使用 ctrl + alt + T)并输入
sudo apt install espeak
我更喜欢使用 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 是一个非常简单的模块,只有一个功能,就是播放声音。
import playsound
def play(filename):
playsound.playsound(filename)
您可以在保存 mp3 文件后直接调用 playsound.playsound()。
如果您使用的是 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 上找到了这个视频,所以如果你真的想要,你可以找一个你认识的人,制作你自己的 DIY tts 声音。
这就是你要找的。适用于 Mac 的完整 TTS 解决方案。您可以将此独立使用或用作 Web 应用程序的托管 Mac 服务器:
platform
结合以下来源,以下代码仅使用andos
模块可在 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)
注意:此方法不安全,可能会被恶意文本利用。
只需在 python 中使用这个简单的代码。
仅适用于 Windows 操作系统。
from win32com.client import Dispatch
def speak(text):
speak = Dispatch("SAPI.Spvoice")
speak.Speak(text)
speak("How are you dugres?")
我个人使用这个。