SFSpeechRecognizer iOS ایکو سسٹم میں Apple کی بنیادی اسپیچ ریکگنیشن API ہے۔ فریم ورک Speech.framework کے ذریعے ڈیوائس کے ASR انجن تک رسائی فراہم کرتا ہے، ریئل ٹائم سٹریمنگ ٹرانسکرپشن اور ایک بار آڈیو فائل ریکگنیشن کو سپورٹ کرتا ہے۔ SFSpeechRecognizer iOS 10+، macOS 10.15+، watchOS 6+ اور tvOS 17+ پر دستیاب ہے۔ iOS 17 کے ساتھ، Apple نے ایک مکمل آن ڈیوائس موڈ شامل کیا ہے جو انٹرنیٹ کنکشن کے بغیر اسپیچ ریکگنیشن کی اجازت دیتا ہے۔ Apple Speech Documentation، 2025 کے مطابق، SFSpeechRecognizer 200,000 سے زیادہ App Store ایپلیکیشنز میں استعمال ہوتا ہے اور انگریزی میں 7% WER کے ساتھ روزانہ لاکھوں درخواستوں پر کارروائی کرتا ہے۔
اہم نکات
SFSpeechRecognizer Speech.framework کی ایک کلاس ہے جو کسی مخصوص زبان کے لیے اسپیچ ریکگنائزر کی نمائندگی کرتی ہے۔ یہ Locale (ru_RU، en_US، zh_CN) کے ساتھ شروع کی جاتی ہے۔ SFSpeechRecognizer ایک ریکگنیشن درخواست (SFSpeechRecognitionRequest) کا انتظام کرتی ہے اور ٹرانسکرپشنز اور میٹا ڈیٹا کے ساتھ نتیجہ (SFSpeechRecognitionResult) لوٹاتی ہے۔ یہ دو قسم کی درخواستوں کو سپورٹ کرتی ہے: SFSpeechAudioBufferRecognitionRequest (لائیو آڈیو سٹریم) اور SFSpeechURLRecognitionRequest (آڈیو فائل)۔ دونوں SFTranscription لوٹاتے ہیں — متبادل ریکگنیشن مفروضوں کی ایک صف۔
SFSpeechRecognitionResult میں شامل ہے: bestTranscription (بہترین مفروضہ، SFTranscription)، transcriptions (تمام متبادل)، isFinal (حتمی/درمیانی)۔ SFTranscription میں شامل ہے: formattedString (متن)، segments (ٹائم سٹیمپ، اعتماد، substringRange، alternativeSubstrings کے ساتھ SFTranscriptionSegment کی صف)۔ ہر سیگمنٹ کے لیے اعتماد (0..1) — ناقابل بھروسہ ٹکڑوں کو فلٹر کرنے کی اجازت دیتا ہے۔ Segments Speech.framework کی ایک اہم خصوصیت ہے: یہ اعتماد کے اسکور کے ساتھ لفظ بہ لفظ مارک اپ فراہم کرتے ہیں۔
SFSpeechRecognizer آرکیٹیکچر: AVFoundation (آڈیو کیپچر) → Audio Buffer → SFSpeechAudioBufferRecognitionRequest → SFSpeechRecognizer (ASR انجن) → SFSpeechRecognitionResult → SFSpeechRecognitionTask (کنٹرول: cancel، finish، pause)۔ Apple کا ASR انجن ایک ہائبرڈ آرکیٹیکچر استعمال کرتا ہے: آن ڈیوائس کے لیے Conformer (انکوڈر) + RNNT (ڈی کوڈر)، کلاؤڈ کے لیے Transducer۔ ماڈل Apple Neural Engine (ANE) کے لیے بہتر بنائے گئے ہیں۔ A17 Pro پر، آن ڈیوائس ASR RTF 0.3–0.6 (ریئل ٹائم سے تیز) پر چلتا ہے۔
| اجزاء | مقصد | iOS ورژن |
|---|---|---|
| SFSpeechRecognizer | بنیادی ریکگنیشن کلاس | iOS 10+ |
| SFSpeechAudioBufferRecognitionRequest | لائیو آڈیو سٹریم | iOS 10+ |
| SFSpeechURLRecognitionRequest | آڈیو فائل (.wav، .m4a) | iOS 10+ |
| SFSpeechRecognitionTask | درخواست کا انتظام (cancel، finish) | iOS 10+ |
| آن ڈیوائس ریکگنیشن | آف لائن ASR | iOS 17+ |
| مشترکہ ریکگنیشن | ہائبرڈ آن ڈیوائس + کلاؤڈ | iOS 17+ |
آڈیو کی ضروریات: SFSpeechRecognizer LPCM (16 kHz، 16 bit، mono) یا Opus (iOS 17+) قبول کرتا ہے۔ AVFoundation کسی بھی فارمیٹ کے بفرز کو کیپچر کر سکتا ہے، درخواست خود بخود تبدیل کرتی ہے۔ کم از کم لمبائی: 0.5 سیکنڈ (خاموشی کا پتہ لگانا)۔ زیادہ سے زیادہ: 1 منٹ (کلاؤڈ) / 2 منٹ (آن ڈیوائس) فی درخواست۔ لمبی ٹرانسکرپشن کے لیے، 2–5 سیکنڈ اوورلیپ کے ساتھ 30–60 سیکنڈ کے ٹکڑوں میں آڈیو تقسیم کریں۔
صارف کی اجازتیں: SFSpeechRecognizer کو دو واضح اجازتوں کی ضرورت ہے۔ NSMicrophoneUsageDescription (Privacy — Microphone Usage Description) — مائیکروفون تک رسائی کے لیے۔ NSSpeechRecognitionUsageDescription (Privacy — Speech Recognition Usage Description) — اسپیچ ریکگنیشن تک رسائی کے لیے۔ دونوں صارف کو وجہ بتانے والی سٹرنگیں ہیں۔ SFSpeechRecognizer.requestAuthorization — اجازت کا ڈائیلاگ دکھاتا ہے۔ اسٹیٹس: notDetermined، denied، restricted، authorized۔ authorized اسٹیٹس کے بغیر، recognizer کو کال کرنے پر خرابی 216 (Speech framework error) لوٹتی ہے۔
دستیابی کی جانچ: SFSpeechRecognizer.isAvailable — چیک کرتا ہے کہ آیا موجودہ زبان کے لیے ASR دستیاب ہے۔ iOS 16- پر، isAvailable = false انٹرنیٹ کے بغیر۔ iOS 17+ پر، آن ڈیوائس زبانوں کے لیے isAvailable = true آف لائن بھی۔ SFSpeechRecognizer.supportedLocales — ڈیوائس کے ذریعے تعاون یافتہ زبانوں کی فہرست حاصل کرنے کا ایک جامد طریقہ۔ ہر لانچ سے پہلے isAvailable چیک کرنے کی سفارش کی جاتی ہے (صارف ترتیبات میں Siri/ڈکٹیشن کو غیر فعال کر سکتا ہے)۔ دستیابی علاقے پر منحصر ہے: چینی — صرف چین میں، عربی — UAE میں۔
// SFSpeechRecognizer سیٹ اپ
import Speech
SFSpeechRecognizer.requestAuthorization { status in
guard status == .authorized else { return }
}
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "ru_RU"))!
guard recognizer.isAvailable else {
print("ASR دستیاب نہیں۔ ترتیبات میں Siri اور ڈکٹیشن فعال کریں")
return
}
let request = SFSpeechAudioBufferRecognitionRequest()
request.requiresOnDeviceRecognition = true
خرابی کا انتظام: SFSpeechRecognizer کو ایک مکمل ہینڈلر کے ساتھ بلایا جاتا ہے جو خرابی لوٹا سکتا ہے۔ اہم خرابیاں: 203 — کوئی انٹرنیٹ نہیں (کلاؤڈ، iOS 16-)؛ 216 — مجاز نہیں (کوئی اجازت نہیں)؛ 301 — آڈیو خرابی (مائیکروفون/فارمیٹ کا مسئلہ)؛ 401 — سروس دستیاب نہیں (سروس اوور لوڈ)؛ 601 — زبان دستیاب نہیں (زبان ڈیوائس پر تعاون یافتہ نہیں)۔ آن ڈیوائس iOS 17+ کے لیے، اہم خرابیاں: 301 (آڈیو)، 601 (زبان)۔ ہمیشہ مکمل ہینڈلر کو ہینڈل کریں — ریکارڈنگ کے دوران کسی بھی وقت خرابیاں آ سکتی ہیں۔
لائیو ASR پائپ لائن: AVAudioEngine (مائیکروفون کیپچر) → installTap (آڈیو بفر) → request.append(buffer) → SFSpeechRecognizer → recognitionTask → delegate/resultHandler۔ AVAudioEngine کم تاخیر (مائیک سے بفر تک 5–10 ms) فراہم کرتا ہے۔ SFSpeechRecognitionDelegate: didHypothesizeTranscription (ہر 200–500 ms — جزوی متن)، didFinishRecognition (حتمی نتیجہ)۔ Task.isFinishing — جب ریکگنیشن مکمل ہو جائے تو منسوخ کر سکتے ہیں۔ مسلسل ریکگنیشن (لامحدود ڈکٹیشن) کے لیے، isFinal کے بعد نیا ٹاسک بنائیں۔
SFSpeechRecognitionTaskDelegate: اختیاری طریقے۔ speechRecognitionDidDetectSpeech (اسپیچ شروع) — UI اشارے کے لیے۔ didHypothesizeTranscription (درمیانی متن) — بولتے ہوئے دکھانے کے لیے۔ didFinishRecognition (حتمی نتیجہ) — متن کو حتمی شکل دینے کے لیے۔ didFinishSuccessfully (کامیابی/خرابی) — تکمیل کے لیے۔ didProcessAudio (آڈیو بفر پروسیس شدہ) — RMS میٹر کے لیے۔ didHypothesizeTranscription کو لاگو کرنے کی سفارش کی جاتی ہے — صارف بغیر تاخیر کے فوری طور پر متن دیکھتا ہے۔ حتمی ٹرانسکرپشن محفوظ کرنے کے لیے ہے۔
// لائیو اسپیچ ریکگنیشن
let audioEngine = AVAudioEngine()
let request = SFSpeechAudioBufferRecognitionRequest()
request.shouldReportPartialResults = true
recognitionTask = recognizer.recognitionTask(with: request) { result, error in
if let result = result {
textView.text = result.bestTranscription.formattedString
}
if error != nil || result?.isFinal == true {
audioEngine.stop()
request.endAudio()
}
}
let inputNode = audioEngine.inputNode
let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024,
format: recordingFormat) { buffer, _ in
request.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
مسلسل ریکگنیشن: “ہمیشہ سننا” موڈ (صوتی ان پٹ، معاون) کے لیے، isFinal کے بعد ٹاسک کو دوبارہ شروع کرنا ضروری ہے۔ ایک لوپ بنائیں: finishTask → request = SFSpeechAudioBufferRecognitionRequest() → recognitionTask = recognizer.recognitionTask(with: request)۔ خلا سے بچنے کے لیے، ایک ٹاسک کے اختتام کو اگلے کے شروع کے ساتھ اوورلیپ کریں (پچھلے کے ختم ہونے سے 1–2 سیکنڈ پہلے نئی درخواست شروع کریں)۔ AVFoundation AVAudioSession — بیک وقت پلے بیک اور ریکارڈنگ کے لیے .playAndRecord ترتیب دیں۔ iOS 17+ پر، آن ڈیوائس کے ساتھ مسلسل ASR فی گھنٹہ 2–5% بیٹری استعمال کرتا ہے (A15+)۔
SFSpeechURLRecognitionRequest — URL کے ذریعے آڈیو فائل کو پہچاننے کی درخواست۔ فارمیٹس کو سپورٹ کرتا ہے: .wav (16 kHz، 16 bit، mono)، .m4a (AAC)، .mp4، .mov۔ زیادہ سے زیادہ لمبائی: کلاؤڈ کے لیے ~1 منٹ، آن ڈیوائس کے لیے ~2 منٹ۔ لمبی فائلوں کے لیے، ٹکڑوں میں تقسیم کریں (AVAssetExportSession + trim)۔ SFSpeechURLRecognitionRequest سٹریمنگ کو سپورٹ نہیں کرتا (کوئی جزوی نتائج نہیں) — صرف حتمی نتیجہ۔ فائل کے ساتھ جزوی نتائج کے لیے، آڈیو بفر درخواست میں تبدیل کریں۔
آڈیو فائل ٹرانسکرپشن حاصل کرنا: SFSpeechRecognizer.recognitionTask(with: request) resultHandler۔ bestTranscription.formattedString نکالیں۔ لفظ کی سطح کے ٹائم سٹیمپ کے لیے — bestTranscription.segments سے segments (segment.duration، segment.timestamp، segment.substring)۔ فی سیگمنٹ اعتماد — ہر لفظ کے لیے ASR اعتماد (فلٹر کرنے کے لیے استعمال کریں)۔ متبادل مفروضے — کم اعتماد والے الفاظ کے لیے transcriptionFormatter متبادل۔ ایک سے زیادہ بولنے والوں والی فائلوں کے لیے، SFSpeechRecognitionRequest ایک سے زیادہ درخواستیں لوٹا سکتا ہے (فی بولنے والا ایک، iOS 17+)۔
// آڈیو فائل ٹرانسکرپشن
let audioURL = Bundle.main.url(forResource: "recording", withExtension: "m4a")!
let request = SFSpeechURLRecognitionRequest(url: audioURL)
request.requiresOnDeviceRecognition = true
recognizer.recognitionTask(with: request) { result, error in
guard let result = result, error == nil else {
print("خرابی: \(error?.localizedDescription ?? "unknown")")
return
}
let transcription = result.bestTranscription
let text = transcription.formattedString
let words = transcription.segments.map { segment in
Word(text: segment.substring,
start: segment.timestamp,
duration: segment.duration,
confidence: segment.confidence)
}
}
لمبی آڈیو فائلوں کو تقسیم کرنا: 1 منٹ سے زیادہ فائلوں کے لیے، 2–3 سیکنڈ اوورلیپ (سلائی) کے ساتھ 30–60 سیکنڈ کے ٹکڑوں میں تقسیم کریں۔ AVAssetExportSession + CMTimeRange — ٹکڑے برآمد کریں۔ متبادل: UISelectionView (صارف ایک سیگمنٹ منتخب کرتا ہے)۔ ٹرانسکرپشن سلائی: متن کو جوڑیں، اوورلیپ کے ذریعے سلائی کریں (پچھلے ٹکڑے کے آخری 2–3 الفاظ کا اگلے ٹکڑے کے پہلے 2–3 الفاظ سے موازنہ کریں — ڈپلیکیٹ ہٹائیں)۔ Vosk اور Whisper لمبی آڈیو کو مقامی طور پر سپورٹ کرتے ہیں، SFSpeechRecognizer نہیں کرتا۔ لمبی ٹرانسکرپشن کے لیے، میں Whisper (Core ML) تجویز کرتا ہوں — کوئی لمبائی کی حد نہیں۔
آن ڈیوائس موڈ (iOS 17+): request.requiresOnDeviceRecognition = true۔ ASR Apple Neural Engine (ANE) پر مقامی طور پر چلتا ہے۔ فوائد: انٹرنیٹ کی ضرورت نہیں، پرائیویسی (آڈیو ڈیوائس سے باہر نہیں جاتی)، صفر لاگت (مفت)، کم تاخیر (RTF 0.3–0.6)۔ نقصانات: کم درستگی (WER 12–14% بمقابلہ 7–12%)، فی درخواست 2 منٹ کی حد، محدود زبانوں کا سیٹ (تمام 60 زبانیں آن ڈیوائس دستیاب نہیں)۔ آن ڈیوائس ماڈل ڈیوائس پر ~50–100 MB جگہ لیتا ہے اور پہلی درخواست پر ڈاؤن لوڈ ہوتا ہے۔
کلاؤڈ (iOS 16-): request.requiresOnDeviceRecognition = false (یا پیرامیٹر غائب)۔ Apple سرورز پر ASR — زیادہ درست (WER 7% EN، 12% RU)، زیادہ زبانیں، فی درخواست 1 منٹ تک۔ انٹرنیٹ (WiFi یا سیلولر) درکار ہے۔ Apple ڈیولپرز سے کلاؤڈ ASR کے لیے چارج نہیں کرتا (مفت)۔ حدود: فی ایپلیکیشن فی منٹ 1 درخواست (غیر متعین)، لیکن Apple پروڈکشن پیمانے پر محدود کر سکتا ہے۔ کلاؤڈ ASR SLA کے بغیر بہترین کوشش کا معیار فراہم کرتا ہے۔ انٹرپرائز ایپس کے لیے، Google Cloud ASR یا Whisper (Core ML) استعمال کریں۔
| پیرامیٹر | آن ڈیوائس (iOS 17+) | کلاؤڈ (iOS 10+) |
|---|---|---|
| انٹرنیٹ درکار | نہیں | ہاں |
| WER (EN) | 10–12% | 7% |
| WER (RU) | 12–14% | 12% |
| تاخیر (RTF) | 0.3–0.6 | 0.3–0.8 (+نیٹ ورک) |
| زیادہ سے زیادہ لمبائی | 2 منٹ | 1 منٹ |
| پرائیویسی | مکمل | آڈیو ڈیوائس چھوڑتا ہے |
| مفت | ہاں | ہاں |
مشترکہ ریکگنیشن (iOS 17+): request.requiresOnDeviceRecognition = false انٹرنیٹ کے ساتھ (کلاؤڈ)، = true آف لائن (فال بیک)۔ Apple خود بخود موڈ منتخب کرتا ہے۔ درستگی کے لیے اہم ایپس کے لیے: NetworkMonitor (NWPathMonitor) چیک کریں — انٹرنیٹ کے ساتھ کلاؤڈ، بغیر آن ڈیوائس استعمال کریں۔ پرائیویسی کے لیے اہم ایپس کے لیے: ہمیشہ آن ڈیوائس۔ ٹرانسکرپشن کے لیے: کلاؤڈ (زیادہ درست)۔ صوتی ان پٹ کے لیے: آن ڈیوائس (تیز)۔ مشترکہ تجویز کیا جاتا ہے: 80% کلاؤڈ، 20% آن ڈیوائس فال بیک۔
کسٹم کی بورڈ میں صوتی ان پٹ — SFSpeechRecognizer کی بورڈ ایکسٹینشنز (iOS 10+) میں ضم کیا گیا ہے۔ صارف مائیکروفون بٹن دباتا ہے، ASR اسپیچ کو ٹیکسٹ میں ٹرانسکرائب کرتا ہے اور ٹیکسٹ فیلڈ میں داخل کرتا ہے۔ تقاضے: جزوی نتائج (ریئل ٹائم میں ٹیکسٹ دیکھنا)، آن ڈیوائس (کی بورڈ کو انٹرنیٹ کے بغیر کام کرنا چاہیے)۔ SFSpeechRecognizer + AVSpeechSynthesizer — صوتی ان پٹ + صوتی آؤٹ پٹ۔ iOS 17+ پر کسٹم کی بورڈز کے لیے، آن ڈیوائس استعمال کریں۔ کی بورڈ ایکسٹینشن کی حدود: AVAudioEngine دستیاب ہے لیکن وقت کی پابندیوں کے ساتھ (بیک گراؤنڈ ایگزیکیوشن محدود)۔
میٹنگ اور لیکچر ٹرانسکرپشن — آڈیو ریکارڈ اور ٹرانسکرائب کرنے والی ایپس (Otter.ai، Rev، Apple Voice Memos)۔ SFSpeechURLRecognitionRequest .m4a فائلوں پر کارروائی کرتا ہے۔ لمبی ریکارڈنگز (30–60 منٹ) کے لیے — Whisper Core ML (کوئی لمبائی کی حد نہیں)۔ ٹائم سٹیمپ کے ساتھ SFSpeechRecognizer segments — آڈیو کے ساتھ ٹیکسٹ سنک کرنے کے لیے (پلے بیک کے دوران ٹیکسٹ ہائی لائٹ)۔ فی سیگمنٹ اعتماد — ناقابل بھروسہ ٹکڑوں کو ظاہر کرنے کے لیے (پیلا ہائی لائٹ)۔ اسپیکر ڈائریزیشن (کس نے بات کی) کے لیے — Apple API فراہم نہیں کرتا، سرور پر pyannote-audio + Whisper استعمال کریں۔
iOS ایپس میں صوتی کمانڈز — SFSpeechRecognizer + VGS فریم ورک (Voice Grammar Services) کمانڈز پر عمل درآمد کے لیے: “ترتیبات کھولیں”، “پیغام بھیجیں”، “لائٹ آن کریں”۔ گرامر پر مبنی ریکگنیشن: SFSpeechRecognitionRequest contextualStrings = کمانڈز کی صف۔ اس سے کمانڈ ریکگنیشن کی درستگی 95% تک بہتر ہوتی ہے (بمقابلہ 85% فری فارم)۔ SFSpeechRecognitionTask.cancel — کمانڈ پر عمل درآمد کے بعد روکنے کے لیے۔ VGS + SFSpeechRecognizer + Shortcuts — UI لکھے بغیر کسٹم صوتی کمانڈز۔ رسائی کے لیے: Voice Control (بلٹ ان) + SFSpeechRecognizer (کسٹم کمانڈز)۔
// سیاق و سباق کی سٹرنگز کے ساتھ صوتی کمانڈز
let request = SFSpeechAudioBufferRecognitionRequest()
request.requiresOnDeviceRecognition = true
request.shouldReportPartialResults = true
request.contextualStrings = ["open contacts", "send message",
"show notifications", "ٹارچ آن کریں"]
recognitionTask = recognizer.recognitionTask(with: request) { result, _ in
guard let text = result?.bestTranscription.formattedString.lowercased() else { return }
voiceCommands.first { text.contains($0) }.map { command in
DispatchQueue.main.async { self.executeCommand(command) }
recognitionTask?.cancel()
}
}
طبی اور قانونی ایپس میں ڈکٹیشن — SFSpeechRecognizer آواز کے ذریعے سٹرکچرڈ دستاویزات بنانے کے لیے۔ ڈومین ایڈاپٹیشن: طبی/قانونی اصطلاحات کے ساتھ contextualStrings (500+ فقرات)۔ SFSpeechRecognitionRequest.customLmProbability — contextualStrings کا اثر (0.1–1.0)۔ طبی ڈکٹیشن کے لیے، آن ڈیوائس استعمال کریں (مریض کے ڈیٹا کی پرائیویسی)۔ طبی ڈیٹا پر فائن ٹیون کردہ Whisper — بیس SFSpeechRecognizer کے 12% کے مقابلے WER 5% کے ساتھ متبادل۔ HIPAA تعمیل: آن ڈیوائس موڈ (ڈیٹا ڈیوائس سے باہر نہیں جاتا)۔ اپوائنٹمنٹ ٹرانسکرپشن کے لیے — SFSpeechURLRecognitionRequest + اسپیکر ٹائم سٹیمپ کے ساتھ segments۔
اکثر پوچھے گئے سوالات
SFSpeechRecognizer iOS 10، macOS 10.15، watchOS 6 اور tvOS 17 سے دستیاب ہے۔ آن ڈیوائس موڈ iOS 17 سے (requiresOnDeviceRecognition)۔ iOS 10–16 پر، SFSpeechRecognizer صرف Apple کے کلاؤڈ سرورز کے ذریعے کام کرتا ہے (انٹرنیٹ درکار)۔ تمام ورژنز میں واضح صارف کی اجازت درکار ہے (NSMicrophoneUsageDescription + NSSpeechRecognitionUsageDescription)۔ SFSpeechRecognizer.supportedLocales — متحرک فہرست، علاقے اور ڈیوائس ماڈل پر منحصر ہے۔
ہاں، isFinal کے بعد نیا recognitionTask بنا کر۔ مسلسل ریکگنیشن کے لیے پچھلے ٹاسک کے مکمل ہونے کے بعد ٹاسک دوبارہ شروع کریں۔ iOS 17 پر، آن ڈیوائس مسلسل ASR فی گھنٹہ 2–5% بیٹری استعمال کرتا ہے (A15+)۔ iOS 16- پر، مسلسل ASR کے لیے انٹرنیٹ درکار ہے (ٹریفک ~1 MB/منٹ)۔ واقعی مسلسل ریکگنیشن (ہمیشہ سننا) کے لیے، Vosk (آف لائن) یا Whisper Core ML استعمال کریں۔ SFSpeechRecognizer iOS 16- پر ہمیشہ آن موڈ کو سپورٹ نہیں کرتا۔
result.bestTranscription.segments استعمال کریں — ہر SFTranscriptionSegment میں لفظ کے لیے confidence (Float 0..1) ہوتا ہے۔ segments[i].substring — لفظ کا متن۔ segments[i].confidence — اس لفظ کے لیے ASR اعتماد۔ confidence < 0.5 والے الفاظ ناقابل بھروسہ ہیں — انہیں UI میں ہائی لائٹ کریں۔ segments[i].timestamp — شروع کرنے کا وقت (TimeInterval)۔ segments[i].duration — مدت۔ segments[i].alternativeSubstrings — لفظ کے لیے متبادل ریکگنیشن مفروضے۔ لمبی فائلوں کے لیے، segments پر تکرار دستی پارسنگ کے بغیر لفظ بہ لفظ اعتماد فراہم کرتی ہے۔
203 SFSpeechError.ErrorCode.opportunistic ہے (کلاؤڈ ASR کے لیے انٹرنیٹ نہیں)۔ iOS 16- پر یا request.requiresOnDeviceRecognition = false انٹرنیٹ کے بغیر ہوتا ہے۔ حل: آف لائن آپریشن کے لیے requiresOnDeviceRecognition = true (iOS 17+) سیٹ کریں۔ iOS 16- پر، NWPathMonitor استعمال کریں — جب انٹرنیٹ نہ ہو، تو “اسپیچ ریکگنیشن کے لیے انٹرنیٹ کنکشن درکار ہے” پیغام دکھائیں۔ متبادل: جب نیٹ ورک دستیاب نہ ہو تو فال بیک کے طور پر Vosk (آف لائن، iOS 12+) استعمال کریں۔
SFSpeechRecognizer — Apple کا بلٹ ان API، مفت، ضم کرنا آسان، لیکن لمبائی کی حدود (1–2 منٹ)، WER درستگی 7–14% اور صرف iOS ایکو سسٹم کے لیے۔ Whisper Core ML — اوپن سورس (MIT)، 99 زبانوں کو سپورٹ کرتا ہے، WER 6–10%، کوئی لمبائی کی حد نہیں، لیکن دستی انٹیگریشن، Core ML ماڈلز (39M–769M پیرامیٹرز)، RTF 0.5–6 (SFSpeechRecognizer سے سست) درکار ہے۔ SFSpeechRecognizer — معیاری صوتی ان پٹ کے لیے۔ Whisper — اعلی درستگی والی لمبی آڈیو ٹرانسکرپشن کے لیے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں