iOS 26没有杀死自定义词汇——您将其添加到错误的模块
本页面由英语原文机器翻译而成。 阅读英语原文
自定义词汇没有从Apple的新SpeechAnalyzer堆栈中消失。重要的细节是模块选择。 Apple专门用DictationTranscriber记录AnalysisContext.contextualStrings。 如果您是围绕SpeechTranscriber构建的,不要假设附加相同的上下文会为您提供相同的词汇行为。
简短版本:当上下文短语是您识别设计的一部分时,请选择DictationTranscriber。 保持列表简短,保持短语简短,并将它们视为有偏见的暗示,而不是保证的替换。
有两个转录模块——它们不能互换
iOS 26的语音框架使转录变得模块化。 SpeechTranscriber是Apple的通用转录器,用于正常对话。 DictationTranscriber更接近系统听写,并暴露了额外的准确性控制。
| 需要 | 首先评估模块 | 为什么 |
|---|---|---|
| 一般对话/长篇转录 | SpeechTranscriber | Apple将其描述为通用的语音转文本模块。 |
| 带有特定于应用程序的名称或术语的简短听写 | DictationTranscriber | Apple 明确记录了带有此模块的 AnalysisContext.contextualStrings。 |
| 自定义发音/语言模型 | DictationTranscriber | 它还暴露了由SFSpeechLanguageModel支持的定制语言内容提示。 |
contextStrings的实际工作方式
AnalysisContext.contextualStrings是一个按上下文字符串标签分组的字典。 Apple表示,这些单词或短语可以与DictationTranscriber一起使用,以提高识别特定于应用程序的名称、产品、地点、域术语或不寻常的单词的可能性。
let context = AnalysisContext()
context.contextualStrings[.general] = [
"Simple Memo",
"Obsidian",
"SpeechAnalyzer"
]
try await analyzer.setContext(context)
三个限制在实践中很重要:
- 保持短语简短。 Apple尽可能推荐一个或两个单词。
- 在所有标签中将总数保持在100或更少的短语。
- 这些是提示,不是保证。API有偏见的识别;它不承诺精确的转录。
setContext替换上下文——它不附加
SpeechAnalyzer.setContext(_:)替换分析器的当前上下文对象。 如果您想在添加新组时保留早期的短语,请构建要使用的完整新上下文并进行设置。
let next = AnalysisContext()
next.contextualStrings[.general] = baseTerms + currentScreenTerms
try await analyzer.setContext(next)
这也使标签变得有用:您可以在自己的状态下保持类别,并有意识地重建上下文,而不是将重复的setContext调用视为增量添加。
SpeechTranscriber怎么样?
Apple 的 SpeechTranscriber 當前文件未將 contextualStrings 記錄為該模組的精度控制之一。 相比之下,DictationTranscriber文档明确告诉开发人员创建AnalysisContext并在contextualStrings中添加单词。
这种区别是安全的实现边界:不要围绕上下文词汇设计SpeechTranscriber管道,除非你在目标操作系统、区域设置和设备上独立验证了所需的确切行为。
如果您今天需要长篇演讲的词汇
没有普遍的移民规则。 如果您现有的SFSpeechRecognizer路径已经依赖于contextualStrings,那么移动到iOS 26应被视为模块选择和回归测试练习,而不是机械的API重命名。
- 测试
DictationTranscriber是否符合您所需的持续时间、延迟、区域设置和设备范围。 - 如果您需要更丰富的词汇,请评估其自定义语言模型选项。
- 如果两个新模块路径都没有保留您的产品所依赖的行为,请保留该用例的经过验证的
SFSpeechRecognizer路径,同时单独迁移其他路径。
最小决策规则
对话优先:从SpeechTranscriber开始。词汇优先:从评估DictationTranscriber开始。 如果词汇至关重要,请根据您发送的实际单词和区域来衡量识别,而不是假设模块之间的奇偶性。
相关实施指南
关于实时麦克风处理流程,包括模型资源、PCM 转换、暂定结果与最终结果、停止与收尾行为,以及 Swift 6 并发处理,请参阅完整的 iOS 26 SpeechAnalyzer 实时麦克风指南。可运行示例位于 GitHub(MIT 许可证)。