6
如何更改OS X的“ say”命令的发音方式?
OS X的say命令对于某些任务很有用(例如,Skype的“联系人在线时通知我”),但它会错误地发音某些名称。有没有办法教say一个不同的单词发音? 例如,尝试: say "Hi, Joel Spolsky" “ ol”听起来像“球”而不是“旧”。我想添加一个例外,说“ Pronounce Spolsky像这样”,而不是尝试教授新的语言规则。我敢打赌,有一种方法可以让它按照苹果想要的发音“ iphone”。 更新 -经过研究,这是我所学到的: 文本转语音在将文本转换为音素之间进行拆分,然后使用语音将音素转换为音频。更改声音不会影响音素。 该语音合成管理器有一些功能将文本到音素,而对于一个方法 登记语音字典,将增加新的文本音素地图。但是,Apple的语音词典必须采用二进制格式-我没有找到任何plist XML。 使用dtrace时say,我在/System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources中打开了一些有趣的文件。这可能是语音词典,但是它们都是二进制的,但Homophones(XML)除外。将条目添加到同音字不起作用-它可能用于语音到文本。它们也是Apple签署的代码-更改它们可能会阻止某些程序运行。 前缀字典 购物车名称 CartLite 符号词典 同音字 有多种方法可以添加应用程序界面元素的文本版本,以便VoiceOver可以正常工作,开发人员可以免费获得其中的许多功能,但是有些技巧。这里的标准似乎是根据需要使用语音拼写。 我的猜测是: say是语音合成管理器之上的一小段代码。对于Apple开发人员而言,添加命令行选项以将其转到语音词典plist的路径以进行备用音素映射将很容易,但是事实并非如此。编写更好的可能是一个有用的开源项目say。 Skype可能直接使用了语音合成管理器,除了通过语音拼写(很愚蠢)外,没有其他方法可以改变我朋友名字的发音方式。 制作命令行版本的最简单方法say是JRobert的建议。 这是我使用道格·哈里斯(Doug Harris)的拼写建议的快速实现: #!/bin/sh echo $@ | tr '[A-Z]' '[a-z]' | sed "s/spolsky/spowlsky/g" | /usr/bin/say 最后,一些有趣的命令行内容: # Apple is weird sqlite3 /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources/Tuples …