Table of Contents
Comenzi vocale: Viitorul interacțiunii aplicației iOS
Comenzile vocale remodelează fundamental modul în care utilizatorii se angajează cu aplicații iOS, mutând dincolo de interfețe simple de robinet și swipe la un control hands-free, intuitiv. Prin pârghia de recunoaștere a discursului iOS, dezvoltatorii pot integra capabilitățile de vorbire-la-text în timp real care fac aplicațiile mai accesibile, mai eficiente și mai active. Fie că permite navigarea controlată vocal pentru un tracker de fitness, permițând luarea de note hands-free într-o aplicație productivitate, sau alimentarea caracteristicilor de accesibilitate pentru utilizatorii cu deficiențe motor, API Discursul de recunoaștere oferă o fundație robustă, gata de producție. Acest articol explorează procesul complet de implementare a comenzilor vocale în aplicații iOS, de la configurarea inițială și manipularea permisiune pentru optimizarea avansată, cele mai bune practici, și cazuri de utilizare reale.
Înțelegerea API-ului de recunoaștere a discursului iOS
API-ul de recunoaștere a discursului iOS, parte a Cadrul de vorbire, permite aplicațiilor să convertească audio live sau preînregistrat în text. Suportă peste 60 de limbi și dialecte, cu motorul de recunoaștere care rulează fie pe dispozitive (pentru limbi acceptate) sau pe serverele Apple. Recunoașterea pe dispozitiv acordă prioritate vieții private și funcționează offline, în timp ce recunoașterea pe server oferă adesea o precizie mai mare pentru propoziții complexe. Clasa principală este SFS speechRecognizer, care gestionează procesul de recunoaștere și SsprayessAudioBufferRecognitionRequest pentru intrare audio live.
Printre capacitățile-cheie se numără:
- Rezultate parțiale în timp real (utile pentru detectarea progresivă a comenzii).
- Suport pentru vocabulare personalizate prin SFS speechRecognizer's proprietate.
- Integrare cu AVAudioEngine pentru captarea audio și tamponare.
Este important de notat că API este conceput pentru comenzile inițiate de utilizator și nu pentru scenarii continue, mereu de ascultare (Apple impune un maxim de un minut pentru o singură sarcină de recunoaștere). Această limitare încurajează angajarea intenționată și păstrează durata de viață a bateriei. Pentru citire ulterioară, consultați documentația oficială a cadrului de vorbire și sesiunea WWDC 2019 privind recunoașterea vorbirii.
Configurarea recunoașterii discursului în aplicația dumneavoastră
Integrarea recunoaşterii vorbirii necesită o manipulare atentă a permisiunii şi configurarea sesiunii audio. Mai jos sunt paşii esenţiali, lărgiţi cu cele mai bune practici.
1. Pregătește-ți proiectul
- Adăugaţi capacitatea Discurs în signing & Capabilities proiectului dumneavoastră.
- Includeți tasta NSMicrofonUsageDescriere] în (de exemplu, "Această aplicație are nevoie de acces la microfon pentru a procesa comenzile vocale").
- Include tasta NS DiseachRecognitionUsageDescriere] (de exemplu, "Această aplicație trimite discursul dvs. serverelor Apple . pentru a recunoaște comenzile").
Notă: Ambele chei sunt necesare chiar dacă intenționați să utilizați doar pe-deschidere recunoaștere
2. Cerere de autorizare
Apel SFS speechRecognizer.cerereAutorizare] devreme în fluxul aplicației (de exemplu, în .) Manipulați cu grație fiecare statut de autorizare:
import Speech
SFSpeechRecognizer.requestAuthorization { authStatus in
DispatchQueue.main.async {
switch authStatus {
case .authorized:
// Enable voice command UI
case .denied, .restricted:
// Explain why speech recognition is unavailable
case .notDetermined:
// This should not occur after the request
@unknown default:
break
}
}
}
3. Crearea unui tribunal de recunoaştere a discursului SFS
Instantiate SFSpeechRecognizer cu un local care se potrivește cu publicul țintă. Pentru limbajul implicit al dispozitivului, trece :
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))
4. Configurați sesiunea audio și motorul
Setare AVAudioEngine pentru a captura intrarea microfonului.Folosiți .record categorie și .măsurare mod de subliniere a calității vorbirii:
let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode
let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, _) in
self.request.append(buffer)
}
audioEngine.prepare()
try? audioEngine.start()
Înveliți întotdeauna pornirea motorului audio într-un bloc în producție pentru a manipula microfoanele necorespunzătoare.
Punerea în aplicare a comenzilor vocale: De la vorbire la acțiune
Odată ce audio este curge, vă crea o sarcină de recunoaștere și parse rezultate pentru comenzi. Cheia este de a reacționa la rezultate parțiale, astfel încât comenzile sunt detectate chiar înainte de utilizatorul termină vorbind.
Sarcina de recunoaștere de bază
let request = SFSpeechAudioBufferRecognitionRequest()
request.shouldReportPartialResults = true
let recognitionTask = recognizer?.recognitionTask(with: request) { result, error in
guard let result = result else {
// Handle error
return
}
let transcript = result.bestTranscription.formattedString
// Check for commands
if transcript.lowercased().contains("next") {
// Execute action
}
}
Parsare de comandă avansată
Simplu funcționează pentru vocabulare mici, dar pentru seturi de comandă robuste să ia în considerare:
- Folosind NSLinguisticTagger pentru a extrage cuvinte cheie și a filtra zgomotul.
- Crearea unui vocabular de comandă cu sinonime (de exemplu, "skip," "următorul," "înainte").
- Aşteptând un prag de încredere mai mare: verificaţi înainte de a acţiona.
- Punerea în aplicare a unei răceli pentru a preveni mai multe declanșatoare din aceeași frază.
func processTranscript(_ transcript: String) {
let lowercased = transcript.lowercased()
let commands: [String: () -> Void] = [
"next": { self.showNextItem() },
"go back": { self.showPreviousItem() },
"stop": { self.stopPlayback() }
]
for (command, action) in commands {
if lowercased.contains(command) {
action()
break
}
}
}
Gestionarea sfârşitului vorbirii şi a tăcerii
În mod implicit, sarcina de recunoaștere se termină atunci când utilizatorul se oprește din vorbit și se detectează o pauză. Puteți încheia manual sarcina prin apel sau . Pentru o experiență de comandă continuă (de exemplu, dictare, acțiuni în mai multe etape), reporniți sarcina de recunoaștere după fiecare rezultat. Cu toate acestea, țineți cont de limita de ~1 minute a Apple pe o singură sarcină; pentru sesiuni mai lungi, sarcini în lanț.
Caracteristici avansate: Recunoastere pe device si vocabulare personalizate
Începând cu iOS 13, Apple a introdus pe-dispozitiv recunoașterea discurs pentru limbile selectate (în prezent engleză, franceză, germană, japoneză, coreeană, chineză mandarină, spaniolă, și mai mult). Avantajele includ nici o dependență de rețea, latență redusă, și confidențialitate îmbunătățită . Nu audio lasă dispozitivul. Pentru a permite recunoașterea on-device:
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
Notă: Precizia dispozitivului poate fi ușor mai mică decât cea a serverului, în special pentru entitățile numite sau vocabularul neobișnuit. Pentru aplicațiile cu jargon personalizat (de exemplu, termeni medicali, nume de produse), se poate lua în considerare adăugarea unei liste de vocabular custom prin SFSpeechRecognizer[ sau prin formarea unei ]recunoaștetor de vorbire construit prin .
O altă tehnică avansată este utilizarea SFS speechRecognizerDelegate pentru a monitoriza modificările de disponibilitate (de exemplu, utilizatorul revocă permisiunea, modificările stării rețelei). Implement:
class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
// Disable or enable voice command button based on availability
}
}
Cele mai bune practici pentru comenzile vocale în producție
Interfețele vocale se comportă diferit față de atingere. Urmați aceste orientări pentru a oferi o experiență de utilizator lustruit.
1. Oferă feedback clar
- Arată un indicator de undă sau pulsare atunci când ascultați.
- Afișează textul recunoscut (chiar parțial) astfel încât utilizatorii să știe că sistemul funcționează.
- Utilizați feedback haptic (prin intermediul UIImpactFeedbackGenerator) la recunoașterea comenzii.
2. Manipulați cu grație erorile
Erorile comune includ nici un acces la microfon, serviciu de recunoaștere indisponibil, sau calitate audio slabă. Alertează utilizatorul cu mesaje acţionate (de exemplu, "Vă rugăm să vorbiţi mai tare" sau "Verificaţi conexiunea la internet").
3. Optimizarea pentru diferite adecvari si medii
Testați cu un grup divers de difuzoare. Utilizați SFS speechRecognizer proprietatea pentru a rula recunoașterea pe un fir de fundal. Implement Detectarea activității vocale (VAD) pentru a evita înregistrarea aerului mort.
4. Confidenţialitatea şi transparenţa
Explicați clar de ce aveți nevoie de microfon și de permisiunea de vorbire. Nu înregistrați sau procesați discursul fără intenția utilizatorului
5. Implementaţi o cădere de fonduri
Nu toți utilizatorii pot sau doresc să folosească vocea. Întotdeauna oferă acces alternativ la tastatură sau intrare la tastatură. Pentru accesibilitate, asigurați-vă că comenzile vocale pot fi invocate prin Switch Control sau VoceOver.
Cazuri de utilizare la nivel mondial și inspirație
- Aplicații de navigare: "Du-mă acasă" sau "Arată benzinării din apropiere" folosind harta SDKs.
- Productivity & Note-Taking: "Creați o nouă notă" sau "Adăugați sarcina" integrată cu datele de bază sau CloudKit.
- Controlori de acasă inteligent: "Opriți luminile din camera de zi" folosind HomeKit.
- Fitness & Workout: "Start 5 minute raceala" sau "Log 10 pushup-uri."
- E-Learning: Răspunde vocea la flashcard-uri sau teste.
Pentru mai multe idei, explora SFS speechRecognizer API referință] și SpeakToMe codul de eșantion] de la Apple.
Concluzie: Puteţi să vă întăriţi utilizatorii cu voce
API-ul de recunoaștere a discursului iOS este un instrument matur, bine documentat, care pune puterea comenzilor vocale în orice aplicație. De la la bord până la utilizarea zilnică, caracteristicile vocale bine aplicate reduc frecarea, îmbunătățirea accesibilității și încântă utilizatorii. Urmărind pașii de configurare, cele mai bune practici și tehnici avansate descrise în acest articol, puteți crea aplicații care ascultă
Începeți mic: integrați o singură comandă (