Civiele & structurele engineering
Gebruik van de Ios Speech Recognition API voor spraakcommando's in Apps
Table of Contents
Voice Commands: De toekomst van iOS-appinteractie
Voice commando's zijn fundamenteel aan het hervormen hoe gebruikers zich bezighouden met iOS-toepassingen, en verder bewegen dan eenvoudige tap-and-swipe interfaces naar hands-free, intuïtieve controle. Door gebruik te maken van de iOS Speech Recognition API, kunnen ontwikkelaars real-time spraak-naar-tekst mogelijkheden integreren die apps toegankelijker, efficiënter en boeiender maken. Of het nu spraakgestuurde navigatie mogelijk maakt voor een fitness tracker, waardoor hands-free notitie-opname in een productiviteitsapp, of het voeden van toegankelijkheidsfuncties voor gebruikers met motorische beperkingen, de Speech Recognition API biedt een robuuste, productie-ready basis. Dit artikel verkent het volledige proces van het implementeren van spraak commando's in iOS-apps, van initiële setup en toestemmingsbehandeling tot geavanceerde optimalisatie, beste praktijken en real-world use cases.
Begrijpen van de iOS-toespraakherkenning API
De iOS Speech Recognition API, onderdeel van het Spraakkader, maakt het mogelijk om live of vooraf opgenomen audio om te zetten in tekst. Het ondersteunt meer dan 60 talen en dialecten, met de herkenningsmotor die draait op het apparaat (voor ondersteunde talen) of op Apple's servers. On-device herkenning geeft prioriteit aan privacy en werkt offline, terwijl server-gebaseerde erkenning vaak een hogere nauwkeurigheid levert voor complexe zinnen. De primaire klasse is SFSpeechRecognizer, die het herkenningsproces beheert, en SFSpeechAudioBufferRecongnitionRequest[ voor live audio input.
De belangrijkste mogelijkheden zijn:
- Real-time gedeeltelijke resultaten (handig voor progressieve commando detectie).
- Ondersteuning voor aangepaste woordenlijsten via SFSpeechRecognizer's .
- Integratie met AVAudioEngine voor audio-opname en buffering.
Het is belangrijk om op te merken dat de API is ontworpen voor door de gebruiker geïnitieerde commando's en niet voor continue, altijd luisterende scenario's (Apple legt een maximum van één minuut op één herkenningstaak). Deze beperking stimuleert opzettelijke betrokkenheid en behoudt de levensduur van de batterij. Raadpleeg voor meer lezen de officiële documentatie van het Speech framework en de WWDC 2019 sessie over Speech Recognition.
Spraakherkenning instellen in uw app
Het integreren van spraakherkenning vereist zorgvuldige toestemmingsbehandeling en audiosessieconfiguratie. Hieronder volgen de essentiële stappen, uitgebreid met best practices.
1. Bereid uw project voor
- Voeg de Spraak-functie toe in de ondertekening & mogelijkheden van uw project.
- Voeg de NSMicrophoneUsageOmschrijving sleutel in (bijvoorbeeld: "Deze app heeft microfoontoegang nodig om spraakopdrachten te verwerken").
- Inclusief de NSSpeechRecongnitieUsageOmschrijving sleutel (bijv., "Deze app stuurt uw toespraak naar Apple
Opmerking: Beide toetsen zijn vereist, zelfs als u van plan bent om alleen on-device herkenning te gebruiken . . Apple heeft nog steeds toestemming van de gebruiker nodig.
2. Verzoek om toestemming
Bel SFSpeechRecognizer.requestAuthorization vroeg in uw appstroom (bijv. in ). Behandel elke autorisatiestatus met de volgende gratie:
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. Maak een SFSpeechRecognizer Initial
Instantieer SFSpeechRecognizer met een locale die overeenkomt met uw doelgroep. Geef voor standaardtaal van het apparaat :
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))
4. Configureer de audiosessie en de engine
Stel AVAudioEngine in om de microfooninvoer vast te leggen. Gebruik de .record categorie en .meten modus om spraakkwaliteit te benadrukken:
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()
Altijd inpakken audio-engine start in een blok in productie om microfoon onbeschikbaarheid te verwerken.
Voice Commands uitvoeren: Van spraak naar actie
Zodra audio stroomt, maak je een herkenningstaak en ontleden resultaten voor commando's. De sleutel is om te reageren op gedeeltelijke resultaten, zodat commando's worden gedetecteerd zelfs voordat de gebruiker klaar is met spreken.
Basistaak voor erkenning
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
}
}
Geavanceerde commando-ontleden
Eenvoudig werkt voor kleine woordenlijsten, maar voor robuuste commandosets overwegen:
- Met behulp van NSLinguisticTagger om zoekwoorden te extraheren en lawaai te filteren.
- Een commando woordenschat maken met synoniemen (bv. "skip," "next," "forward").
- Wachtend op een hogere betrouwbaarheidsdrempel: controleer alvorens te handelen.
- Een afkoeling implementeren om meerdere triggers uit dezelfde zin te voorkomen.
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
}
}
}
Behandeling van eindspraak en stilte
Standaard eindigt de herkenningstaak wanneer de gebruiker stopt met spreken en een pauze wordt gedetecteerd. U kunt de taak ook handmatig beëindigen door of ] aan te roepen. Voor een continue opdrachtervaring (bijv. dicteren, meerdere stappen), herstart de herkenningstaak na elk resultaat. Houd echter in gedachten Apple's ~1-minuten limiet op één taak; voor langere sessies, ketentaken.
Geavanceerde functies: On-Device Recognition en aangepaste woordenlijsten
Vanaf iOS 13 introduceerde Apple spraakherkenning op het apparaat voor bepaalde talen (momenteel Engels, Frans, Duits, Japans, Koreaans, Mandarijns Chinees, Spaans, en meer). Voordelen zijn geen netwerkafhankelijkheid, verminderde latentie en verbeterde privacy . Er wordt geen audio verlaten het apparaat. Om on-device herkenning in te schakelen:
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
Noot: De nauwkeurigheid van het apparaat kan iets lager zijn dan die van de server, vooral voor genoemde entiteiten of voor ongebruikelijke woordenschat. Voor apps met aangepaste jargon (bv. medische termen, productnamen), overwegen om een []custom woordenschatlijst te voegen via SFSpeechRecognizer's ] of door een ] ingebouwde spraakherkenner ] door ]]Speech framework's (bv. , ], ).
Een andere geavanceerde techniek is het gebruik van SFSpeechRecognizerDelegate om de beschikbaarheidsveranderingen te monitoren (bijv., gebruiker trekt toestemming in, netwerkstatuswijzigingen). Implementeer:
class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
// Disable or enable voice command button based on availability
}
}
Beste praktijken voor spraakcommando's in productie
Steminterfaces gedragen zich anders dan aanraking. Volg deze richtlijnen om een gepolijste gebruikerservaring te bieden.
1. Geef duidelijke feedback
- Toon een golfvorm of pulseerindicator bij het luisteren.
- Toon de herkende tekst (zelfs gedeeltelijk) zodat gebruikers weten dat het systeem werkt.
- Gebruik haptische feedback (via UIIppactFeedbackGenerator) over commandoherkenning.
2. Vergissingen met eer en eer
Veel voorkomende fouten zijn onder meer geen microfoontoegang, herkenningsdienst niet beschikbaar, of slechte audiokwaliteit. Waarschuw de gebruiker met actieve berichten (bijv., "Spreek luider" of "Controleer uw internetverbinding").
3. Optimaliseren voor verschillende accenten en omgevingen
Test met een diverse groep sprekers. Gebruik de eigenschap SFSpeechRecognizer om herkenning op een achtergronddraad te laten draaien. Implementeer voice activiteitsdetectie (VAD) heuristiek om het opnemen van dode lucht te vermijden.
4. Privacy en transparantie
Leg duidelijk uit waarom je microfoon en spraak toestemming nodig hebt. Neem nooit spraak op of verwerk het spraakproces zonder gebruikersinzet .Het systeemontwerp moet een expliciete tik vereisen om spraakopdrachten te starten. Voor meer informatie over Apple's privacyrichtlijnen, zie Authorization aanvragen.
5. Implementeer een terugval
Niet alle gebruikers kunnen of willen stem gebruiken. Zorg altijd voor alternatieve touch of toetsenbordinvoer. Zorg ervoor dat spraakopdrachten kunnen worden aangeroepen via Switch Control of VoiceOver.
Real-World Use Cases en Inspiratie
- Navigatie Apps: "Neem me mee naar huis" of "Toon nabijgelegen benzinestations" met behulp van kaart SDK's.
- Productiviteit en opmerking-Naking: "Maak een nieuwe noot" of "Toevoegen taak" geïntegreerd met kerngegevens of CloudKit.
- Slimme Home Controllers: "Schakel de verlichting van de woonkamer uit" met HomeKit.
- Fitness & Workout: "Start 5 minuten afkoelen" of "Log 10 push-ups."
- E-Learning: Stemantwoorden op flashcards of quizzen.
Voor meer ideeën, verken SFSpeechRecognizer API referentie en de SpeakToMe monstercode[] van Apple.
Conclusie: Geef uw gebruikers meer kracht met stem
De iOS Speech Recognition API is een volwassen, goed gedocumenteerde tool die de kracht van spraak commando's in elke app zet. Van onboarding tot dagelijks gebruik, goed geïmplementeerde spraak functies verminderen wrijving, verbeteren de toegankelijkheid, en verrukking gebruikers. Door het volgen van de setup stappen, beste praktijken en geavanceerde technieken beschreven in dit artikel, kunt u apps die luisteren .. en reageren .. op manieren die natuurlijk en moeiteloos voelen.
Start klein: integreren van een enkele opdracht ( .Help. of .Ga terug .) in uw volgende update, vervolgens uitbreiden op basis van feedback van de gebruiker. Als on-device herkenning verbetert en nieuwe talen worden toegevoegd, de mogelijkheid voor spraakgestuurde iOS-ervaringen zal alleen groeien. De toekomst van de interactie van de app wordt gesproken . . Zorg ervoor dat uw app heeft een stem.