自定义词汇没有从Apple的新SpeechAnalyzer堆栈中消失。重要的细节是模块选择。 Apple专门用DictationTranscriber记录AnalysisContext.contextualStrings。 如果您是围绕SpeechTranscriber构建的,不要假设附加相同的上下文会为您提供相同的词汇行为。

简短版本:当上下文短语是您识别设计的一部分时,请选择DictationTranscriber。 保持列表简短,保持短语简短,并将它们视为有偏见的暗示,而不是保证的替换。

有两个转录模块——它们不能互换

iOS 26的语音框架使转录变得模块化。 SpeechTranscriber是Apple的通用转录器,用于正常对话。 DictationTranscriber更接近系统听写,并暴露了额外的准确性控制。

需要首先评估模块为什么
一般对话/长篇转录SpeechTranscriberApple将其描述为通用的语音转文本模块。
带有特定于应用程序的名称或术语的简短听写DictationTranscriberApple 明确记录了带有此模块的 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重命名。

  1. 测试DictationTranscriber是否符合您所需的持续时间、延迟、区域设置和设备范围。
  2. 如果您需要更丰富的词汇,请评估其自定义语言模型选项。
  3. 如果两个新模块路径都没有保留您的产品所依赖的行为,请保留该用例的经过验证的SFSpeechRecognizer路径,同时单独迁移其他路径。

最小决策规则

对话优先:从SpeechTranscriber开始。词汇优先:从评估DictationTranscriber开始。 如果词汇至关重要,请根据您发送的实际单词和区域来衡量识别,而不是假设模块之间的奇偶性。

相关实施指南

关于实时麦克风处理流程,包括模型资源、PCM 转换、暂定结果与最终结果、停止与收尾行为,以及 Swift 6 并发处理,请参阅完整的 iOS 26 SpeechAnalyzer 实时麦克风指南。可运行示例位于 GitHub(MIT 许可证)。

主要来源