本文介紹如何使用微信公衆平台進階接口中的語音識别功能,做出一個語音版的天氣預報查詢功能。根據這個模型,你可以擴充到所有的語音查詢。
一、接收語音識别結果
開通語音識别功能以後,使用者每次發送語音給公衆号時,微信會在推送的語音消息XML資料包中,增加一個Recongnition字段。該字段為語音識别出的文本内容。
使用者發送語音:
語音XML資料包如下
參數說明:
參數
描述
ToUserName
接收方微信号
FromUserName
發送方帳号(一個OpenID)
CreateTime
消息建立時間 (整型)
MsgType
語音為voice
MediaID
語音消息媒體id,可以調用多媒體檔案下載下傳接口拉取該媒體
Format
語音格式:amr
Recognition
語音識别結果,UTF8編碼
MsgID
消息id,64位整型
二、中文分詞
中文分詞 (Chinese Word Segmentation) 指的是将一個漢字序列切分成一個一個單獨的詞。分詞就是将連續的字序列按照一定的規範重新組合成詞序列的過程。我們知道,在英文的行文中,單詞之間是以空格作為自然分界符的,而中文隻是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符,雖然英文也同樣存在短語的劃分問題,不過在詞這一層上,中文比之英文要複雜的多、困難的多。通過分詞可以提取其中關鍵詞語進行搜尋。
打個比方:“深圳天氣怎麼樣”,這句話中可分詞為“深圳”,“天氣”,“怎麼樣”三個詞。其中“天氣”為名詞,“深圳”為地點名詞。
以下是SAE上的分詞代碼示例:
結果如下:
得到,名詞天氣,和地名名詞深圳,副詞怎麼樣可以忽略。
三、程式實作
判斷是否開啟語音識别
效果如下:
調用SAE分詞
傳回結果如下:
這樣就獲知曉了使用者要查詢的功能是天氣,城市名稱是長沙。
功能查詢
根據獲得的功能類别及關鍵字,我們可以查詢相應的城市天氣預報。
四、效果示範