لم تختف المفردات المخصصة من مجموعة SpeechAnalyzer الجديدة في Apple. التفاصيل المهمة هي اختيار الوحدة. يوثق Apple AnalysisContext.contextualStrings على وجه التحديد مع DictationTranscriber. إذا كنت تبني حول SpeechTranscriber، فلا تفترض أن إرفاق نفس السياق يمنحك نفس سلوك المفردات.

نسخة مختصرة: اختر DictationTranscriber عندما تكون العبارات السياقية جزءا من تصميم التعرف الخاص بك. اجعل القائمة قصيرة، واجعل العبارات مختصرة، وتعامل معها على أنها تلميحات متحيزة بدلا من بدائل مضمونة.

هناك وحدتان للنسخ - وهما غير قابلتين للتبديل

إطار عمل الكلام iOS 26 يجعل النسخ معياريا. SpeechTranscriber هو ناسخ Apple للأغراض العامة للمحادثة العادية. DictationTranscriber أقرب إلى إملاء النظام ويعرض ضوابط دقة إضافية.

تحتاجوحدة التقييم أولالماذا
محادثة عامة / نسخ طويلSpeechTranscriberApple يصفها بأنها وحدة تحويل الكلام إلى نص للأغراض العامة.
إملاء قصير بأسماء أو مصطلحات خاصة بالتطبيقDictationTranscriberApple يوثق صراحة AnalysisContext.contextualStrings مع هذه الوحدة.
النطق المخصص / نموذج اللغةDictationTranscriberكما أنه يعرض تلميحا مخصصا لمحتوى اللغة المدعوم ب SFSpeechLanguageModel.

كيف تعمل السلاسل السياقية بالفعل

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).

المصادر الأولية