我希望使用Swift在OSX上进行文本语音处理,其中语音使用的语言与为系统设置的首选项不同。我相信正确的方法是使用NSVoiceLocaleIdentifier。我在API documentation:
中看到了这一点NSVoiceLocaleIdentifier
声音的语言。 NSString
声明
NSString * const NSVoiceLocaleIdentifier;
讨论
描述的规范区域设置标识符字符串 语音的语言环境。语言环境通常由三部分组成 有序信息:语言代码,区域代码和变体 码。请参阅有关NSLocale类的文档或 国际化和本地化指南以获取更多信息。
我已经仔细阅读了有关NSLocale类和国际化和本地化指南的文档链接,下载了示例代码等,但我仍然没有找到NSStrings外观的参考。有人知道那些语言,区域和变体代码是什么以及它们是如何格式化的吗?
非常感谢提前。
答案 0 :(得分:1)
拼凑一些东西 - 首先归功于信用到期,感谢Eric Aya解释如何获得Xcode playground to do speech synthesis,George Warner用于sample code printing out the available voices and locations,以及在上面的评论中Matt,我将我引向了一条工作路径。除非我有这个错误,否则看起来各种声音都围绕特定语言。所以我相信你为这个位置设置了声音。
这是Xcode游乐场的设置:
import Cocoa
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
以下是如何用西班牙语发声:
let synth = NSSpeechSynthesizer()
synth.setVoice( "com.apple.speech.synthesis.voice.paulina.premium" )
synth.startSpeaking( "Hola Mundo mañana" )
我怎么知道com.apple.speech.synthesis.voice.paulina.premium用西班牙语发言?
for voiceIdentifierString: String in NSSpeechSynthesizer.availableVoices() {
var voiceLocaleIdentifier = ( NSSpeechSynthesizer.attributes( forVoice: voiceIdentifierString )[ NSVoiceLocaleIdentifier ] as! String )
print( "\(voiceIdentifierString) speaks \(voiceLocaleIdentifier)" )
}
如果我的假设错了,请纠正我。我正在为可能遇到类似需求的人发布此内容。