PHP與語音識別功能現在也是很普遍了





















文章正文

語音識別的功能的應用場景

將語音實時識別為文字,適用于語音聊天、語音輸入、語音搜索、語音下單、語音指令、語音問答等多種場景。

我們還是利用百度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_KEYSECRET_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




?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容