从Python设置NSSpeechSynthesizer模式

从Python设置NSSpeechSynthesizer模式,python,objective-c,text-to-speech,appkit,nsspeechsynthesizer,Python,Objective C,Text To Speech,Appkit,Nsspeechsynthesizer,我正在使用PyObjC绑定尝试从音素获取语音文件 我发现我可以把语言变成声音,如下所示: import AppKit ss = AppKit.NSSpeechSynthesizer.alloc().init() ss.setVoice_('com.apple.speech.synthesis.voice.Alex') ss.startSpeakingString_toURL_("Hello", AppKit.NSURL.fileURLWithPath_("hello

我正在使用PyObjC绑定尝试从音素获取语音文件

我发现我可以把语言变成声音,如下所示:

import AppKit
ss = AppKit.NSSpeechSynthesizer.alloc().init()
ss.setVoice_('com.apple.speech.synthesis.voice.Alex')
ss.startSpeakingString_toURL_("Hello", AppKit.NSURL.fileURLWithPath_("hello.aiff"))
# then wait until ve.isSpeaking() returns False
接下来,为了更好地控制,我想先把文本转换成音素,然后再说出来

phonemes = ss.phonemesFromText_("Hello")
但现在我被卡住了,因为我从文档中知道,要获得
startSpeakingString
以接受音素作为输入,首先需要将NSSpeechSynthesizer.SpeechPropertyKey.Mode设置为“phoneme”。我想我应该使用
setObject\u forProperty\u error\u
来设置它

有两件事我不明白:

  • 哪里是
    NSSpeechSynthesizer.SpeechPropertyKey.Mode
    在PyObjC?
    我浏览了整个PyObjC目录,哪里都没有提到
    SpeechPropertyKey

  • 我如何使用
    setObject\u forProperty\u error\u
    来设置它?
    基于此,我认为第一个参数是要设置的值(虽然它被称为“对象”,在这种情况下是真的?),第二个是键(在这种情况下是音素?),最后是一个错误回调。但我不确定如何在Python中传递这些参数

PyObjC中的NSSpeechSynthesizer.SpeechPropertyKey.Mode在哪里

没有

如何使用setObject\u forProperty\u error\u进行设置

“PHON”与NSSpeechSynthesizer.SpeechPropertyKey.Mode.Phone相同 “Input”与NSSpeechSynthesizer.SpeechPropertyKey.inputMode相同

在PyObjC中似乎没有定义这些代码,但我通过启动XCode并编写一个简短的Swift代码片段找到了它们:

import Foundation
import AppKit

let synth = NSSpeechSynthesizer()
let x = NSSpeechSynthesizer.SpeechPropertyKey.Mode.phoneme
let y = NSSpeechSynthesizer.SpeechPropertyKey.inputMode
现在查看调试器中的x和y,可以看出它们就是上面提到的字符串

至于如何调用setObject\u forProperty\u error\u,我只是尝试将这些字符串和None作为错误处理程序传入,结果成功了

import Foundation
import AppKit

let synth = NSSpeechSynthesizer()
let x = NSSpeechSynthesizer.SpeechPropertyKey.Mode.phoneme
let y = NSSpeechSynthesizer.SpeechPropertyKey.inputMode