如何使用Objective-C安装OS X TTS语音?

4

OS X Lion自带了一些出色的Nuance语音。我想从我的软件中使用它们,但目前需要用户手动进入“系统偏好设置”,“听写与语音”,“系统语音” -> “自定义”,然后从Apple下载语音。我想通过Objective-C调用某些内容,以便缺少的语音(比如中文语音)可以在后台自动下载。这该怎么做呢?

顺便说一下,可以使用以下代码找到系统中可用的语音:

[NSSpeechSynthesizer availableVoices]

但是目前所有可能的声音都只能在听写和语音对话框中找到。以下是手动完成的步骤: enter image description here enter image description here enter image description here

这可能会有所帮助:http://useyourloaf.com/blog/2014/01/08/synthesized-speech-from-text.html - Desdenova
谢谢,但链接是针对iOS而不是OSX的。 - tofutim
3个回答

5
我非常怀疑有任何可靠的方法来实现这一点。您应该将用户指向一个帮助页面,解释此过程(最好是苹果网站上的帮助页面,因为如果该过程发生变化,他们会及时更新)。
您需要root访问权限才能执行此操作,但App Store应用禁止使用该权限。而且,它几乎肯定需要与软件更新过程绑定在一起,该过程极其复杂、完全未记录,随时可能发生变化。
或者,联系Nuance以获得分发语音的许可证。它们都是可以出售的。如果您只在用户可以免费获取它们的Mac上安装,则可能甚至可以获得折扣价。

我有点难过,因为“无”是唯一的答案。AppStore应用程序可以要求root访问权限吗?或者运行一个安装程序来获取权限?我想知道是否有一种脚本方式来实现这一点?也许监听数据包并查看声音是如何被降低的,并进行复制? - tofutim
安装提示是来自已下载的安装程序还是语音和听写小程序?也许它只是查找在线索引,然后下载安装程序并运行。可能会自动请求root访问权限。 - tofutim
"2.27申请升级到根权限或使用setuid属性的应用将被拒绝" - 所以不,你不能从应用商店应用程序中这样做。 - Abhi Beckert
安装提示是 pkg 的一部分,运行 man pkgutil 并查看 apropos pkg 以获取其他与 pkg 相关的命令行实用程序,如果您愿意需要 root 访问权限并冒着直接下载文件违反版权的风险(我不是律师。我认为这将是一个法律灰色地带)。 - Abhi Beckert

1
你可以使用 this AppleScript 来编程安装 TTS Voice,但是 MacOS 已经预装了所有的语音!但并不是所有语音都显示在“Dictation & Speech->System Voice”中。原因是它们是非常简单(紧凑)的版本,MacOS 只显示安装的完整版本声音,如:“Alex”。例如:你可以看到我的配置只有英文语音,但下一个示例可以完美地处理西班牙文本。Swift 示例:
var voice:NSSpeechSynthesizer = NSSpeechSynthesizer(voice: "com.apple.speech.synthesis.voice.diego")
voice.startSpeakingString("España y los españoles")

终端示例:
say -v monica "En España a los españoles les encanta paella"

我认为必须以某种方式有常规和增强语音。 - tofutim

0

如何获取下载列表还是个谜...不过...

使用wireshark,就可以确定声音位置。确实有一个pkg从Apple下载。是否需要凭证等是另外一个问题。

enter image description here

以下是其他示例URL:

/content/downloads/10/29/041-5265/kKRs5z32DcbrGdV4TZvY9hcqy8tcpkbX43/MLV_en_AU_karen.pkg

下载后,可以运行安装程序进行安装。

更新:我能够使用http从Windows下载pkg。此外,这是另一个链接。

http://swcdn.apple.com/content/downloads/59/49/041-4469/WNshMBxxbxx5qXv27Mrvxm7yKcSRM75sVw/041-4469.English.dist

提供有关041-4469的信息,包括软件包名称。


问题在于URL随时可能发生变化。提供软件更新的整个系统随时可能发生变化。苹果公司有多次更改这些事情的历史。如果他们发现人们依赖他们按照某种特定方式行事,那么苹果就有可能实施加密措施,以使逆向工程变得极其困难。他们不喜欢应用开发者依赖不被苹果正式支持的行为。他们的观点是,如果你的应用程序今天可以使用,那么当他们在5年内显著改变平台时,它仍应该完美地工作。 - Abhi Beckert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接