从Python设置NSSpeechSynthesizer模式
我正在使用PyObjC绑定尝试从音素获取语音文件 我发现我可以把语言变成声音,如下所示:从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
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
来设置它
有两件事我不明白:
- 哪里是
在PyObjC?我浏览了整个PyObjC目录,哪里都没有提到NSSpeechSynthesizer.SpeechPropertyKey.Mode
SpeechPropertyKey
- 我如何使用
来设置它?基于此,我认为第一个参数是要设置的值(虽然它被称为“对象”,在这种情况下是真的?),第二个是键(在这种情况下是音素?),最后是一个错误回调。但我不确定如何在Python中传递这些参数setObject\u forProperty\u error\u
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