Table of Contents

Voice Commands: Το μέλλον της αλληλεπίδρασης εφαρμογών iOS

Οι φωνητικές εντολές αναδιαμορφώνουν ριζικά τον τρόπο με τον οποίο οι χρήστες συμμετέχουν με εφαρμογές iOS, μετακινούμενοι πέρα από απλές διεπαφές με χρήση και χρήση με χρήση hands-free, διαισθητικού ελέγχου. Με τη χρήση του API Αναγνώρισης Λόγου iOS, οι προγραμματιστές μπορούν να ενσωματώσουν δυνατότητες ομιλίας σε πραγματικό χρόνο που καθιστούν τις εφαρμογές πιο προσβάσιμες, αποδοτικές και ενεργοποιημένες. Είτε επιτρέποντας τη φωνητική πλοήγηση για έναν ανιχνευτή καταλληλότητας, επιτρέποντας τη λήψη hands-free σημειώσεων σε μια εφαρμογή παραγωγικότητας, είτε τροφοδοτώντας τα χαρακτηριστικά προσβασιμότητας για χρήστες με κινητικές βλάβες, το API Αναγνώρισης Λόγου παρέχει ένα στιβαρό, έτοιμο θεμέλιο. Αυτό το άρθρο διερευνά την πλήρη διαδικασία εφαρμογής φωνητικών εντολών σε εφαρμογές iOS, από την αρχική εγκατάσταση και τον χειρισμό αδειών έως προηγμένες βελτιστοποιήσεις, βέλτιστες πρακτικές και περιπτώσεις χρήσης πραγματικού κόσμου.

Κατανόηση του API Αναγνώρισης Λόγου iOS

Το iOS Speech Recognition API, μέρος του Speech framework[[LFT:1]], επιτρέπει στις εφαρμογές να μετατρέψουν σε κείμενο ζωντανό ή ηχογραφημένο ήχο. Υποστηρίζει πάνω από 60 γλώσσες και διαλέκτους, με τη μηχανή αναγνώρισης να τρέχει είτε on-device (για υποστηριζόμενες γλώσσες) είτε στους διακομιστές της Apple. Η αναγνώριση on-device δίνει προτεραιότητα στην ιδιωτικότητα και λειτουργεί εκτός σύνδεσης, ενώ η αναγνώριση με βάση τον διακομιστή συχνά παρέχει υψηλότερη ακρίβεια για πολύπλοκες προτάσεις. Η κύρια κατηγορία είναι [[LFT:2]SFSpeechRecognizer[LFT:3]], η οποία διαχειρίζεται τη διαδικασία αναγνώρισης και SFSpeechAudioBufferRecognitionRequet]] για ζωντανή εισαγωγή ήχου.

Οι βασικές δυνατότητες περιλαμβάνουν:

  • Μερικό αποτέλεσμα σε πραγματικό χρόνο (χρήσιμο για προοδευτική ανίχνευση εντολών).
  • Υποστήριξη για προσαρμοσμένα λεξιλόγια μέσω SFSpeechRecognizer's ] ιδιοκτησίας.
  • Ένταξη με AvaudioEngine για λήψη ήχου και buffering.

Είναι σημαντικό να σημειωθεί ότι το API έχει σχεδιαστεί για εντολές που ξεκινούν από το χρήστη και όχι για συνεχή, πάντα ακουστικά σενάρια (η Apple επιβάλλει ένα μέγιστο ένα λεπτό σε μια εργασία αναγνώρισης). Αυτός ο περιορισμός ενθαρρύνει την εκ προθέσεως εμπλοκή και διατηρεί τη διάρκεια ζωής της μπαταρίας. Για περαιτέρω ανάγνωση, συμβουλευτείτε την επίσημη τεκμηρίωση πλαίσιο ομιλίας[ και τη WWDC 2019 συνεδρία για την Αναγνώριση Λόγου].

⁇ Αναγνώρισης Λόγου στην Εφαρμογή σας

Η ενσωμάτωση της αναγνώρισης ομιλίας απαιτεί προσεκτική διαχείριση και ρύθμιση ακουστικών συνεδριών. Παρακάτω είναι τα βασικά βήματα, διευρυμένα με τις καλύτερες πρακτικές.

1. Ετοιμάστε το Έργο σας

  • Προσθέστε την ικανότητα Speech στην Υπογραφή & του έργου σας; Δυνατότητες.
  • Περιγράψτε το κλειδί NSMicrophoneUsageDescription στο (π.χ., ⁇ Αυτή η εφαρμογή χρειάζεται πρόσβαση μικροφώνου για να επεξεργαστεί φωνητικές εντολές ⁇
  • Συμπεριλάβετε το πλήκτρο NSSpeechRecognitionUsageDescription (π.χ., ⁇ Αυτή η εφαρμογή στέλνει την ομιλία σας στους διακομιστές της Apple για να αναγνωρίσουν τις εντολές ⁇

Σημείωση: Και τα δύο κλειδιά απαιτούνται ακόμα και αν σκοπεύετε να χρησιμοποιήσετε μόνο την αναγνώριση on-device — η Apple χρειάζεται ακόμα τη συγκατάθεση του χρήστη.

2. Αίτηση εξουσιοδότησης

Καλέστε SFSpeechRecognizer.requestEγκριση από νωρίς στη ροή της εφαρμογής σας (π.χ., σε ). Χειριστείτε κάθε κατάσταση εξουσιοδότησης με χάρη:

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. Δημιουργήστε ένα SFSpeechRecognizer Institution

Στιγμιότυπο SFSpeechRecognizer με ένα τοπικό κοινό που ταιριάζει με το κοινό-στόχο σας. Για προεπιλεγμένη γλώσσα συσκευής, περάστε :

let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))

4. ⁇ της συνεδρίας ήχου και της μηχανής

AvaudioEngine για τη σύλληψη της εισόδου μικροφώνου. Χρησιμοποιήστε τη .record κατηγορία και .μέτρηση[] λειτουργία για τον τονισμό της ποιότητας ομιλίας:

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()

Πάντα τύλιγμα μηχανή ήχου εκκίνηση σε [[LFT:7]] μπλοκ στην παραγωγή για να χειριστεί το μικρόφωνο μη διαθεσιμότητα.

Εκτελεστικές φωνητικές εντολές: Από την ομιλία στην πράξη

Μόλις ο ήχος ρέει, δημιουργείτε μια εργασία αναγνώρισης και αναλύετε τα αποτελέσματα για εντολές. Το κλειδί είναι να αντιδράσετε σε μερικά αποτελέσματα, έτσι ώστε οι εντολές να ανιχνευθούν πριν ακόμη τελειώσει ο χρήστης ομιλία.

Βασική εργασία αναγνώρισης

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
 }
}

Ανάλυση προηγμένων εντολών

Απλό λειτουργεί για μικρά λεξιλόγια, αλλά για ισχυρά σύνολα εντολών σκεφτείτε:

  • Χρησιμοποιώντας NSLinguisticTagger για να εξαγάγετε λέξεις-κλειδιά και να φιλτράρετε το θόρυβο.
  • Δημιουργία λεξιλογίου εντολών με συνώνυμα (π.χ., ⁇ skip ⁇ ⁇ next ⁇ ⁇ forward ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • Περιμένοντας ένα υψηλότερο όριο εμπιστοσύνης: check πριν ενεργήσει.
  • Εφαρμόζοντας μια ψύξη για να αποτραπεί η πολλαπλή ενεργοποίηση από την ίδια φράση.
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
 }
 }
}

Χειρισμός της λήξης της ομιλίας και της σιωπής

Προκαθορισμένα, η εργασία αναγνώρισης τελειώνει όταν ο χρήστης σταματήσει να μιλάει και ανιχνεύεται μια παύση. Μπορείτε επίσης να τερματίσετε χειροκίνητα την εργασία καλώντας ή . Για μια συνεχή εμπειρία εντολών (π.χ., υπαγόρευση, ενέργειες πολλαπλών βημάτων), επανεκκινήστε την εργασία αναγνώρισης μετά από κάθε αποτέλεσμα. Ωστόσο, να έχετε υπόψη το ~1-λεπτό όριο της Apple σε μια μόνο εργασία; για μεγαλύτερες συνεδρίες, εργασίες αλυσίδας.

Προχωρημένα χαρακτηριστικά: Αναγνώριση και τα προσαρμοσμένα λεξιλόγια

Ξεκινώντας από το iOS 13, η Apple εισήγαγε την αναγνώριση ομιλίας on-device για επιλεγμένες γλώσσες (σήμερα αγγλικά, γαλλικά, γερμανικά, ιαπωνικά, κορεατικά, κινέζικα, ισπανικά, και άλλα). Πλεονεκτήματα περιλαμβάνουν καμία εξάρτηση δικτύου, μειωμένη λανθάνουσα λανθάνουσα λανθάνουσα , και ενισχυμένη ιδιωτικότητα - δεν αφήνει τον ήχο της συσκευής. Για να καταστεί δυνατή η αναγνώριση on-device:

guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
 request.requiresOnDeviceRecognition = true
}

Σημείωση: Η ακρίβεια της συσκευής μπορεί να είναι ελαφρώς χαμηλότερη από τη βάση του εξυπηρετητή, ειδικά για οντότητες που κατονομάζονται ή ασυνήθιστο λεξιλόγιο. Για εφαρμογές με προσαρμοσμένη ορολογία (π.χ., ιατρικούς όρους, ονόματα προϊόντων), σκεφτείτε την προσθήκη καταλόγου εθιμικού λεξιλογίου μέσω SFSpeechRecognizer's ή με την εκπαίδευση ενός ενσωματωμένου αναγνωριστή ομιλίας[, , ].

Μια άλλη προηγμένη τεχνική χρησιμοποιεί SFSpeechRecognizerDelegate για την παρακολούθηση αλλαγών διαθεσιμότητας (π.χ., ο χρήστης ανακαλεί την άδεια, αλλαγές κατάστασης δικτύου).

class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
 func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
 // Disable or enable voice command button based on availability
 }
}

Βέλτιστες Πρακτικές για τις φωνητικές εντολές στην παραγωγή

Οι φωνητικές διεπαφές συμπεριφέρονται διαφορετικά από το άγγιγμα. Ακολουθήστε αυτές τις οδηγίες για να παραδώσει μια στιλβωμένη εμπειρία χρήστη.

1. Παροχή σαφή ανατροφοδότηση

  • Εμφάνιση ενός δείκτη κυματομορφής ή παλμού κατά την ακρόαση.
  • Εμφάνιση του αναγνωρισμένου κειμένου (ακόμη και μερικό) ώστε οι χρήστες να γνωρίζουν ότι το σύστημα λειτουργεί.
  • Χρησιμοποιήστε την απτική ανατροφοδότηση (μέσω UIImpactFeedbackGenerator) κατά την αναγνώριση εντολών.

2. Χειρισμός των σφαλμάτων με χάρη

Τα κοινά λάθη περιλαμβάνουν πρόσβαση μικροφώνου, υπηρεσία αναγνώρισης μη διαθέσιμη, ή κακή ποιότητα ήχου.

3. Βελτιστοποιήστε για διαφορετικές προφορές και περιβάλλοντα

Δοκιμή με μια διαφορετική ομάδα ηχείων. Χρησιμοποιήστε την SFSpeechRecognizer ιδιοκτησία για να εκτελέσετε την αναγνώριση σε ένα νήμα φόντου. Εφαρμογή [ ανίχνευση φωνητικής δραστηριότητας (VAD) heuristics για να αποφύγετε την καταγραφή του νεκρού αέρα.

4. Ιδιωτικότητα και διαφάνεια

Ποτέ μην καταγράφετε ή να επεξεργάζεστε ομιλία χωρίς πρόθεση χρήστη — ο σχεδιασμός του συστήματος θα πρέπει να απαιτεί μια ρητή βρύση για να ξεκινήσει φωνητικές εντολές. Για περισσότερα στις οδηγίες απορρήτου της Apple, δείτε Αίτηση αδειοδότησης].

5. Εφαρμογή μιας Αναστροφής

Δεν μπορούν όλοι οι χρήστες ή θέλουν να χρησιμοποιήσουν τη φωνή. Πάντα να παρέχουν εναλλακτική είσοδο αφής ή πληκτρολογίου. Για προσβασιμότητα, βεβαιωθείτε ότι οι φωνητικές εντολές μπορούν να χρησιμοποιηθούν μέσω Switch Control ή VoiceOver.

Περιπτώσεις και Έμπνευση Πραγματικής-Παγκόσμιας Χρήσης

  • Απαλλαγές: ⁇ Πήγαινέ με σπίτι ⁇ ή ⁇ Εμφάνιση κοντινών πρατηρίων καυσίμων ⁇ χρησιμοποιώντας το χάρτη SDKs.
  • Παραγωγικότητα & Σημείωση-Πήδηση: ⁇ Δημιουργήστε μια νέα σημείωση ⁇ ή ⁇ Προσθήκη εργασίας ⁇ ενσωματωμένη με τα βασικά δεδομένα ή CloudKit.
  • Έξυπνα χειριστήρια σπιτιού: ⁇ Σβήσε τα φώτα του σαλονιού ⁇ χρησιμοποιώντας το HomeKit.
  • Γυμναστήριο & προπόνηση:[[LFT:1] ⁇ Ξεκινήστε 5 λεπτά ψύξης ⁇ ή ⁇ Log 10 pushups ⁇
  • E-Learning: Φωνητικές απαντήσεις σε κάρτες ή κουίζ.

Για περισσότερες ιδέες, εξερευνήστε τον SFSpeechRecognizer API reference και τον SpeakingToMe sample code από την Apple.

Συμπέρασμα: Ενδυναμώστε τους χρήστες σας με τη φωνή

Το iOS Speech Recognition API είναι ένα ώριμο, καλά τεκμηριωμένο εργαλείο που τοποθετεί τη δύναμη των φωνητικών εντολών σε οποιαδήποτε εφαρμογή. Από την επιβίβαση στην καθημερινή χρήση, καλά εφαρμοσμένα φωνητικά χαρακτηριστικά μειώνουν την τριβή, τη βελτίωση της προσβασιμότητας και την απόλαυση των χρηστών. Με την παρακολούθηση των βημάτων εγκατάστασης, βέλτιστες πρακτικές και προηγμένες τεχνικές που περιγράφονται σε αυτό το άρθρο, μπορείτε να δημιουργήσετε εφαρμογές που ακούνε — και να απαντήσετε — με τρόπους που αισθάνονται φυσικό και αβίαστοι.

Ξεκινήστε μικρά: ενσωματώστε μια ενιαία εντολή (“Help” ή “Go back”) στην επόμενη ενημέρωση σας, στη συνέχεια επεκτείνετε με βάση τα σχόλια των χρηστών. Καθώς η αναγνώριση on-device βελτιώνεται και προστίθενται νέες γλώσσες, η δυνατότητα για φωνητικές εμπειρίες iOS θα αυξηθεί μόνο. Το μέλλον της αλληλεπίδρασης εφαρμογών ομιλείται - βεβαιωθείτε ότι η εφαρμογή σας έχει φωνή.