語音助手是這樣子的(一)


近年來,隨着人工智能技術的逐步落地,很多智能化的產品進入了人們的日常生活。2011年蘋果公司在iPhone4S手機上推出了一款里程碑式的智能產品“Siri”,用戶只需要通過對手機說一些指令,手機就可以自動完成很多操作。我們最常用的場景莫過於對着Siri說“幫我設置明天早上六點的鬧鍾”,而Siri會理解我們的指令,把手機上的鬧鍾設置好,並且回答我們“好的,已經把鬧鍾設置到了明天早上六點”。我們是否想過這樣一個智能產品是如何設計與開發出來的呢?本系列博客就將帶你揭秘智能語音助手背后的技術。

從場景開始

智能語音助手看似智能,其實是很傻瓜的,因為它只能應對設計好的有限場景,所以要讓它能夠完成用戶日常使用智能手機的常用操作就需要設計一個又一個的場景,我們來看一個比較簡單的場景:

用戶:設置鬧鍾

Siri:請問您需要設置幾點的鬧鍾?

用戶:明天早上六點的

Siri:好的,已經把鬧鍾設置到了明天早上六點

在這個場景下,Siri是如何聽懂用戶的指令的呢?又是如何識別出用戶的指令就是設置鬧鍾這樣一個意圖呢?就算它知道了設置鬧鍾,又是怎么就知道向用戶確定設置的時間的呢?用戶提出的具體時間Siri又是怎樣理解的呢?

背后的技術

語音助手背后的技術由三大塊組成:語音識別(Auto Speech Recognition)、語義理解(Semantic Understanding)、語音合成(Text To Speech)。語音識別將用戶所說的指令轉換成文本文字,而語義理解則是基於文本文字去理解用戶意圖,做出相關響應和操作,並且輸出反饋給用戶的答復文本,最后語音合成再將答復文本轉換成為語音輸出。
Core Technology
其中,語義識別和語音合成都是成熟的通用技術,只要語言確定了(普通話或英語)就能使用通用的模型識別成文字或合成語音。而語義理解卻需要定制,畢竟不同的應用場景需要進行的理解與交互操作是不同的。

語義理解是核心

目前,已經有百度、科大訊飛等公司開放了語音識別與合成的接口,所以我們可以把構建一個語音助手的核心聚焦在語義理解上,如上圖所示,語義理解又可以再拆解為幾個核心的子技術點:

  • 自然語言理解(Natrual Language Understanding): 理解用戶的意圖並提取有用的信息,比如:識別設置鬧鍾的需求,提取出鬧鍾需要設置在“明天早上六點”的關鍵信息
  • 對話管理(Dialogue Management): 管理和控制語音助手與用戶進行交互的邏輯,語音助手聽到一個指令后應該執行怎樣的動作或回復怎樣的響應
  • 自然語言生成(Natrual Language Generation): 針對用戶的指令,生成靈活自然的語音助手的回復

一步步實現

接下來,我們將一步一步地去實現一個簡單的語音助手(不包含語音部分),我們將在本系列博客的后續部分逐步展開每一步的設計與實現。在語音助手中NLG是非常固定的,通常都是預定義的表達模式,所以我們在實現過程中將弱化這部分的內容,只在最后一節介紹一些前沿的NLG技術。對話管理我們將使用開源的工具OpenDial來實現,而NLU我們將采用產業界普遍使用的模板匹配方法。所以,后續文章將組織為:

  1. 使用OpenDial實現對話設計:我們將介紹一款開源工具,並使用它作為對話管理的控制器
  2. 模板匹配方式的NLU:介紹一種常用的基於模板匹配的自然語言理解方法,通過對模板中的槽位進行填充實現意圖的識別與信息的提取
  3. 更高級的方法與技術:簡單介紹一些對話與聊天機器人中的前沿技術


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM