魚漁微信的發展0基礎課程【十二】- 接收語音識別結果

首先,下載並安裝教程和支持魚漁業開發套件微信php

收到正式文件的聲音識別結果指接收語音識別結果,配合本次課程。開發包中專門有一個教學文件tool/send_and_response.php。注意下面代碼:html


getRevContent和getRevVoice函數都出自開發包中的common/wechat-php-sdk/wechat.class.php。api

getRevVoice返回包括MediaId和Format的數組,魚漁微信開發0基礎教程【八】- 接收語音消息已經介紹過了。數組

getRevContent代碼例如如下:緩存


注意當中的邏輯是,假設有Recognition項,就返回語音識別結果。微信

但是這裏面有些複雜的狀況,詳見如下的分析。結論是當MsgType爲voice時,可用php的strlen函數推斷Recognition的值是否爲空串,假設不是空串,說明語音識別功能已經開啓,有識別結果,但識別結果的正確機率有多大,微信沒有給出不論什麼參數。不管Recognition的值是否爲空。微信都給出了MediaId和Format,依據MediaId在3天內可以從微信server下載原聲,以正視聽。微信開發

在run.php的最前面加上如下兩行。就可以測試了。微信公衆平臺


require_once dirname(__FILE__) . '/tool/send_and_response.php';
exit;ide


魚漁在這裏索性詳解下這個Recognition。函數

1、測試號默認沒有開啓語音識別功能,需要到賬號管理後臺人工開啓,下圖是已經開啓的狀態:

注意由於client緩存,開發人員開啓或者關閉語音識別功能,對新關注者立馬生效,對已關注用戶需要24小時生效。開發人員可以又一次關注此賬號進行測試。

2、微信輸入方式中有一種叫作「語音輸入",相同用到語音到文字的轉換技術,但用戶最後發給微信server的不是語音消息,而是文字消息。MsgType爲text。和此次課講的接收語音識別結果沒有不論什麼關係,例如如下圖所看到的:

3、即使語音識別功能默認是關閉的,僅僅要MsgType爲voice,微信server發來的xml中就會包括一個Recognition,值爲空,詳見魚漁微信開發0基礎教程【八】- 接收語音消息中的日誌記錄,那次咱們沒有開啓語音識別功能。如下幾點是開啓後的狀況。

4、在微信對講機模式下。假設按住說話後,沒有語音輸入,也就是發送一個「無聲」的語音消息給微信,微信會給出一個mediaId,Format爲speex,Recognition爲空,如下是交互界面和日誌:


5、在微信對講機模式下,假設按住說話後,有語音輸入。並且識別正確,微信會給出一個mediaId。Format爲amr,Recognition非空,如下是交互界面和日誌:


6、在微信對講機模式下,假設按住說話後。有語音輸入,但識別錯誤。微信會給出一個mediaId。Format爲amr,Recognition非空。如下是交互界面和日誌:



假設能夠針對語音識別結果的正確率,給出個信心指數。比方80%,或許會對實際應用有所幫助。

近期微信推出智能開放平臺,包含語音和圖像的識別,魚漁對這些智能領域密切關注,並有一些資源。有不論什麼idea都歡迎聯繫討論。

-----------------------------------------------------------------------------------------------------------------------------------------
歡迎轉載。但請註明來自魚漁解讀微信公衆平臺開發(http://blog.csdn.net/yidongapi)。謝謝!

歡迎關注公衆賬號:weixintizi。個人我的站點:微通道梯

相關文章
相關標籤/搜索