Apple'in yeni SpeechAnalyzer yığınından özel kelime dağarcığı kaybolmadı. Önemli detay modül seçimidir. Apple, AnalysisContext.contextualStrings'yi özellikle DictationTranscriber ile birlikte belgeler. SpeechTranscriber etrafında inşa ediyorsanız, aynı bağlamı eklemenin size aynı kelime davranışını verdiğini varsaymayın.

Kısa versiyon: Bağlamsal ifadeler tanıma tasarımınızın bir parçası olduğunda DictationTranscriber'i seçin. Listeyi kısa tutun, cümleleri kısa tutun ve bunları garantili değiştirmeler yerine önyargılı ipuçları olarak ele alın.

İki transkripsiyon modülü vardır - ve bunlar değiştirilebilir değildir

iOS 26'in Konuşma çerçevesi transkripsiyonu modüler hale getirir. SpeechTranscriber, Apple'ün normal konuşma için genel amaçlı transkripsiyonudur. DictationTranscriber sistem diktesine daha yakındır ve ek doğruluk kontrollerini açığa çıkarır.

İhtiyaçÖnce değerlendirilecek modülNeden
Genel konuşma / uzun biçimli transkripsiyonSpeechTranscriberApple bunu genel amaçlı konuşmadan metne modül olarak tanımlar.
Uygulamaya özgü isimler veya terimlerle kısa dikteDictationTranscriberApple, AnalysisContext.contextualStrings'i bu modülle açıkça belgelemektedir.
Özel telaffuz / dil modeliDictationTranscriberAyrıca SFSpeechLanguageModel tarafından desteklenen özelleştirilmiş bir dil içeriği ipucunu da ortaya çıkarır.

BağlamsalStrings gerçekte nasıl çalışır

AnalysisContext.contextualStrings, bağlamsal dize etiketlerine göre gruplandırılmış bir sözlüktür. Apple, bu kelimelerin veya ifadelerin, uygulamaya özgü adların, ürünlerin, yerlerin, etki alanı terminolojisinin veya olağandışı kelimelerin tanınma olasılığını artırmak için DictationTranscriber ile kullanılabileceğini söylüyor.

let context = AnalysisContext()
context.contextualStrings[.general] = [
    "Simple Memo",
    "Obsidian",
    "SpeechAnalyzer"
]

try await analyzer.setContext(context)

Uygulamada üç sınır önemlidir:

  • İfadeleri kısa tutun. Apple mümkün olduğunda bir veya iki kelime önerir.
  • Tüm etiketlerde toplamı 100 veya daha az ifade olarak tutun.
  • Bunlar garanti değil, ipuçlarıdır. API tanımayı önyargılı hale getirir; kesin bir transkripsiyon vaat etmez.

setContext bağlamın yerini alır - eklenmez

SpeechAnalyzer.setContext(_:), analizörün geçerli bağlam nesnesinin yerini alır. Yeni bir grup eklerken önceki ifadeleri korumak istiyorsanız, kullanmak istediğiniz tamamen yeni bağlamı oluşturun ve bunu ayarlayın.

let next = AnalysisContext()
next.contextualStrings[.general] = baseTerms + currentScreenTerms
try await analyzer.setContext(next)

Bu aynı zamanda etiketleri kullanışlı hale getirir: kategorileri kendi durumunuzda tutabilir ve tekrarlanan setContext aramalarını artımlı eklemeler olarak ele almak yerine bağlamı kasıtlı olarak yeniden oluşturabilirsiniz.

Peki ya SpeechTranscriber?

Apple'in SpeechTranscriber için mevcut belgeleri, contextualStrings'yi bu modülün doğruluk kontrollerinden biri olarak belgelemiyor. Buna karşılık, DictationTranscriber belgeleri açıkça geliştiricilere bir AnalysisContext oluşturmalarını ve contextualStrings'e kelimeler eklemelerini söyler.

Bu ayrım güvenli uygulama sınırıdır: hedef işletim sisteminizde, yerel ayarınızda ve cihazınızda tam olarak ihtiyacınız olan davranışı bağımsız olarak doğrulamadığınız sürece bağlamsal kelime dağarcığı etrafında bir SpeechTranscriber boru hattı tasarlamayın.

Bugün uzun biçimli konuşmada kelime dağarcığına ihtiyacınız varsa

Evrensel bir göç kuralı yoktur. Mevcut SFSpeechRecognizer yolunuz zaten contextualStrings'e bağlıysa, iOS 26'e geçmek, mekanik bir API yeniden adlandırma yerine bir modül seçimi ve regresyon testi alıştırması olarak ele alınmalıdır.

  1. DictationTranscriber'in ihtiyacınız olan süreye, gecikmeye, yerel ayara ve aygıt aralığına uygun olup olmadığını test edin.
  2. Daha zengin bir kelime hazinesine ihtiyacınız varsa, özelleştirilmiş dil modeli seçeneğini değerlendirin.
  3. Yeni modül yolu, ürününüzün bağlı olduğu davranışı korumazsa, diğer yolları ayrı ayrı geçirirken bu kullanım durumu için kanıtlanmış SFSpeechRecognizer yolunu saklayın.

Minimal karar kuralı

Önce konuşma: SpeechTranscriber ile başlayın. Önce kelime hazinesi: DictationTranscriber'i değerlendirerek başlayın. Kelime hazinesi kritikse, modüller arasındaki eşitlik varsaymak yerine, gönderdiğiniz gerçek kelimeleri ve yerel ayarları ölçün.

İlgili uygulama kılavuzu

Canlı mikrofon boru hattı için - model varlıkları, PCM dönüşümü, uçucu ve nihai sonuçlar, durdurma/sonlandırma davranışı ve Swift 6 eşzamanlılığı - iOS 26 SpeechAnalyzer canlı mikrofon kılavuzunun tamamına bakın. Çalıştırılabilir örnek GitHub (MIT)'dedir.

Birincil kaynaklar