11

Mac Lionの組み込みのテキスト読み上げエンジンを使用したテキスト読み上げ変換を実行または許可するPythonのライブラリはありますか?私はグーグルをしましたが、ほとんどはウィンドウベースです。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

これらのエラーを解決するにはどうすればよいですか?

4

3 に答える 3

38

これを行う方がはるかに簡単ではないでしょうか。

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/Reference .html

于 2012-10-06T16:12:14.357 に答える
13

プラットフォームとしてMacOSXをターゲットにしている場合は、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にすでにインストールされている必要があることに注意してください。OS提供のPython(/ usr / bin / python)を使用している場合は、インストールする必要はありません。

于 2013-02-20T06:33:50.727 に答える
1

これはうまくいくかもしれません:

import subprocess
subprocess.call(["say","Hello World! (MESSAGE)"])
于 2017-02-07T03:00:27.600 に答える