iOS 26이 사용자 정의 어휘를 죽이지 않았습니다 — 잘못된 모듈에 추가하고 있습니다.
이 페이지는 영어 원문을 기계 번역한 것입니다. 영어 원문 보기
사용자 정의 어휘가 Apple의 새로운 SpeechAnalyzer 스택에서 사라지지 않았습니다. 중요한 세부 사항은 모듈 선택입니다. Apple은 AnalysisContext.contextualStrings를 DictationTranscriber과 구체적으로 문서화합니다. SpeechTranscriber를 중심으로 구축하고 있다면, 동일한 컨텍스트를 첨부해도 동일한 어휘 동작이 나온다고 가정하지 마십시오.
간략 버전: 맥락에 맞는 구문이 인식 디자인의 일부인 경우 DictationTranscriber을 선택하십시오. 목록을 짧게 유지하고, 구문은 간결하게 유지하며, 이를 보장된 대체가 아니라 편향된 힌트로 간주하십시오.
두 개의 전사 모듈이 있으며, 서로 교환할 수 없습니다.
iOS 26의 Speech 프레임워크는 전사를 모듈식으로 만듭니다. SpeechTranscriber는 Apple의 일반 대화를 위한 범용 전사기입니다. DictationTranscriber는 시스템 받아쓰기에 더 가깝고 추가적인 정확도 제어를 제공합니다.
| 필요 | 첫 번째 평가 모듈 | 왜 |
|---|---|---|
| 일반 대화 / 장문 전사 | SpeechTranscriber | Apple은 이를 범용 음성-텍스트 모듈이라고 설명합니다. |
| 앱별 이름 또는 용어가 포함된 짧은 받아쓰기 | DictationTranscriber | Apple은 이 모듈을 사용하여 AnalysisContext.contextualStrings을 명시적으로 문서화합니다. |
| 맞춤 발음 / 언어 모델 | DictationTranscriber | 또한 SFSpeechLanguageModel이 지원하는 맞춤형 언어 콘텐츠 힌트를 공개합니다. |
contextualStrings가 실제로 작동하는 방식
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에 단어를 추가하도록 명시적으로 지시합니다.
그 구분은 안전한 구현 경계입니다: 대상 OS, 로케일 및 장치에서 필요한 정확한 동작을 독립적으로 검증하지 않는 한, 상황에 맞는 어휘를 중심으로 SpeechTranscriber 파이프라인을 설계하지 마십시오.
오늘 장문 연설 어휘가 필요하시면
보편적인 마이그레이션 규칙은 없습니다. 귀하의 기존 SFSpeechRecognizer 경로가 이미 contextualStrings에 의존하고 있는 경우, iOS 26으로 이동하는 것은 기계적인 API 이름 변경이 아니라 모듈 선택 및 회귀 테스트 작업으로 간주되어야 합니다.
DictationTranscriber이 필요하신 기간, 지연 시간, 로케일 및 장치 범위에 맞는지 테스트하십시오.- 보다 풍부한 어휘가 필요하시면, 맞춤형 언어 모델 옵션을 평가하십시오.
- 새 모듈 경로 중 어느 것도 제품이 의존하는 동작을 보존하지 못한다면, 해당 사용 사례에 대해 검증된
SFSpeechRecognizer경로를 유지하면서 다른 경로를 별도로 마이그레이션하십시오.
최소 결정 규칙
Conversation-first:는 SpeechTranscriber으로 시작합니다. Vocabulary-first:는 DictationTranscriber을 평가함으로써 시작합니다. 어휘가 중요한 경우, 모듈 간 패리티를 가정하는 대신 실제 단어와 로케일에 대한 인식을 측정하십시오.
관련 구현 가이드
실시간 마이크 파이프라인 — 모델 자산, PCM 변환, volatile vs 최종 결과, 정지/최종 동작 및 Swift 6 동시성 — 전체 iOS 26 SpeechAnalyzer 라이브 마이크 가이드를 참조하십시오. 실행 가능한 샘플은 GitHub (MIT)에 있습니다.