成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

了解語音交互:從“若琪,今天杭州的天氣”發(fā)生了什么?

kel / 3625人閱讀

摘要:接下來,由會通過上傳音頻數(shù)據(jù),云端通過一系列算法最終將語音數(shù)據(jù)轉(zhuǎn)換為兩部分結(jié)果純文本,表示這段音頻數(shù)據(jù)中用戶所說的話,比如若琪今天的天氣。

本文是面向 Web 開發(fā)者所寫,介紹關(guān)于“語音交互”的一篇科普性質(zhì)的文章,希望借助這篇文章,讓開發(fā)者了解到什么是語音交互,以及在 YodaOS 中的技術(shù)實現(xiàn)。不了解YodaOS是什么?點擊這里回顧。

作為 Web 開發(fā)者,相信在面試時常會被問到“瀏覽器輸入 URL 后發(fā)生了什么”這樣的經(jīng)典問題,這可以很好地幫助工程師理解整個 Web 的技術(shù)棧。因此,本文將從“若琪,今天杭州的天氣”這一句話開始,盡量讓大家了解到語音交互的技術(shù)全貌。

以下章節(jié)涉及到的知識點包括(可以先自行查閱之):
語音激活(VT)
語音識別(ASR)
語義理解(NLP)
語音合成(TTS)
技能(Skill)——語音交互時代的應(yīng)用
如下是一次語音交互的流程:

從上圖可以看出:

首先,用戶(人類)通過智能設(shè)備上的麥克風(fēng)獲取音頻信號數(shù)據(jù)(PCM),通過“語音激活”模塊,它能正確地將帶有激活詞的數(shù)據(jù)轉(zhuǎn)換成云端可以識別的音頻數(shù)據(jù)(如 opus)。

接下來,由 VUI Client 會通過 WebSocket 上傳音頻數(shù)據(jù),云端通過一系列算法最終將語音數(shù)據(jù)轉(zhuǎn)換為兩部分結(jié)果:

ASR:純文本,表示這段音頻數(shù)據(jù)中用戶所說的話,比如“若琪今天的天氣”。
NLP:JSON 格式的數(shù)據(jù),NLP 也叫語義理解,通常會把每句話解析成兩個重要的信息:

一部分叫意圖(Intent),表示用戶說這句話的目的,比如“今天的天氣”,那我們可以獲得這句話的意圖是 query_weather,表示在查詢天氣;

另一部分是具體信息(Slots),一般在 JSON 中是一個對象,比如“今天的天氣”會在 slots.date 中為 today,表示這句話詢問的是“今天”的天氣,類似也可以有像 slots.location 用于表示詢問的是“哪兒”的天氣;

ASR 和 NLP 會由 VUI Runtime 下發(fā)到具體的技能(Skill),每個技能通過解析 Intent 和 Slots 來做對應(yīng)的處理,最終生成為一段文本,由 TTS 回復(fù)給用戶。

以上其實就是一次語音交互的基本流程,接下來會按照不同的模塊分別介紹。

語音激活流程

在說明這個流程之前,先來看看為什么需要它。當(dāng)用戶與一個智能設(shè)備交互時,由于媒介是語音(空氣),所以不像傳統(tǒng)的 GUI(PC、平板、手機)設(shè)備,它們擁有一個獨自的媒介平臺(如屏幕、按鍵等),所以交互目標(biāo)是明確的。而生活中空氣是共享的,這意味著在交互之前,首先要判斷用戶是不是想要跟你說話,比如你說“幫我開下燈”,可能是讓你老婆去開燈,而不是若琪。

無論 Alexa、若琪、小愛同學(xué),還是天貓精靈,首先需要給設(shè)備取一個悅耳的名字,這樣設(shè)備才能知道你是否在跟他/她說話,這——便是語音激活模塊要做的事兒。

然而要做好這么一件簡單的事兒,可不容易。

首先我們先了解下什么是 PCM,維基百科上中文名稱叫:脈沖編碼調(diào)制。很難理解對吧?如果要把整個概念說清楚,可能需要涉及到很多聲學(xué)和信號學(xué)的知識,這里就不拓展了。簡單來說,你可以把它理解為,就是你說了一段話(語音),然后被麥克風(fēng)記錄成了二進制數(shù)據(jù),這個原始數(shù)據(jù)就叫 PCM。

了解了 PCM 后,再來了解2個概念:

AEC,自音源消除。在智能音響上,通常都有麥克風(fēng)和揚聲器,麥克風(fēng)在收音時,會把當(dāng)前設(shè)備通過揚聲器播放的聲音也記錄下來,因此 AEC 所做的就是從 PCM 數(shù)據(jù)中將設(shè)備本身播放的音頻消除,減少干擾。
VT,激活算法模塊。將 AEC 后的音頻數(shù)據(jù)輸入到 VT 算法/模型中,他會給出激活分數(shù),最后通過分數(shù)判斷是否激活。

在激活模塊內(nèi)部,從麥克風(fēng)獲取到語音數(shù)據(jù)后,會經(jīng)過 AEC 處理,將揚聲器的聲音消除,接著會通過其他降噪算法去除一些額外的噪音,然后將最終處理過后的音頻數(shù)據(jù)輸入 VT,若模型判斷是激活的話,就會把后面的(音頻)數(shù)據(jù)通過 VUI Client 上傳到云端 ASR,直到云端判斷用戶說完了并結(jié)束本次交互。

NLP 下發(fā)流程

前面講到從云端會下發(fā)兩種類型的數(shù)據(jù):ASR 與 NLP,然而對于云端是如何生成這些數(shù)據(jù)并沒有提及,這里我們先稍微講解一些 NLP 的部分。

在 ASR 將音頻數(shù)據(jù)轉(zhuǎn)成文本后,會輸入給 NLP 服務(wù)(云端),那么云端是怎么把一段簡單的文本解析成本地想要的 JSON 格式呢?NLP 引入了領(lǐng)域(Domain)概念,比如“若琪,今天的天氣”會被劃分為天氣領(lǐng)域,“我要開燈”是 IoT 領(lǐng)域,“我要聽歌”則是音樂領(lǐng)域,類似的領(lǐng)域還有故事、時間、百科、導(dǎo)航和聊天等。

可以簡單理解為領(lǐng)域是一個大的范圍,表示用戶想要跟設(shè)備交流的主題,而意圖則是在這個主題下一個個需要設(shè)備幫助完成的任務(wù)。比如“今天的天氣”,主題是天氣,而意圖則是問詢。

有了“領(lǐng)域”的概念后,當(dāng)我們獲取到一串文本后,會經(jīng)過預(yù)先訓(xùn)練好的模型以及預(yù)先定義好的規(guī)則和說法,就能判斷出這段文本命中了什么領(lǐng)域和意圖,然后再從文本中抽出相關(guān)的信息。最后將所有信息組合成一個完整的 JSON 下發(fā)至設(shè)備端。設(shè)備通過每條 NLP 命中領(lǐng)域或技能的不同,下發(fā)給對應(yīng)的技能進行處理。

CloudApp

語音交互的輸出相對比較單一,基本上是:TTS、音效以及多媒體音樂,因此這里有一個 VUI Rendering 的概念。

在 GUI 時代,渲染的輸出是屏幕的可交互的控件、聲音以及視頻。而 VUI 就是 TTS、音效和多媒體音樂,相對于 GUI 來說,已經(jīng)相當(dāng)簡單了。因此與 Web 一樣,VUI 渲染也分為服務(wù)端渲染和本地渲染:

本地渲染:本地應(yīng)用直接處理 NLP 數(shù)據(jù),在本地執(zhí)行業(yè)務(wù)邏輯,并最終播放 TTS、音效以及多媒體音樂。
服務(wù)端渲染:NLP 服務(wù)會將數(shù)據(jù)先發(fā)送到預(yù)先配置好的一臺服務(wù)器,在服務(wù)器上執(zhí)行業(yè)務(wù)邏輯,并分別將 TTS、音效和多媒體音樂轉(zhuǎn)換為一條條指令(Directive),返回給 NLP 服務(wù),最后設(shè)備端收到后,只需按照指令執(zhí)行對應(yīng)的操作即可。

一般把在服務(wù)端渲染的應(yīng)用稱作 CloudApp,其優(yōu)點當(dāng)然是實時更新,開發(fā)快捷簡便,與 Web 的運行機制類似,缺點則是能力受限,拓展依賴于協(xié)議本身的能力(類似于瀏覽器沙箱)。

技能生命周期

無論是本地還是云端,技能跟我們所熟知的頁面一樣具有其生命周期,VUI Runtime 會對其進行管理。在 YodaOS 中,每個技能可以由兩種方式啟動:

用戶通過語音 NLP 下發(fā)命令并啟動。
用戶通過設(shè)備按鍵觸發(fā)啟動。

每個技能在啟動后,就會處于技能棧棧頂,表示當(dāng)前技能正在運行,此時可以控制設(shè)備的輸出內(nèi)容(TTS、音效與多媒體)。與此同時,若之前有技能已經(jīng)在運行,則會將之前的技能銷毀或暫停,這取決于他是即時(CUT)還是場景(SCENE)技能:

CUT:用于單次會話的技能,因此有新的技能命中時,會毫不猶豫地結(jié)束(銷毀)該技能。
SCENE:用于長時間需要交互的技能,如音樂播放、游戲或有聲故事。若新請求的技能是 CUT,會先暫停上一個技能,待 CUT 結(jié)束后恢復(fù);若新請求的技能是 SCENE,則會替換掉之前的技能。

總結(jié)

其實一次語音交互遠不止上文所提到的這些流程,這里也僅僅希望拋磚引玉,以及給對于語音交互感興趣的工程師分享出我們在做 YodaOS 的一些心得,最后歡迎大家關(guān)注我們的 VUI Runtime:https://github.com/yodaos-pro...。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101931.html

相關(guān)文章

  • 音頻組件開發(fā)實踐

    摘要:相關(guān)操作音頻的打斷音頻的打斷包括兩種情況組件重新上傳新的語音第一種情況,解綁相關(guān)事件,釋放內(nèi)存。當(dāng)瀏覽器預(yù)計能夠在不停下來進行緩沖的情況下持續(xù)播放指定的音頻視頻時,會發(fā)生事件。 我的blog原文鏈接 最近公司迭代的項目中,新增了音頻播放功能,填了不少音頻的坑,總結(jié)一下: 需求: 交互需求: 上傳:點擊按鈕上傳語音,返回文件id(上傳文件的范疇,本文不會闡述) 播放:點擊播放按鈕,異...

    qpwoeiru96 評論0 收藏0
  • 資深前端面試官建議,助你走進阿里

    摘要:適當(dāng)引導(dǎo)面試官。如果有機會來實習(xí),如何最有效的快速成長淘寶技術(shù)部前端內(nèi)部有針對新同學(xué)的前端夜校,有專門的老師授課。 阿里巴巴2019前端實習(xí)生招聘還剩最后兩周,面向2019年11月1日至2020年10月31日之間畢業(yè)的同學(xué),在這里分享下阿里前端面試考核的關(guān)鍵點: Q:在面試過程中,前端面試官如何考核面試者?A:會看同學(xué)為什么選擇前端行業(yè)?是因為算法太難?Java、C++太難?還是因為熱...

    Pluser 評論0 收藏0
  • 工作5年后我才發(fā)現(xiàn):90%技術(shù)問題,可以解決

    摘要:指令識別喚醒后,可以下發(fā)指令比如播放音樂,查詢天氣,撥打電話定鬧鐘等,檢查指令可以正常被執(zhí)行。所以,語音識別測試也可以進行一些自動化測試。 01.前言 現(xiàn)在市面上...

    wupengyu 評論0 收藏0

發(fā)表評論

0條評論

kel

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<