iOS 26 özel kelime dağarcığını öldürmedi - yanlış modüle ekliyorsunuz
Bu sayfa İngilizce aslından makine çevirisiyle hazırlanmıştır. İngilizce aslını okuyun
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ül | Neden |
|---|---|---|
| Genel konuşma / uzun biçimli transkripsiyon | SpeechTranscriber | Apple bunu genel amaçlı konuşmadan metne modül olarak tanımlar. |
| Uygulamaya özgü isimler veya terimlerle kısa dikte | DictationTranscriber | Apple, AnalysisContext.contextualStrings'i bu modülle açıkça belgelemektedir. |
| Özel telaffuz / dil modeli | DictationTranscriber | Ayrı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.
DictationTranscriber'in ihtiyacınız olan süreye, gecikmeye, yerel ayara ve aygıt aralığına uygun olup olmadığını test edin.- Daha zengin bir kelime hazinesine ihtiyacınız varsa, özelleştirilmiş dil modeli seçeneğini değerlendirin.
- 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ış
SFSpeechRecognizeryolunu 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.