用戶喊一聲“Hey,Siri”就可以叫出Siri,Siri識(shí)別器使用的就是深度卷積網(wǎng)絡(luò)账劲,這個(gè)網(wǎng)絡(luò)負(fù)責(zé)把你聲音特征轉(zhuǎn)換成發(fā)音相似度最高的詞漏健,所以這個(gè)網(wǎng)絡(luò)會(huì)計(jì)算一個(gè)相似度,當(dāng)你喊出“Hey,Siri”的時(shí)候秸应,如果這個(gè)相似度夠高虑凛,Siri就會(huì)被啟動(dòng)。
iPhone上的Siri流程
Siri流程如下圖所示:
整個(gè)系統(tǒng)有幾部分組成软啼。Siri最重要的就是云識(shí)別桑谍,數(shù)據(jù)包會(huì)被上傳到服務(wù)器中,服務(wù)器進(jìn)行自動(dòng)解析祸挪,包括語(yǔ)音識(shí)別锣披、自然語(yǔ)言解析和不同的信息服務(wù),然后將模型數(shù)據(jù)傳給識(shí)別器中贿条,識(shí)別器再將結(jié)果傳給Siri客戶端雹仿,由客戶端完成工作。
"Hey,Siri"語(yǔ)音識(shí)別器
iPhone或者Apple Watch上的麥克風(fēng)將你的語(yǔ)音轉(zhuǎn)換成音波整以,頻率為每秒16000胧辽,一種識(shí)別機(jī)制將輸入的音波樣本轉(zhuǎn)換成序列化的架構(gòu),每一個(gè)代表0.01秒的聲音圖譜公黑,每次約20個(gè)(0.2s)樣本被送到聲音模型(一個(gè)可以將聲音樣本轉(zhuǎn)換成聲音序列集合的深度卷積網(wǎng)絡(luò))中邑商。
說(shuō)到這個(gè)神經(jīng)網(wǎng)絡(luò),主要是由矩陣乘法和非線性邏輯組成的帆调。每一個(gè)隱藏層都是神經(jīng)網(wǎng)絡(luò)在訓(xùn)練將輸入的語(yǔ)音轉(zhuǎn)換成聲音模型時(shí)所發(fā)掘的中間狀態(tài)奠骄,最后由SoftMax函數(shù)來(lái)結(jié)尾。整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
當(dāng)Siri識(shí)別器運(yùn)行時(shí)系統(tǒng)會(huì)選擇每一個(gè)隱藏層的單位個(gè)數(shù)來(lái)適應(yīng)計(jì)算資源的大小番刊,有32個(gè)含鳞,或者128個(gè),或者192個(gè)芹务,個(gè)數(shù)的多少由內(nèi)存和性能約束蝉绷。iPhone上有兩個(gè)網(wǎng)絡(luò),一個(gè)用于初始化并識(shí)別枣抱,另外一個(gè)用于檢查熔吗,第二個(gè)網(wǎng)絡(luò)使用的單位要遠(yuǎn)遠(yuǎn)多于第一個(gè)網(wǎng)絡(luò)。
神經(jīng)網(wǎng)絡(luò)在訓(xùn)練并進(jìn)行反饋時(shí)用的是以下公式:
其中Fi,t?為模型第i個(gè)的相似度最終得分佳晶,qi,t?為模型原來(lái)輸出的值桅狠,si?為停留在i的損失,mi?為從i移走的損失。(有點(diǎn)像反向傳播神經(jīng)網(wǎng)絡(luò)的味道爸械)公式可以用下圖形象的表示:
每一個(gè)積累的相似度得分都是由前一個(gè)序列提供并帶上帶標(biāo)簽的咨堤,并經(jīng)過(guò)最大值操作。最終的相似度得分是由N個(gè)這樣的序列合起來(lái)計(jì)算出來(lái)的漩符。這個(gè)相似度得分就是文章開(kāi)頭所說(shuō)的用于啟動(dòng)Siri客戶端的那個(gè)得分一喘。
Siri識(shí)別器的反應(yīng)速度和性能
Siri識(shí)別器的首要目標(biāo)是盡可能快,而不是盡可能準(zhǔn)確嗜暴,所以需要盡可能減少內(nèi)存占用和處理器占用凸克。為了避免主處理器一天啥事不干,就用來(lái)監(jiān)聽(tīng)“Hey,Siri”闷沥,蘋(píng)果使用了AOP(Always On Processor萎战,一個(gè)低功耗的處理器)處理器來(lái)運(yùn)行識(shí)別器和較小的神經(jīng)網(wǎng)絡(luò),當(dāng)相似度得分達(dá)到了啟動(dòng)Siri的門(mén)檻以后狐赡,AOP處理器會(huì)喚醒主處理器來(lái)運(yùn)行較大的那個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行解析(也就是咱們平常用Siri定鬧鐘撞鹉,鍛煉等事件)。一般AOP處理器的神經(jīng)網(wǎng)絡(luò)是5層*32個(gè)隱藏單位颖侄,主處理器是5層*192個(gè)單位。
在Apple Watch上遇到了更大的問(wèn)題享郊,那就是電池要比手機(jī)小得多览祖,手表上用的是一個(gè)網(wǎng)絡(luò)的Siri識(shí)別器,這個(gè)識(shí)別器的神經(jīng)網(wǎng)絡(luò)大小介于iPhone 的那兩個(gè)(一大一小)之間炊琉,這個(gè)Siri識(shí)別器只在屏幕處于喚醒狀態(tài)下才進(jìn)行工作展蒂。
Siri識(shí)別器個(gè)人化
為了避免別人說(shuō)“Hey,Siri”然后打開(kāi)你的Siri這種尷尬場(chǎng)景出現(xiàn),每次在開(kāi)機(jī)時(shí)候會(huì)讓你說(shuō)五次“Hey,Siri”苔咪。目的何在锰悼?就是為了獲得你的聲音特征來(lái)訓(xùn)練Siri識(shí)別器的神經(jīng)網(wǎng)絡(luò),儲(chǔ)存為樣本团赏。這樣產(chǎn)生了用于將聲音圖譜轉(zhuǎn)化成固定長(zhǎng)度的向量的時(shí)間信息箕般,這個(gè)信息是通過(guò)平均每一次你說(shuō)“Hey,Siri”下的序列得到的。既然是固定舔清,也就是說(shuō)丝里,別人的聲音轉(zhuǎn)化過(guò)來(lái)肯定不是你轉(zhuǎn)化過(guò)來(lái)的那個(gè)長(zhǎng)度的向量,所以自然而然体谒,別人也就不能啟動(dòng)你的Siri客戶端杯聚,從而保證了個(gè)人化這個(gè)目標(biāo)。
Siri識(shí)別器訓(xùn)練成果
直接上圖吧