Macintosh 中的 Python 文本转语音

问题描述 投票:0回答:4

Python 中是否有任何库可以使用 Mac Lion 内置的文本到语音引擎进行文本到语音转换? 我用谷歌搜索过,但大多数都是基于Windows的。我尝试了 pyttx。 我试着跑

import pyttsx
engine = pyttsx.init()
engine.say('Sally sells seashells by the seashore.')
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

但是我收到这些错误

File "/Users/manabchetia/Documents/Codes/Speech.py", line 2, in <module>
    engine = pyttsx.init()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pyttsx-1.0.egg/pyttsx/__init__.py", line 39, in init
    eng = Engine(driverName, debug)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pyttsx-1.0.egg/pyttsx/engine.py", line 45, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pyttsx-1.0.egg/pyttsx/driver.py", line 64, in __init__
    self._module = __import__(name, globals(), locals(), [driverName])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pyttsx-1.0.egg/pyttsx/drivers/nsss.py", line 18, in <module>
ImportError: No module named Foundation

如何解决这些错误?

python macos text-to-speech
4个回答
42
投票

这样做不是更简单吗?

from os import system
system('say Hello world!')

您可以输入

man say
查看可以使用
say
命令执行的其他操作。

但是,如果您想要一些更高级的功能,导入

AppKit
也是一种可能,尽管需要一些 Cocoa/Objective C 知识。

from AppKit import NSSpeechSynthesizer
speechSynthesizer = NSSpeechSynthesizer.alloc().initWithVoice_("com.apple.speech.synthesis.voice.Bruce")
speechSynthesizer.startSpeakingString_('Hi! Nice to meet you!')

如果您想了解更多可以使用 NSSpeechSynthesizer 执行的操作,请查看 Apple 的文档:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSSpeechSynthesizer_Class/Reference /参考.html


13
投票

如果您的目标是 Mac OS X 作为您的平台 - PyObjC 和 NSSpeechSynthesizer 是您最好的选择。

这是一个简单的例子给你

#!/usr/bin/env python

from  AppKit import NSSpeechSynthesizer
import time
import sys


if len(sys.argv) < 2:
   text = raw_input('type text to speak> ')
else:
   text = sys.argv[1]

nssp = NSSpeechSynthesizer

ve = nssp.alloc().init()

for voice in nssp.availableVoices():
   ve.setVoice_(voice)
   print voice
   ve.startSpeakingString_(text)

   while not ve.isSpeaking():
      time.sleep(0.1)

   while ve.isSpeaking():
      time.sleep(0.1)

请注意,AppKit 模块是 PyObjC 桥的一部分,应该已经安装在您的 Mac 上。如果您使用操作系统提供的 python (/usr/bin/python),则无需安装它


1
投票

这可能有用:

import subprocess
subprocess.call(["say","Hello World! (MESSAGE)"])

0
投票

查看 Pyt2s 库。它有如此多的声音和语言。只需要连接互联网即可使用。

安装库:

pip install pyt2s

示例代码:

from pyt2s.services import stream_elements

obj = stream_elements.StreamElements() 

data = obj.requestTTS('Lorem Ipsum is simply dummy text.')

with open('output.mp3', '+wb') as file:
    file.write(data)
© www.soinside.com 2019 - 2024. All rights reserved.