Gibt es in Python Bibliotheken, die die Konvertierung von Text in Sprache mithilfe der in Mac Lion integrierten Text-in-Sprache-Engine ermöglichen oder ermöglichen? Ich habe googelt, aber die meisten basieren auf Windows. Ich habe pyttx ausprobiert. Ich habe versucht zu rennen

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()

Aber ich bekomme diese Fehler

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

Wie löse ich diese Fehler?

9
VeilEclipse 6 Okt. 2012 im 13:39

3 Antworten

Beste Antwort

Wäre es nicht viel einfacher, dies zu tun?

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

Sie können man say eingeben, um andere Dinge anzuzeigen, die Sie mit dem Befehl say tun können.

Wenn Sie jedoch erweiterte Funktionen wünschen, können Sie auch AppKit importieren, obwohl einige Kenntnisse in Cocoa / Objective C erforderlich sind.

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

Wenn Sie mehr über NSSpeechSynthesizer erfahren möchten, lesen Sie die Dokumentation von Apple: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSSpeechSynthesizer_Class/Reference/Reference.html

36
Frederik 24 Jän. 2016 im 12:52

Wenn Sie auf Mac OS X als Plattform abzielen, sind PyObjC und NSSpeechSynthesizer die beste Wahl.

Hier ist ein kurzes Beispiel für Sie

#!/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)

Bitte beachten Sie, dass das AppKit-Modul Teil der PyObjC-Bridge ist und bereits auf Ihrem Mac installiert sein sollte. Sie müssen es nicht installieren, wenn Sie eine vom Betriebssystem bereitgestellte Python (/ usr / bin / python) verwenden.

9
arainchi 3 Aug. 2017 im 21:37

Dies könnte funktionieren:

import subprocess
subprocess.call(["say","Hello World! (MESSAGE)"])
1
Ted Klein Bergman 7 Feb. 2017 im 05:33