通常情況,一款只能語音類產(chǎn)品在正式上市之前,在技術(shù)層面上需要多方配合,通常每一塊領(lǐng)域都有專門擅長的團隊提供技術(shù),這個在之前做智能音箱產(chǎn)品介紹的時候有單獨提過。
接下來關(guān)于智能音箱常用架構(gòu)做一些參考說明,首先介紹如下常用詞:
ASR:Automatic Speech Recognition
NLP:Natural language processing
TTS:Text-to-speech
STT:Speech to text
分別為語音識別,自然語言處理,文字轉(zhuǎn)化為對話,以及對話轉(zhuǎn)換為文字。
那么在智能音箱的實際架構(gòu)上,首先,用戶與智能音箱之間的交互,通過ASR完成,也就是音箱上的麥克風通過數(shù)據(jù)處理判斷用戶在說話,并通過喚醒詞,或功能喚醒詞等確認用戶是在向音箱發(fā)送指令。常用語音助手指令例如Alexa,Cortana,Siri等等,都是專門經(jīng)過喚醒詞訓(xùn)練的。語音喚醒在學(xué)術(shù)上被稱為keyword spotting(簡稱KWS),它指的是在連續(xù)語流中實時檢測出說話人特定片段。語音喚醒系統(tǒng)的評測標準通常包括誤識率和拒認率兩個部分。 誤識率指用戶未發(fā)出命令,但系統(tǒng)卻錯誤的被喚醒的情況。拒認率指用戶發(fā)出了喚醒命令,但系統(tǒng)卻沒有相應(yīng)的情況。誤識率和拒認率越低,證明系統(tǒng)越穩(wěn)定。
這里額外提一下,喚醒詞(wake up words)的存在是為了方便用戶更好的向智能音箱傳輸指令,那么為了避免噪聲,數(shù)據(jù)處理不完全,有口音和發(fā)音問題等因素,我們需要針對這個喚醒詞做系統(tǒng)訓(xùn)練,以便能夠更加方便喚醒,并避免誤喚醒的情況。通常,市面上喚醒詞訓(xùn)練公司針對一個喚醒詞的模型訓(xùn)練量大概5000~8000,而通常訓(xùn)練數(shù)據(jù)也有精細數(shù)據(jù),和粗略數(shù)據(jù)(后者訓(xùn)練效果可能沒有前者號),舉例如下一種非?;镜膯拘言~模型訓(xùn)練方案:
既,用產(chǎn)品本身的麥克風模擬實際的收音現(xiàn)場,用戶分別在不同的距離面向產(chǎn)品,以三擋語速念出喚醒詞。當然,粗略數(shù)據(jù)也可以找很多人,用手機麥克風簡單錄制數(shù)據(jù),因個人的發(fā)音,語速,音調(diào)均會有所不同,因此也能起到訓(xùn)練意義。
硬件本身被喚醒之后,接下來麥克風將開始“傾聽“用戶說話,目前有很多方案是將對話內(nèi)容生成wav錄音文件直接上傳至云端,開始進行STT,也就是將一段音頻轉(zhuǎn)換為一段文字,數(shù)據(jù)信息從wav文件變成了text文件形式,但是此時我們還并不知道用戶意圖,這一段文字目前僅僅是text形式文件而已,接下來text會進入下一個階段,也就是NLP處理(自然語義理解),自然語言處理(英語:Natural Language Processing,縮寫作 NLP)是人工智能和語言學(xué)領(lǐng)域的分支學(xué)科。此領(lǐng)域探討如何處理及運用自然語言;自然語言處理包括多方面和步驟,基本有認知、理解、生成等部分。自然語言處理的主要范疇包括中文自動分詞、詞性標注、句法分析、自然語言生成、文本分類、信息檢索、信息抽取、文字校對、問答系統(tǒng)、機器翻譯、文字蘊涵、命名實體識別等。
目前比較專精在中文NLP供應(yīng)商有三角獸、驀然認知、圖靈、靈犀等;(其他很多同樣積累NLP技術(shù)的公司,但是可能提供了可提供麥克風陣列、語音喚醒、語音識別、語義理解、語音合成等一系列語音技術(shù),甚至平臺技術(shù),故不做此列)
這里既接入另外一個概念, Named Entity Recognition (NER) 命名實體識別,簡單了解既講一段文字進行分詞,用于進一步的文本意圖理解,概念介紹如下:
那么,很多接觸過NLP的小伙伴們也大概了解,很多公司在NLP領(lǐng)域做專門研究,國內(nèi)目前也很有多機構(gòu)正在做相關(guān)研究,具體可以參考此篇文章:NLP(中文)團隊研究
目前專精于NLP的團隊的技術(shù)背景,通常需要有搜索引擎以及百科類知識圖譜的框架。難點也在于,很多名詞指向的內(nèi)容分類有可能是多方面的,既可能是音樂類,也可能是百科,閑聊,有聲讀物類,故而在區(qū)分意圖方面需要經(jīng)常調(diào)整架構(gòu),這也是那句“人工智能靠人工“的調(diào)侃由來吧。
總之,理解了用戶的意圖,并給出準確的回答這一套邏輯,最終,生成了給到用戶的完整回答。比如,現(xiàn)在時間是XX;馬上為您播放周杰倫的《晴天》live版等等;并在云端將文字轉(zhuǎn)換成音頻,也就是我們常說的TTS(語音合成),它是將人類語音用人工的方式所產(chǎn)生。文字轉(zhuǎn)語音(text-to-speech,TTS)系統(tǒng)將一般語言的文字轉(zhuǎn)換為語音。
目前國內(nèi)的主流語音合成方案有科大訊飛、搜狗、云知聲、思必馳等。
而語音合成目前市面上一般使用參數(shù)合成,或者拼接合成,前者的音庫都是在10小時左右,基本用不到20小時,對于合成人聲效果的自然度,更依賴算法,而拼接則對于數(shù)據(jù)的需求量很高,對合成人聲效果的自然度,更依賴數(shù)據(jù)量。很多聽起來很自然的音庫時長在100~200小時左右。
以及,TTS模型通常也會分為中文,英文,或者中英混輸?shù)摹W鲇?xùn)練的文本,有很多文字比較拗口,故而對錄音聲優(yōu)的功力有要求,中英混輸?shù)哪P蛿?shù)據(jù)就更難了。如果是普通的中文TTS模型,以剛才的例子“馬上為您播放周杰倫的《晴天》live版本”,這種就可以在錄音時加入一些簡單的字母,單詞,短語等等。
合成的wav文件回傳到終端音箱,并播放出來,如此,完成了一環(huán)基礎(chǔ)的用戶與智能硬件之間的對話。
P.S.這里單獨介紹一個常與自然語言處理弄混的概念:Neuro-linguistic programming (NLP)
通常用于我們說的機器學(xué)習,或者神經(jīng)網(wǎng)絡(luò)處理,通常是指我們通過Sigmoid函數(shù)嘗試模擬人腦神經(jīng)之間傳遞并處理信息的方式。關(guān)于Perception以及Sigmoid函數(shù)的概念區(qū)別,后面會單獨做一個相對生動的舉例來做說明,總體的信息處理模式非常類似于我們電路常用與或非門,這一部分(模擬計算機處理),在《三體》里面有更加生動的描述,非常有趣。