2014-09-19 34 views
0

我想为Mac编写一个应用程序,截取操作系统处理文本到语音的内置方式。这需要通过接收事件“有人​​已经开始标准”开始说话“功能”来触发。截取系统宽Mac OS X SpeechSynthesizer使用文本到语音时的事件

从阅读Speech synthesis programming guide看来,语音合成框架似乎是可插入的,并且将是一个合适的地方来拦截传入的TTS请求。不幸的是,这些文件尤其没有提供有关如何在全球范围内完成截取的见解。我在哪里可以学习如何实施这种拦截计划?

回答

1

根据我对API的使用经验,我确信全球访问此信息的唯一方法是轮询NSSpeechSynthesizer的+isAnyApplicationSpeakingSpeechBusySystemWide()。你可以尝试绑定前者,但我认为我已经尝试过,并且它不是KVO兼容的。

+0

我明白了,但即使这些方法会将事件发送给我,我也无法真正拦截tts请求调用。另一种方法可能是创建一种'伪声音',将TTS功能​​委托给其他可用的声音。你知道有关如何以编程方式创建自己的“自定义语音”的任何信息吗?这应该是公共API,考虑到这些声音似乎有第三方提供商 - 但我无法找到任何有关这些信息的信息。 – keyboardsamurai 2014-09-21 10:06:18

+1

有趣的方法@keyboardsamurai!有莫尔斯“语音”示例代码。您目前会遇到麻烦让它实际构建AFAIK。检查https://lists.apple.com/mailman/options/speech-dev/。 – JanX2 2014-09-22 10:48:15

+0

真棒 - 它看起来就是我所需要的。非常感谢。我在https://developer.apple.com/library/mac/samplecode/MorseSynthesizer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011314-Intro-DontLinkElementID_2 – keyboardsamurai 2014-09-22 12:35:25