创建NSSpeechSynthesizer自定义发音字典遇-50错误,求正确实现
解决NSSpeechSynthesizer添加自定义字典时的-50错误
你的代码触发-50错误的核心原因是自定义字典的格式不符合要求——addSpeechDictionary不接受直接将发音字符串作为值传入,每个条目的值必须是包含指定键的子字典。
正确实现代码
import AppKit let speaker = NSSpeechSynthesizer() // 构建符合要求的自定义发音字典 let speechDictionary: [NSSpeechSynthesizer.DictionaryKey: Any] = [ NSSpeechSynthesizer.DictionaryKey(rawValue: "fish"): ["Phonetic": "fiiiiiiiiiiish"], NSSpeechSynthesizer.DictionaryKey(rawValue: "emacspeak"): ["Phonetic": "e mac speak"] ] // 添加字典并处理错误 do { try speaker.addSpeechDictionary(speechDictionary) } catch { print("添加自定义字典失败: \(error.localizedDescription)") } speaker.startSpeaking("I enjoy fish and emacspeak")
关键说明
- 字典格式要求:每个需要自定义发音的词/短语作为
NSSpeechSynthesizer.DictionaryKey的原始值,对应的值必须是一个子字典,用"Phonetic"键指定发音字符串。 - 错误处理:改用
try/catch捕获具体错误信息,比单纯的日志更便于排查问题。 - 短语自定义:直接将短语(比如"emacspeak")作为键即可实现整段发音的自定义。
内容的提问来源于stack exchange,提问作者robertmeta
相关产品推荐
相关产品推荐

