Table of Contents
Äänen komennot: iOS-sovelluksen vuorovaikutus tulevaisuuden kanssa
Äänentunnistusapi -sovelluksen avulla kehittäjät voivat integroida reaaliaikaisia puheen-tekstin ominaisuuksia, jotka tekevät sovelluksista helppokäyttöisempiä, tehokkaampia ja sitoutuvia. Ohjaavatko he äänenohjattua navigointia kuntolähettimelle, mahdollistavatko he hands-free-muistinoton tuottavuussovelluksessa tai tehostavatko käyttäjät esteettömyyttä moottorin vajavaisuuksien kanssa, puhetunnistuksen sovellus tarjoaa vankan, tuotannon kannalta valmiin perustan. Tämä artikkeli tutkii täydellistä prosessia, jossa iOS-sovelluksissa otetaan äänikomennot käyttöön, alkuasennuksesta ja luvan käsittelystä edistyneisiin optimointiin, parhaisiin käytäntöihin ja tosimaailman käyttötapauksiin.
iOS-puheentunnistusrajapinnan ymmärtäminen
IOS PuhetunnistusaPI, osa Speech-kehystä[, mahdollistaa sovellusten muuntamisen suoraksi tai ennalta tallennetuksi tekstiksi. Se tukee yli 60:tä kieltä ja murretta, joiden tunnistusmoottori toimii joko laitteena (tukikielille) tai Applen palvelimilla. On-laitteentunnistus priorisoi yksityisyyden ja toimii offline-tilassa, kun taas palvelinpohjainen tunnustaminen usein antaa suuremman tarkkuuden monimutkaisille lauseille. Primaariluokka on []SFSpeechRecognizer[, joka hallinnoi tunnustamisprosessia, ja [SFSpeechAudioBufferRecognitionRequest].
Keskeisiä ominaisuuksia ovat:
- Reaaliaikaiset osittaiset tulokset (hyödyllinen etenevän komentonäytön havaitsemiseen).
- Tuki mukautetuille sanastoille SFSpeechRecognizerin ominaisuuden kautta.
- Integrointi AVAudioEngine:n kanssa äänitallennukseen ja puskurointiin.
On tärkeää huomata, että API on suunniteltu käyttäjän käynnistämiä komentoja varten eikä jatkuviin, aina kuunteleviin skenaarioihin (Apple määrää yhden minuutin enimmäisajan yhdelle tunnistustehtävälle). Tämä rajoitus kannustaa tarkoitukselliseen sitoutumiseen ja säilyttää akun käyttöiän. Lisätietoja saat [] virallisesta puhekehysdokumentista[] ja []WWWDC 2019 -istuimesta puhetunnistus .
Puheentunnistuksen asettaminen sovelluksessasi
Puheentunnistuksen integrointi edellyttää huolellista lupakäsittelyä ja äänenkäsittelyn konfigurointia. Alla ovat keskeiset vaiheet, joita laajennetaan parhailla käytännöillä.
1. Valmistele projektisi
- Lisää puhe-ominaisuus projektisi signing & Capabilities -toimintoihin.
- Sisällytä NSMicrophoneKäsittely -näppäin (esim., Tämä sovellus tarvitsee mikrofonin pääsyn prosessiäänikomennot).
- Sisällytä NSPuheentunnistusKäyttökuvaus[ -avain (esim. "Tämä sovellus lähettää puheen Apple... palvelimelle tunnistamaan komennot").
Huom: Molemmat avaimet ovat tarpeen, vaikka aiot käyttää vain laitteentunnistus . Apple tarvitsee silti käyttäjän suostumuksen.
2. Pyyntö Valtuutus
Soita SFSpeechRecognizer.requestAuthorization] app flow (esim. ). Käsittele jokaisen valtuutustilan hienovaraisesti:
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. Luo SFSpeechRecognizer -installaatio
Instantoidaan SFSpeechRecognizer[] kanssa locale, joka vastaa kohdeyleisö. Oletuslaitteen kieli, syötä :
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))
4. Muokkaa äänenkäsittelyn ja moottorin asetuksia
Aseta AVAudioEngine mikrofonin syötön kaappaamiseksi. Käytä .ennätys-luokkaa ja .mittaa[-tilaa korostaaksesi puheen laatua:
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()
Aina kääritään äänimoottori käynnistymään -blokissa tuotannossa mikrofonin puuttumisen varalta.
Toteutusäänikomennot: Puheesta toimintaan
Kun ääni on virtaamassa, luot tunnistustehtävän ja tulkitset komentoja varten. Avain on reagoida osittaisiin tuloksiin niin, että komennot havaitaan jo ennen kuin käyttäjä lopettaa puhumisen.
Perustunnustustehtävä
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
}
}
Komentojen jatkojako
Yksinkertainen toimii pienissä sanastoissa, mutta vankoissa komentosarjoissa on otettava huomioon:
- NSL LinguisticTagger -sovellus avainsanojen poimimiseksi ja melun suodattamiseksi pois.
- ]Komentosanaston [ luominen synonyymeillä (esim. "skip," "seuraava," "edessä").
- ]Odotetaan korkeampaa luotettavuuskynnystä : tarkastetaan ennen toimintaa.
- Täytän kylmälaukaisun, jotta voidaan estää useita laukaisimia samasta lauseesta.
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
}
}
}
Puheen loppu ja hiljaisuus
Oletuksena on, että tunnistustehtävä päättyy, kun käyttäjä lopettaa puhumisen ja tauko havaitaan. Voit myös lopettaa tehtävän käsin soittamalla tai . Jatkuvaa komentokokemusta varten (esim. sanelu, monivaiheiset toimet) käynnistää uudelleen tunnistustehtävän jokaisen tuloksen jälkeen. Pidä kuitenkin mielessä Applen ~1-minuutin raja yhdessä tehtävässä; pidempiä istuntoja varten, ketjutehtävät.
Kehittyneet ominaisuudet: On-Device tunnistaminen ja mukautetun sanastot
Alkaen iOS 13, Apple esitteli on-laite puheentunnistus select languages (tällä hetkellä Englanti, ranska, saksa, japani, korea, mandariinikiina, espanja, ja paljon muuta). Edut sisältävät ei verkkoriippuvuutta, vähentynyt latenssi, ja parannettu yksityisyys . Jotta on-laitetunnistus:
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
Huom.: Laitetarkkuus voi olla hieman pienempi kuin palvelimeen perustuva sanasto, erityisesti nimettyjen yksiköiden tai epätavallisten sanastojen osalta. Sovellusten osalta, joissa on oma jargoni (esim. lääketieteelliset termit, tuotenimet), harkita []-konsessiosanastoluettelon lisäämistä [[]]-muodossa []-SFSpeechRecognizerin[]]- tai -kouluttamalla -in-puheentunnistinta []]-järjestelmän kautta []-pikayhteysjärjestelmän [][[[FLT:]]]]]-koulutuksella [[FLT:]]]]][[FLT:]]]]]].
Toinen kehittynyt tekniikka on SFSpeechRecognizerDelegate seurata saatavuusmuutoksia (esim. käyttäjä peruuttaa luvan, verkon tilan muutoksia). Toteuta:
class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
// Disable or enable voice command button based on availability
}
}
Parhaat käytännöt äänen komennoille tuotannossa
Äänen rajapinnat käyttäytyvät eri tavalla kuin kosketus. Noudata näitä ohjeita antaaksesi kiillotetun käyttäjäkokemuksen.
1. Anna selkeä palaute
- Näytä aaltomuoto tai sykkivä ilmaisin kuunnellessa.
- Näytä tunnustettu teksti (jopa osittain), jotta käyttäjät tietävät järjestelmän toimivan.
- Käytä haptista palautetta []UIImpactRebackGenerator) komentotunnistus.
2. Käsitä virheet armollisesti
Yleisiä virheitä ovat mikrofonin käyttö, tunnistuspalvelua ei ole saatavilla tai äänen laatu on huono. Hälytä käyttäjää aktiivisilla viesteillä (esim. "Puhu kovemmin" tai "Tarkista internet-yhteys").
3. Optimoi eri aksentteja ja ympäristöjä
Testi monilla eri kaiuttimilla. Käytä SFSpeechRecognizer[]:n ] ominaisuutta, jolla voidaan suorittaa tunnistus taustalangalla. Toteuta [] äänitoiminnan havaitseminen[] (VAD) heuristicstics, jotta voidaan välttää tallentamasta kuollutta ilmaa.
4. Yksityisyys ja avoimuus
Selitä selvästi, miksi tarvitset mikrofonin ja puheen käyttöluvan. Älä koskaan tallenna tai käsittele puhetta ilman käyttäjän aikomusta . Järjestelmäsuunnittelussa pitäisi vaatia nimenomaista napautusta äänikomennot aloittamiseksi. Lisätietoja Applen tietosuojaohjeista on Requesting Authorization[].
5. Toteuta kaatuminen
Kaikki käyttäjät eivät voi tai haluavat käyttää ääntä. Tarjoa aina vaihtoehtoinen kosketus tai näppäimistön syöte. Esteettömyys, varmista äänikomentoja voidaan käyttää Switch Control tai VoiceOver.
Reaalimaailman käyttötapaukset ja inspiraatio
- Navigaatiosovellukset: [ "Vie minut kotiin" tai "Näytä lähistöllä huoltoasemat" käyttäen karttaa SDK.
- Tuotanto ja muistiinpano-Oletko valmis? "Luo uusi note" tai "Lisää tehtävä" integroituna Core Data tai CloudKit.
- Älykotien ohjaimet: [ " Sammuta olohuoneen valot" HomeKit.
- Fitness & Treeni: "Aloita 5 minuutin viilennys" tai "Log 10 punnerrukset."
- Sähköinen oppiminen: [ Ääni vastaa flashcards tai tietovisat.
Lisätietoja on saatavilla Applen SFSpeechRecognizer API-viite ja SpeakToMe-näytekoodista .
Päätelmä: Tehostaa käyttäjiä ääni
IOS Puhetunnistus API on kypsä, hyvin dokumentoitu työkalu, joka asettaa äänenkomentojen voiman sovellukseen. Alkaen laivasta päivittäiseen käyttöön, hyvin toteutetut ääniominaisuudet vähentävät kitkaa, parantavat saavutettavuutta ja ilahduttaa käyttäjiä. Seuraamalla asennusvaiheita, parhaita käytäntöjä ja kehittyneitä tekniikoita, jotka on kuvattu tässä artikkelissa, voit luoda sovelluksia, jotka kuuntelevat ja vastaavat .
Aloita pieni: integroida yhden komennon (Auta ... tai ...Mene takaisin.) seuraavaan päivitykseen ja sitten laajentaa käyttäjän palautteen perusteella. Koska laitteen tunnistaminen paranee ja uusia kieliä lisätään, ääniohjattujen iOS-kokemuksien potentiaali kasvaa vain. Sovelluksen vuorovaikutuksen tulevaisuus on puhuttu. Varmista, että sovelluksellasi on ääni.