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 授權條款)。