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 मिनट (ऑन-डिवाइस) प्रति अनुरोध। लंबी ट्रांसक्रिप्शन के लिए, ऑडियो को 30–60 सेकंड के खंडों में 2–5 सेकंड के ओवरलैप के साथ विभाजित करें।
उपयोगकर्ता अनुमतियाँ: 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 को एक completion handler के साथ कॉल किया जाता है जो Error लौटा सकता है। मुख्य त्रुटियाँ: 203 — कोई इंटरनेट नहीं (क्लाउड, iOS 16-); 216 — अधिकृत नहीं (कोई अनुमति नहीं); 301 — ऑडियो त्रुटि (माइक्रोफ़ोन/प्रारूप समस्या); 401 — सेवा अनुपलब्ध (सेवा अतिभारित); 601 — भाषा अनुपलब्ध (भाषा डिवाइस पर समर्थित नहीं)। ऑन-डिवाइस iOS 17+ के लिए, मुख्य त्रुटियाँ: 301 (ऑडियो), 601 (भाषा)। हमेशा completion handler को संभालें — रिकॉर्डिंग के दौरान किसी भी समय त्रुटियाँ हो सकती हैं।
लाइव 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 स्ट्रीमिंग का समर्थन नहीं करता (कोई आंशिक परिणाम नहीं) — केवल अंतिम परिणाम। फ़ाइल के साथ आंशिक परिणामों के लिए, Audio Buffer Request में कनवर्ट करें।
ऑडियो फ़ाइल ट्रांसक्रिप्शन प्राप्त करना: 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें