En svært interessant teknisk artikkel som ble publisert 1. oktober på Apples blogg for Machine Learning Journal har gått upåaktet hen, frem til i dag.
I den legger Apple detaljert ut hvordan den ubundne “Hey Siri” -funksjonen drar nytte av maskinvaren, programvaren og kraften til iCloud for å la kundene bruke assistenten håndfri.
Systemet kobler sammen skybasert talegjenkjenning, tolkning av naturlig språk og andre tjenester med maskinvareassistert prosessering på enheten. En iOS-enhet kjører “en veldig liten talegjenkjenner” hele tiden, som lytter til bare “Hey Siri” -frasen.
Mikrofonen på din iPhone eller Apple Watch registrerer 16 000 strømmer med øyeblikkelige bølgeformprøver per sekund. Her er grunnen til at det ikke beskatter iPhone-batteriet ditt mye eller monopoliserer andre systemressurser, som RAM og CPU:
For å unngå å kjøre hovedprosessoren hele dagen bare for å lytte etter triggerfrasen, har iPhones alltid-på-koprocessor (AOP, som er en hjelpemiddelprosessor med lav effekt innebygd i Apples M-serie bevegelseskoprocessor) tilgang til mikrofonsignalet på iPhone 6s og nyere.
Vi bruker en liten andel av AOPs begrensede prosessorkraft for å kjøre en detektor med en liten versjon av det nevrale nettverket. Når poengsummen overskrider en terskel, vekker bevegelseskoprocessoren hovedprosessoren, som analyserer signalet ved hjelp av et større nevralt nettverk.
På grunn av det mye mindre batteriet, kjører Apple Watch "Hey Siri" -detektoren bare når bevegelsesprosessoren oppdager en armhevingsbevegelse, noe som slår på skjermen - det er derfor du ikke kan bruke "Hey Siri" på Apple Watch når skjermen er slått av.
WatchOS tildeler "Hey Siri" omtrent fem prosent av det begrensede beregningsbudsjettet.
Så hvordan gjenkjenner de den faktiske "Hey Siri" hotfrasen i sanntid?
Når den er fanget av enheten din, blir bølgeformen brutt ned i en sekvens av rammer, som hver beskriver lydspekteret på omtrent 0,01 sek. Omlag tjue av disse bildene av gangen (0,2 sekund lyd) sendes til det dype nevrale nettverket.
Der blir lyden konvertert til en sannsynlighetsfordeling over et sett talelydklasser: de som brukes i "Hey Siri" -frasen, pluss stillhet og annen tale, for totalt rundt 20 lydklasser. Det beregner da en tillitsvurdering at uttrykket du uttalte var "Hey Siri".
Hvis poengsummen er høy nok, våkner Siri.
På iPhone bruker de ett nevralt nettverk for opprinnelig deteksjon (kjører på power-sipping motion chip) og et annet som en sekundær kontroller (kjører på hovedprosessoren). For å redusere falske triggere sammenligner Apple også alle nye ytringer fra "Hey Siri" med de fem setningene som er lagret på enheten under "Hey Siri" -registreringsprosessen..
"Denne prosessen reduserer ikke bare sannsynligheten for at 'Hey Siri' snakket av en annen person vil utløse iPhone-en din, men reduserer også frekvensen som andre, lignende lydfraser utløser Siri," forklarer forskningsartikelen.
Enheten laster også opp bølgeformen til Siri-serveren.
Skulle hovedtalsgjenkjenningen som kjører i skyen, høre den som noe annet enn “Hey Siri” (for eksempel “Hey Seriously”, “Hey Syria” eller noe slikt), sender serveren et avbestillingssignal til telefonen for å sette den tilbake til søvn.
"På noen systemer kjører vi en nedskåret versjon av hovedtalegjenkjenningen på enheten for å gi en ekstra sjekk tidligere," bemerker Apple. Jeg antar at de med "noen systemer" betyr enheter som er koblet til strøm, for eksempel Mac, Apple TV og kanskje til og med iPad.
Bildet over: det akustiske mønsteret når det beveger seg gjennom "Hey Siri" -detektoren, med et spektrogram av bølgeformen fra mikrofonen vist helt nede. Den endelige poengsummen, vist øverst, sammenlignes med en terskel for å bestemme om Siri skal aktiveres.
Selve terskelen er dynamisk verdi fordi Apple ønsker å la brukere aktivere Siri under vanskelige forhold - hvis den går glipp av en ekte “Hey Siri” -hendelse, går systemet inn i en mer følsom tilstand i noen sekunder. Gjenta setningen i løpet av den tiden vil utløse Siri.
Og slik har de trent den akustiske modellen til "Hey Siri" -detektoren:
Vel før det fantes en Hey Siri-funksjon, vil en liten andel brukere si 'Hey Siri' ved starten av en forespørsel, etter å ha startet med å trykke på knappen. Vi brukte slike 'Hey Siri' ytringer for den første opplæringssettet for den amerikanske engelske detektormodellen.
Vi inkluderte også generelle taleeksempler, som ble brukt til å trene hovedtalegjenneren. I begge tilfeller brukte vi automatisk transkripsjon på treningsfrasene. Siri-teammedlemmer sjekket en undergruppe av transkripsjonene for nøyaktighet.
Den akustiske modellen på amerikansk engelsk tar til og med hensyn til forskjellige første vokaler i "Siri", den ene som i "seriøs" og den andre som i "Syria."
Å trene en modell tar omtrent en dag, og det er vanligvis noen få modeller i trening til enhver tid. De trener vanligvis tre versjoner: en liten modell for første pass på bevegelsesbrikken, en større størrelse for andre pass og en mellomstor modell for Apple Watch.
Og den siste tidbit: systemet er opplært til å gjenkjenne lokaliserte "Hey Siri" -fraser.
For eksempel sier fransktalende brukere “Dis Siri.” I Korea sier de “Siri 야,” som høres ut som “Siri Ya”. Russisktalende brukere bruker setningen “привет Siri” (høres ut som “Privet Siri”) og på thailandske “หวัด ดี Siri” (høres ut som “Wadi Siri”).
"Vi gjorde innspillinger spesielt under forskjellige forhold, for eksempel på kjøkkenet (både nær og fjern), bil, soverom og restaurant, av morsmål på hvert språk," sier Apple.
De bruker til og med podcaster og Siri-innganger på mange språk for å representere både bakgrunnslyder (spesielt tale) og "slags uttrykk som en bruker kan si til en annen person."
"Neste gang du sier" Hey Siri ", kan du tenke på alt som skjer for å svare på den setningen, men vi håper at det bare fungerer", oppsummerer Apple det pent.
Den svært tekniske artikkelen gir en fascinerende innsikt i “Hey Siri” -teknologien vi tar for gitt, så husk å lese den eller lagre den for senere hvis du er interessert i å lære mer.