Table of Contents
Voice Commands: Fremtidens iOS App Interaksjon
Stemmekommandoer er i utgangspunktet å omforme hvordan brukerne engasjerer seg med iOS-applikasjoner, beveger seg utover enkle trykk-og-swipe grensesnitt til håndfri, intuitiv kontroll. Ved å utnytte iOS Tale-gjenkjenning API, kan utviklere integrere sanntids tale-til-tekst-funksjoner som gjør apper mer tilgjengelige, effektive og engasjerende. Enten det er mulig å aktivere stemmestyrt navigering for en treningssporer, som gjør det mulig å gjøre håndfri notattaking i en produktivitetsapp, eller å drive tilgjengelighetsfunksjoner for brukere med motorfunksjoner, gir Tale-gjenkjenning API et robust, produksjonsklart fundament. Denne artikkelen utforsker den komplette prosessen med å implementere talekommandoer i i i iOS-apper, fra initial installasjon og tillatelseshåndtering til avansert optimalisering, beste praksis og virkelige brukstilfeller.
Forstå iOS talegjenkjenning API
IOS Speech Recognition API, en del av ], tillater apper å konvertere levende eller forhåndsinnspilt lyd til tekst. Den støtter over 60 språk og dialekter, med gjenkjennelsesmotoren som kjører enten on-device (for støttede språk) eller på Apples servere. On-device gjenkjennelse prioriterer personvern og fungerer offline, mens serverbasert anerkjennelse ofte gir høyere nøyaktighet for komplekse setninger. Den primære klassen er SFRecognitionRecognitionizer, som administrerer anerkjennelsesprosessen, og SFRecensionAudioBufferRequest for live lydinngang.
Nøkkelfunksjoner inkluderer:
- Delresultater i sanntid (brukes for progressiv kommandodetektering).
- Støtte for egendefinerte ordsamlinger via SF-taleRecognizers eiendom.
- Integrasjon med AVAudioEngine for lydopptak og buffering.
Det er viktig å merke seg at API er designet for bruker-initiert kommandoer og ikke for kontinuerlige, alltid-lytting scenarier (Apple pålegger en en-minutters maksimum på en enkelt gjenkjennelse oppgave). Denne begrensningen oppfordrer til intensjonell engasjement og bevarer batterilevetid. For videre lesing, konsultere offisiell talerammedokumentasjon og ]WDC 2019 sesjonen om talegjenkjenning.
Sette opp talegjenkjenning i appen din
Integrering av talegjenkjenning krever nøye tillatelseshåndtering og lydøktskonfigurasjon. Nedenfor er de viktige trinnene, utvidet med beste praksis.
1. Forbered prosjektet ditt
- Legg til ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- Inkluder NSMicrophoneUsageDescription i (f.eks. ⁇ Denne appen trenger mikrofontilgang til prosess-røystekommandoer ⁇
- Inkluder NS-presisjonRescurrectionUsageDescription-nøkkelen (f.eks. ⁇ Denne appen sender din tale til Apples servere for å gjenkjenne kommandoer ⁇
Merk: Begge nøklene er nødvendige selv om du bare planlegger å bruke gjenkjennelse på enheten ⁇ Apple trenger fortsatt brukergodkjenning.
2. Forespørsel om autorisasjon
Ring SF SpeechRecognizer.requestAuthorization tidlig i appen din flyt (f.eks. i ]). Håndtere hver autorisasjonsstatus med graciøshet:
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. Opprett en SF-beregnerinstans
Instantize SF SpeechRecnownizer med en lokalitet som matcher målgruppen din. For standard enhetsspråk, passer :
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))
4. Konfigurere lydøkten og motoren
Sett opp AVAudioEngine til å fange mikrofoninngang. Bruk .record kategori og .måling modus for å understreke talekvalitet:
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()
Alltid pakke lydmotoren starter i en blokk i produksjon for å håndtere mikrofonen utilgjengelighet.
Implementere stemmekommandoer: Fra tale til handling
Når lyden flyter, oppretter du en gjenkjennelsesoppgave og tolker resultater for kommandoer. Nøkkelen er å reagere på delvise resultater slik at kommandoer oppdages selv før brukeren er ferdig med å snakke.
Grunnleggende gjenkjennelsesoppgave
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
}
}
Avansert kommandoparsing
Enkelt fungerer for små ordforråd, men for robuste kommandosett vurderer:
- Å bruke NSLinguisticTagger til å trekke ut nøkkelord og filtrere ut støy.
- Å skape et kommandoordforråd med synonymer (f.eks. ⁇ Skip ⁇ ⁇ next ⁇ ⁇ forward ⁇
- Venter på en høyere tillitsgrense]: sjekk før du spiller.
- Implementere en nedkjøling for å hindre flere utløsere fra samme frase.
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
}
}
}
Håndtering av slutt på tale og stillhet
Som standard avsluttes gjenkjenningsoppgaven når brukeren slutter å snakke og en pause oppdages. Du kan også manuelt avslutte oppgaven ved å ringe eller . For en kontinuerlig kommandoopplevelse (f.eks. diktasjon, multi-steg-handlinger), start gjenkjenningsoppgaven på nytt etter hvert resultat. Husk imidlertid Apples ~ 1-minutters grense på en enkelt oppgave; for lengre økter, kjedeoppgaver.
Avanserte funksjoner: Anerkjenning av enheter og tilpassede ordbøker
Apple introduserte talegjenkjenning på iOS 13, og startet i iOS 13 og har fått tiltro til språkene som er utvalgte (for tiden engelsk, fransk, tysk, japansk, koreansk, mandarin kinesisk, spansk og mer). Fordelene inkluderer ingen nettverksavhengighet, redusert latens og forbedret personvern ⁇ ingen lyd forlater enheten. For å muliggjøre gjenkjenning på enhet:
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
Merk: Nøyaktighet på enhet kan være litt lavere enn serverbasert, spesielt for navngitte enheter eller uvanlig ordforråd. For apper med egendefinerte jarnong (f.eks. medisinske termer, produktnavn), vurdere å legge til en egen vokabularliste] eller ved å trene en innebygd talegjenkjenner] gjennom ] ] , , , [FLT:]].
En annen avansert teknikk er å bruke SF-begrepRecognizer Delegat til å overvåke endringer i tilgjengelighet (f.eks. brukeren trekker tilbake tillatelse, endringer i nettverksstatus).
class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
// Disable or enable voice command button based on availability
}
}
Beste praksis for stemmekommandoer i produksjonen
Stemmegrensesnitt oppfører seg annerledes enn berøring. Følg disse retningslinjene for å levere en polert brukeropplevelse.
1. Gi klar tilbakemelding
- Vis en bølgeform eller pulseringsindikator når du lytter.
- Vis den anerkjente teksten (selv delvis) slik at brukerne vet at systemet fungerer.
- Bruk haptic tilbakemeldinger (via ]UIImpactFeedbackGenerator) på kommandogjenkjenning.
2. Håndtere feil Gracely
Vanlige feil inkluderer ingen mikrofontilgang, gjenkjennelsestjeneste som ikke er tilgjengelig eller dårlig lydkvalitet. Varsle brukeren med handlingsbare meldinger (f.eks. ⁇ Snakk høyere ⁇ eller ⁇ Sjekk Internett-tilkoblingen ⁇
3. Optimer for ulike aksenter og miljøer
Test med en rekke høyttalere. Bruk SF-presentasjons egenskap til å kjøre gjenkjennelse på en bakgrunnstråd. Implement ] stemmeaktivitetsdetektering (VAD) heuristics for å unngå å ta opp død luft.
4. Personvern og åpenhet
Klart forklare hvorfor du trenger mikrofon og taletillatelse. Aldri ta opp eller prosess tale uten brukerformål - systemdesignen bør kreve et uttrykkelig trykk for å starte talekommandoer. For mer på Apples retningslinjer for personvern, se Be om autorisasjon.
5. Implementere en nedtur
Ikke alle brukere kan eller ønsker å bruke stemme. Alltid gi alternativ berøring eller tastaturinngang. For tilgjengelighet, sikre at talekommandoer kan påføres via Switch Control eller VoiceOver.
Ekte verden bruk saker og inspirasjon
- Navigasjon Apps: ⁇ Ta meg hjem ⁇ eller ⁇ Vis nærliggende bensinstasjoner ⁇ ved hjelp av kart SDKs.
- Produktivitet & Note-taking: ⁇ Opprett et nytt notat ⁇ eller ⁇ Legg til oppgave ⁇ integrert med kjernedata eller CloudKit.
- Smart Home Controllers: ⁇ Slå av stuelys ⁇ ved hjelp av HomeKit.
- ] ⁇ Start 5-minutters kjøling ⁇ eller ⁇ Log 10 støt ⁇
- E-Learning: Stemmesvar på flashkort eller quizzes.
For flere ideer, utforsk SF SpeakToMe prøvekode] fra Apple.
Konklusjon: Styrk brukerne dine med stemme
IOS Speech Recognition API er et modent, godt dokumentert verktøy som setter kraften i stemmekommandoer i en hvilken som helst app. Fra onboarding til daglig bruk, velutstyrt stemmefunksjoner redusere friksjon, forbedre tilgjengelighet og glede brukere. Ved å følge installasjonstrinnet, beste praksis og avanserte teknikker som er beskrevet i denne artikkelen, kan du opprette apper som lytter - og reagerer - på måter som føler seg naturlig og uanstrengt.
Start liten: integrere en enkelt kommando ( \"hjelp\" eller \"Gå tilbake\") i neste oppdatering, og deretter utvide basert på brukerens tilbakemeldinger. Som on-device gjenkjennelse forbedres og nye språk legges til, vil potensialet for stemmekontrollerte iOS-opplevelser bare vokse. Fremtiden for app interaksjon snakkes - sørg for at appen din har en stemme.