Commandes vocales : l'avenir de l'interaction des applications iOS

En utilisant l'API de reconnaissance vocale iOS, les développeurs peuvent intégrer des capacités vocales en temps réel qui rendent les applications plus accessibles, efficaces et engageantes. Que ce soit pour permettre la navigation vocale pour un tracker de fitness, pour permettre la prise de notes mains libres dans une application de productivité ou pour alimenter des fonctionnalités d'accessibilité pour les utilisateurs ayant une déficience motrice, l'API de reconnaissance vocale offre une base robuste et prête à la production. Cet article explore le processus complet de mise en œuvre des commandes vocales dans les applications iOS, depuis la configuration initiale et la gestion des autorisations jusqu'à l'optimisation avancée, les meilleures pratiques et les cas d'utilisation réelle.

Comprendre l'API de reconnaissance vocale iOS

L'API de reconnaissance vocale iOS, qui fait partie du framework de Speech, permet aux applications de convertir en texte des audios en direct ou préenregistrés. Elle prend en charge plus de 60 langues et dialectes, le moteur de reconnaissance fonctionnant soit sur les appareils (pour les langues prises en charge) ou sur les serveurs d'Apple. La reconnaissance sur les appareils priorise la confidentialité et fonctionne hors ligne, tandis que la reconnaissance basée sur les serveurs offre souvent une plus grande précision pour les phrases complexes.

Les principales capacités sont les suivantes :

  • Résultats partiels en temps réel (utiles pour la détection progressive de commandes).
  • Support pour les vocabulaires personnalisés via la propriété SFSpeechRecongnizer .
  • Intégration avec AVAudioEngine pour la capture et le tamponage audio.

Il est important de noter que l'API est conçue pour les commandes lancées par l'utilisateur et non pour les scénarios continus et toujours en écoutant (Apple impose un maximum d'une minute sur une seule tâche de reconnaissance).Cette limitation encourage l'engagement intentionnel et préserve la durée de vie de la batterie. Pour plus de détails, consultez la documentation officielle du cadre de la parole et la session de WWDC 2019 sur la reconnaissance de la parole.

Configuration de la reconnaissance vocale dans votre application

L'intégration de la reconnaissance vocale nécessite un traitement attentif des permissions et une configuration audio des sessions. Voici les étapes essentielles, élargies avec les meilleures pratiques.

1. Préparez votre projet

  • Ajouter la capacité Speech dans les capacités de signature & de votre projet.
  • Inclure la touche NSMicrophoneUsageDescription dans (p. ex., «Cette application a besoin d'un accès au microphone pour traiter les commandes vocales»).
  • Inclure la touche NSSpeechReconnaissanceUsageDescription (par exemple, «Cette application envoie votre discours aux serveurs Apple=» pour reconnaître les commandes»).

Remarque : Les deux clés sont nécessaires même si vous prévoyez d'utiliser uniquement la reconnaissance sur les appareils — Apple a toujours besoin du consentement de l'utilisateur.

2. Demande d ' autorisation

Appeler SFSpeechRecognizer.requestAutorisation au début de votre flux d'application (p. ex., dans ).

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. Créer une instance de reconnaissance SFSpeech

Instantiate SFSpeechRecognizer avec une localité qui correspond à votre public cible. Pour la langue de l'appareil par défaut, passez :

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

4. Configurer la session audio et le moteur

Configurez AVAudioEngine pour capturer l'entrée du microphone. Utilisez le mode .record et .mesure[ pour souligner la qualité de la parole :

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

Toujours envelopper le démarrage du moteur audio dans un bloc en production pour gérer l'indisponibilité du microphone.

Mise en œuvre des commandes vocales : du discours à l'action

Une fois l'audio en flux, vous créez une tâche de reconnaissance et analysez les résultats pour les commandes. La clé est de réagir aux résultats partiels afin que les commandes soient détectées avant même que l'utilisateur ne termine de parler.

Tâche de reconnaissance de base

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

Parsing avancé de commande

Simple fonctionne pour les petits vocabulaires, mais pour les ensembles de commandes robustes considérer:

  • Utiliser NSLinguisticTagger pour extraire des mots-clés et filtrer le bruit.
  • Créer un vocabulaire de commande avec des synonymes (p. ex., "skip", "next", "forward").
  • En attente d'un seuil de confiance plus élevé: vérifier avant d'agir.
  • Mise en œuvre d'un refroidissement[ pour empêcher plusieurs déclencheurs de la même phrase.
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
 }
 }
}

Manipulation de fin de semaine et de silence

Par défaut, la tâche de reconnaissance se termine lorsque l'utilisateur cesse de parler et qu'une pause est détectée. Vous pouvez également la terminer manuellement en appelant ou . Pour une expérience de commande continue (par exemple, dictée, actions en plusieurs étapes), redémarrez la tâche de reconnaissance après chaque résultat. Cependant, gardez à l'esprit la limite de ~1 minute d'Apple sur une seule tâche; pour des sessions plus longues, les tâches en chaîne.

Caractéristiques avancées: Reconnaissance sur les appareils et Vocabulaires personnalisés

Depuis iOS 13, Apple introduit la reconnaissance vocale sur les appareils pour certaines langues (actuellement anglais, français, allemand, japonais, coréen, chinois mandarin, espagnol, etc.). Les avantages incluent aucune dépendance réseau, latence réduite et une plus grande confidentialité — aucun audio ne quitte l'appareil.

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

Note : La précision de l'appareil peut être légèrement inférieure à celle du serveur, en particulier pour les entités nommées ou le vocabulaire inhabituel. Pour les applications avec jargon personnalisé (p. ex., termes médicaux, noms de produits), envisager d'ajouter une liste de vocabulaire [custom via SFSpeechRecognizer[ ] ou par la formation d'un récepteur de parole intégré[ par [par exemple, , , ].

Une autre technique avancée est l'utilisation de SFSpeechRecognizerDelegate pour surveiller les changements de disponibilité (p. ex., l'utilisateur révoque la permission, les changements de statut réseau).

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

Meilleures pratiques pour les commandes vocales en production

Les interfaces vocales se comportent différemment que le toucher. Suivez ces lignes directrices pour offrir une expérience utilisateur raffinée.

1. Fournir des commentaires clairs

  • Affichez un indicateur de forme d'onde ou de pulsation lors de l'écoute.
  • Affichez le texte reconnu (même partiel) afin que les utilisateurs sachent que le système fonctionne.
  • Utilisez la rétroaction haptique (via UIImpactFeedbackGenerator) sur la reconnaissance de commande.

2. Poignez les erreurs avec grâce

Les erreurs courantes comprennent l'absence d'accès au microphone, le service de reconnaissance non disponible ou une mauvaise qualité audio. Alertez l'utilisateur avec des messages actionnables (p. ex., « S'il vous plaît parlez plus fort » ou « Vérifiez votre connexion Internet »).

3. Optimiser pour différents Accents et Environnements

Testez avec un groupe diversifié de haut-parleurs. Utilisez la propriété SFSpeechRecognizer pour exécuter la reconnaissance sur un fil de fond. Implémentez [Heuristique] (VAD) pour éviter d'enregistrer l'air mort.

4. Vie privée et transparence

Expliquez clairement pourquoi vous avez besoin d'une permission de microphone et de parole. Ne jamais enregistrer ou traiter la parole sans l'intention de l'utilisateur — la conception du système devrait nécessiter un clic explicite pour démarrer les commandes vocales. Pour plus d'informations sur les lignes directrices de confidentialité d'Apple, voir Autorisation de demande.

5. Mettre en œuvre un repli

Tous les utilisateurs ne peuvent pas utiliser la voix ou veulent l'utiliser. Toujours fournir une entrée tactile ou clavier alternative. Pour l'accessibilité, assurez-vous que les commandes vocales peuvent être invoquées via le contrôle de commutation ou VoiceOver.

Cas d'utilisations et d'inspirations réelles dans le monde

  • Navigation Apps:[ "Ramène-moi chez moi" ou "Afficher les stations-service à proximité" en utilisant la carte SDKs.
  • Productivité & Note-Takeing: "Créer une nouvelle note" ou "Ajouter une tâche" intégrée avec les données de base ou CloudKit.
  • Smart Home Controllers: "Détourner les lumières du salon" en utilisant HomeKit.
  • Fitness & Workout: "Démarrer le refroidissement de 5 minutes" ou "Log 10 pushups".
  • E-Learning:[ Réponses vocales aux cartes-éclair ou aux quiz.

Pour plus d'idées, explorez le SFSpeechRecognizer API reference[ et le SpeakToMe sample code[ d'Apple.

Conclusion : Donner à vos utilisateurs la voix

L'API de reconnaissance vocale iOS est un outil mature et bien documenté qui met la puissance des commandes vocales dans n'importe quelle application. De l'embarquement à l'utilisation quotidienne, des fonctions vocales bien mises en œuvre réduisent la friction, améliorent l'accessibilité et ravissent les utilisateurs. En suivant les étapes de configuration, les meilleures pratiques et les techniques avancées décrites dans cet article, vous pouvez créer des applications qui écoutent — et répondent — de manière naturelle et sans effort.

Démarrer petit : intégrer une commande unique (=Aide= ou=Retourner=) dans votre prochaine mise à jour, puis étendre en fonction des commentaires des utilisateurs. Comme la reconnaissance sur les appareils s'améliore et que de nouvelles langues sont ajoutées, le potentiel pour les expériences iOS contrôlées par la voix ne fera que croître.