Ingegneria civile e strutturale
Utilizzo dell'API di riconoscimento vocale Ios per comandi vocali in app
Table of Contents
Comandi vocali: Il futuro dell'interazione dell'app iOS
I comandi vocali stanno ridisegnando in modo fondamentale come gli utenti si impegnino con le applicazioni iOS, passando oltre semplici interfacce di tap-and-swipe per il controllo intuitivo e senza mani. Grazie alla leva dell'API di riconoscimento vocale iOS, gli sviluppatori possono integrare le migliori funzionalità di scrittura-lettura in tempo reale che rendono le applicazioni più accessibili, efficienti e coinvolgenti.
Comprendere l'API di riconoscimento vocale iOS
La classe di riconoscimento vocale di iOS]Semplificare la funzione ], consente alle app di convertire l'audio live o preregistrato in testo. Supporta oltre 60 lingue e dialetti, con il motore di riconoscimento in esecuzione o on-device (per le lingue supportate) o sui server di Apple.
Le funzionalità chiave includono:
- Risultati parziali in tempo reale (utili per il rilevamento progressivo dei comandi).
- Supporto per i vocabulries personalizzati tramite [SFSpeechRecognizer's[] ] proprietà.
- Integrazione con AVAudioEngine[] per la cattura e il buffering audio.
È importante notare che l'API è progettata per comandi avviati dall'utente e non per scenari di sempre-listening continui (Apple impone un massimo di un minuto su un unico compito di riconoscimento). Questa limitazione incoraggia il coinvolgimento intenzionale e preserva la durata della batteria. Per ulteriori informazioni, consultare la documentazione del framework ufficiale del discorso e la sessione SpeeDC]
Impostazione del riconoscimento vocale nella tua app
L'integrazione del riconoscimento vocale richiede un'attenta gestione dei permessi e una configurazione della sessione audio.
1. Prepara il tuo progetto
- Aggiungi la capacità Speech[] nel tuo progetto di Segnare & Capacità.
- Includere il NSMicrophoneUsageDescription[[] key in [] (ad esempio, "Questa applicazione ha bisogno di accesso microfono ai comandi vocali di processo").
- Includere il SSpeechRecognitionUsageDescription[[[]] chiave (ad esempio, "Questa applicazione invia il tuo discorso ai server di Apple per riconoscere i comandi").
Nota: Entrambe le chiavi sono necessarie anche se si prevede di utilizzare solo il riconoscimento on-device — Apple ha ancora bisogno del consenso dell'utente.
2. Richiesta autorizzazione
Chiama SFSpeechRecognizer.requestAuthorization[[]] presto nel flusso dell'app (ad esempio, in ).
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. Creare un Indagine di riconoscimento SFSpeech
Instantiate SFSpeechRecognizer[[]] con un locale che corrisponde al vostro target di riferimento. Per il linguaggio di dispositivo predefinito, passare :
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))
4. Configurare la sessione audio e il motore
Impostare AVAudioEngine[[]]] per catturare l'ingresso del microfono. Utilizzare la [].record[[]]] categoria e ]]].misurazione[]] modo per sottolineare la qualità del discorso:
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()
Avviare sempre il motore audio in un blocco in produzione per gestire il microfono indisponibilità.
Comandi vocali di esecuzione: da discorso a azione
Una volta che l'audio scorre, si crea un'attività di riconoscimento e si verifica un risultato di parsa per i comandi. La chiave è quella di reagire ai risultati parziali in modo che i comandi vengano rilevati anche prima che l'utente finisca di parlare.
Compiti di riconoscimento di 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 di comando avanzato
Semplice funziona per piccoli vocabulari, ma per i set di comandi robusti considerano:
- Utilizzando NSLinguisticTagger[[] per estrarre parole chiave e filtrare il rumore.
- Creare un vocabolario di comando[[] con sinonimi (ad esempio, "skip", "next", "forward").
- ]Attesa per una soglia di fiducia maggiore[[: controllare prima di agire.
- Implementa un cooldown[] per impedire che più trigger dalla stessa 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
}
}
}
Gestione di End ofSpeech e Silenzio
Per impostazione predefinita, l'attività di riconoscimento termina quando l'utente smette di parlare e viene rilevata una pausa. Puoi anche terminare manualmente l'attività chiamando [] o . Per un'esperienza di comando continua (ad esempio, dittatura, azioni multi-step), riavviare l'attività di riconoscimento dopo ogni risultato.
Caratteristiche avanzate: Riconoscimento on-Device e Vocabulries personalizzati
A partire da iOS 13, Apple ha introdotto il riconoscimento vocale on-device per le lingue selezionate (attualmente inglese, francese, tedesco, giapponese, coreano, cinese mandarino, spagnolo e altro ancora). I vantaggi includono nessuna dipendenza di rete, latenza ridotta e la privacy migliorata — nessun audio lascia il dispositivo.
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
[LT] [LT]] [[LT]]] [[LT]]] [[[[[[FLT]]]]]] [[[LT]]]] [[LT]]]] [[[[FLT]]]]] [[[[FLT]]]]]]] [[[[[FLT]]]]]]]]] [[FLT]]]]]]]] [[[[[[[[[[[[[[[[FLT]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
Un'altra tecnica avanzata sta usando SFSpeechRecognizerDelegate[[[]] per monitorare i cambiamenti di disponibilità (ad esempio, l'utente revoca il permesso, i cambiamenti di stato della rete).
class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
// Disable or enable voice command button based on availability
}
}
Migliori Pratiche per Comandi Voci in Produzione
Le interfacce vocali si comportano in modo diverso dal tocco. Seguire queste linee guida per offrire un'esperienza utente lucida.
1. Fornire il feedback chiaro
- Mostrare una forma d'onda o un indicatore di pulsazione quando si ascolta.
- Visualizzare il testo riconosciuto (anche parziale) in modo che gli utenti sappiano che il sistema funziona.
- Usare feedback aptico (via ]UIImpactFeedbackGenerator[[]) sul riconoscimento di comando.
2. Errori di maniglia con grazia
Gli errori comuni includono nessun accesso al microfono, servizio di riconoscimento non disponibile, o scarsa qualità audio. Avvertire l'utente con messaggi attuabili (ad esempio, "Si prega di parlare più forte" o "Controllare la connessione Internet").
3. Ottimizzare per diversi accenti e ambienti
Prova con un gruppo di altoparlanti diverso. Utilizzare la proprietà SFSpeechRecognizer[[]] per eseguire il riconoscimento su un thread di sfondo. Implement voice attività di rilevamento] (VAD) euristica per evitare la registrazione dell'aria morta.
4. Privacy e trasparenza
Non registrare o elaborare il discorso senza intenti dell'utente — il sistema di progettazione dovrebbe richiedere un tocco esplicito per avviare i comandi vocali. Per ulteriori informazioni sulle linee guida sulla privacy di Apple, vedere Richiesta di autorizzazione.
5. Attuazione di un ritorno autunnale
Non tutti gli utenti possono o vogliono usare la voce. Fornisci sempre un tocco alternativo o un ingresso della tastiera. Per l'accessibilità, assicurarsi che i comandi vocali possano essere invocati tramite Controllo Interruttore o VoiceOver.
Casi e Ispirazione di uso reale-mondiale
- Navigation Apps:[] "Portami a casa" o "Mostra stazioni a gas nelle vicinanze" utilizzando la mappa SDKs.
- Produttività e Note-Taking:[[] "Crea una nuova nota" o "Add task" integrato con Dati Nuclei o CloudKit.
- Smart Home Controllers:[] "Scegli le luci del soggiorno" utilizzando HomeKit.
- Fitness & Workout:[ "Inizi a 5 minuti di raffreddamento" o "Log 10 pushups".
- E-Learning:[] Risposta vocale a flashcard o quizze.
Per ulteriori idee, esplorare il SFSpeechRecognizer API reference[ e il ]]SpeakToMe codice campione[[] da Apple.
Conclusione: potenziare i tuoi utenti con la voce
L'API di riconoscimento vocale iOS è uno strumento maturo e ben documentato che mette in ogni app la potenza dei comandi vocali. Dall'accensione all'uso quotidiano, le funzioni vocali ben implementate riducono l'attrito, migliorano l'accessibilità e deliziano gli utenti.
Iniziare piccolo: integrare un singolo comando (“Help” o “Go back”) nel tuo prossimo aggiornamento, quindi espandersi in base al feedback degli utenti. Come il riconoscimento on-device migliora e vengono aggiunte nuove lingue, il potenziale per le esperienze iOS controllate dalla voce crescerà solo. Il futuro dell'interazione app è parlato - assicurarsi che la tua applicazione ha una voce.