語音識(shí)別功能現(xiàn)在已經(jīng)很普遍,用php如何實(shí)現(xiàn)語音識(shí)別功能呢?這些功能都需要有一定的技巧,接下來,由IT培訓(xùn)網(wǎng)來詳細(xì)描述一下,用PHP語言如何實(shí)現(xiàn)語音識(shí)別功能。

PHP如何實(shí)現(xiàn)語音識(shí)別功能?
1、語音識(shí)別的功能的應(yīng)用場(chǎng)景
將語音實(shí)時(shí)識(shí)別為文字,適用于語音聊天、語音輸入、語音搜索、語音下單、語音指令、語音問答等多種場(chǎng)景。我們還是利用百度API,語音識(shí)別功能,給大家講解如何使用。API主要就是要學(xué)會(huì)看文檔,一直都強(qiáng)調(diào),api的思路都是差不多。編碼之前,首先要登錄百度云,注冊(cè)應(yīng)用,拿到相應(yīng)的key與SECRET_KEY,下載SDK。
2、SDK安裝步驟
語音識(shí)別 PHP SDK目錄結(jié)構(gòu)
├── AipSpeech.php //語音識(shí)別
└── lib
├── AipHttpClient.php //內(nèi)部http請(qǐng)求類
├── AipBCEUtil.php //內(nèi)部工具類
└── AipBase //Aip基類
3、使用PHP SDK開發(fā)驟如下:
1)在官方網(wǎng)站下載php SDK壓縮包。
2)將下載的aip-php-sdk-version.zip解壓后,復(fù)制AipSpeech.php以及l(fā)ib/*到工程文件夾中。
3)引入AipSpeech.php
4、新建AipSpeech
AipSpeech是語音識(shí)別的PHP SDK客戶端,為使用語音識(shí)別的開發(fā)人員提供了一系列的交互方法。
參考如下代碼新建一個(gè)AipSpeech:
require_once'AipSpeech.php';
// 你的 AppID AK SK
constAPP_ID = '你的 App ID';
constAPI_KEY = '你的 Api Key';
constSECRET_KEY = '你的 Secret Key';
$client = newAipSpeech(APP_ID, API_KEY, SECRET_KEY);
在上面代碼中,常量APP_ID在百度智能云控制臺(tái)中創(chuàng)建,常量API_KEY與SECRET_KEY是在創(chuàng)建完畢應(yīng)用后,系統(tǒng)分配給用戶的,均為字符串,用于標(biāo)識(shí)用戶,為訪問做簽名驗(yàn)證,可在AI服務(wù)控制臺(tái)中的應(yīng)用列表中查看。
準(zhǔn)備一段語音,要對(duì)段保存的這段語音的語音文件進(jìn)行識(shí)別:代碼如下
// 識(shí)別本地文件
$client->asr(file_get_contents( 'audio.pcm'), 'pcm', 16000, array(
'dev_pid'=> 1536,
));
返回的json數(shù)據(jù)
// 成功返回
{
"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
}
這里有個(gè)簡(jiǎn)單的例子,可以參考一下。
require_once'AipSpeech.php';
// 你的 APPID AK SK
constAPP_ID = '10533442';
constAPI_KEY = 'eb8vDMwPyec1DGxecYQRzEjz';
constSECRET_KEY = '56ac673eafc3a65f49dd37d8dd8f27e8';
$client = newAipSpeech(APP_ID, API_KEY, SECRET_KEY);
// 識(shí)別本地文件
$li = $client->asr(file_get_contents('./test.wav'), 'wav', 16000, array(
'lan'=> 'zh',
));
interfaceMsg{
functiongetMsg;
}
classResultimplementsMsg{
protected$res = null;
protectedfunction__construct($re){
$this->res = $re;
}
publicfunctiongetMsg{}
}
classSuccessextendsResult{
publicfunction__construct($re){
parent::__construct($re);
}
publicfunctiongetMsg{
if($this->res['err_msg'] == 'success.') {
// var_dump($this->res);exit;
echo$this->res['result'][0];
}
}
}
$tmp = newSuccess($li);
$tmp->getMsg;