文章正文
語音識別的功能的應用場景
將語音實時識別為文字,適用于語音聊天、語音輸入、語音搜索、語音下單、語音指令、語音問答等多種場景。
我們還是利用百度API,語音識別功能,給大家講解如何使用。API主要就是要學會看文檔,小編一直都強調,api的思路都是差不多。
編碼之前,首先要登錄百度云,注冊應用,拿到相應的key與SECRET_KEY,下載SDK。
SDK安裝步驟
語音識別 PHP SDK目錄結構
├──?AipSpeech.php?????????????//語音識別
└──?lib
????├──?AipHttpClient.php????????//內部http請求類
????├──?AipBCEUtil.php???????????//內部工具類
????└──?AipBase??????????????????//Aip基類
使用PHP SDK開發驟如下:
1.在官方網站下載php SDK壓縮包。
2.將下載的aip-php-sdk-version.zip
解壓后,復制AipSpeech.php以及lib/*到工程文件夾中。
3.引入AipSpeech.php
新建AipSpeech
AipSpeech是語音識別的PHP SDK客戶端,為使用語音識別的開發人員提供了一系列的交互方法。
參考如下代碼新建一個AipSpeech:
require_once?'AipSpeech.php';
//?你的?APPID?AK?SK
const?APP_ID?=?'你的?App?ID';
const?API_KEY?=?'你的?Api?Key';
const?SECRET_KEY?=?'你的?Secret?Key';
$client?=?new?AipSpeech(APP_ID,?API_KEY,?SECRET_KEY);
在上面代碼中,常量APP_ID
在百度智能云控制臺中創建,常量API_KEY
與SECRET_KEY
是在創建完畢應用后,系統分配給用戶的,均為字符串,用于標識用戶,為訪問做簽名驗證,可在AI服務控制臺中的應用列表中查看。
準備一段語音,要對段保存的這段語音的語音文件進行識別:代碼如下
//?識別本地文件
$client->asr(file_get_contents('audio.pcm'),?'pcm',?16000,?array(
????'dev_pid'?=>?1536,
));
返回的json數據
//?成功返回
{
????"err_no":?0,
????"err_msg":?"success.",
????"corpus_no":?"15984125203285346378",
????"sn":?"481D633F-73BA-726F-49EF-8659ACCC2F3D",
????"result":?["北京天氣"]
}
//?失敗返回
{
????"err_no":?2000,
????"err_msg":?"data?empty.",
????"sn":?null
}
這里有個簡單的例子,可以參考一下。
<?php??
require_once?'AipSpeech.php';
//?你的?APPID?AK?SK
const?APP_ID?=?'10533442';
const?API_KEY?=?'eb8vDMwPyec1DGxecYQRzEjz';
const?SECRET_KEY?=?'56ac673eafc3a65f49dd37d8dd8f27e8';
$client?=?new?AipSpeech(APP_ID,?API_KEY,?SECRET_KEY);
//?識別本地文件
$li?=?$client->asr(file_get_contents('./test.wav'),?'wav',?16000,?array(
????'lan'?=>?'zh',
));
interface?Msg{
????function?getMsg();
}
class?Result?implements?Msg{
????protected?$res?=?null;
????protected?function?__construct($re){
????????$this->res?=?$re;
????}
????public??function?getMsg(){}
}
class?Success?extends?Result{
????public?function?__construct($re){
????????parent::__construct($re);
????}
????public?function?getMsg(){
????????if?($this->res['err_msg']?==?'success.')?{
????????????//?var_dump($this->res);exit;
????????????echo??$this->res['result'][0];
????????}
????}
}
$tmp?=?new?Success($li);
$tmp->getMsg();
更多的知識教程,請大家多多看文檔
http://ai.baidu.com/docs/#/ASR-Online-PHP-SDK/top