You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建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")

关键说明

  1. 字典格式要求:每个需要自定义发音的词/短语作为NSSpeechSynthesizer.DictionaryKey的原始值,对应的值必须是一个子字典,用"Phonetic"键指定发音字符串。
  2. 错误处理:改用try/catch捕获具体错误信息,比单纯的日志更便于排查问题。
  3. 短语自定义:直接将短语(比如"emacspeak")作为键即可实现整段发音的自定义。

内容的提问来源于stack exchange,提问作者robertmeta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:27:27