本文結(jié)合內(nèi)容藻三,摘自
http://ai.baidu.com/docs/#/ASR-API/top
描述:百度語音識別通過 REST API 的方式給開發(fā)者提供一個通用的 HTTP 接口。 上傳需要完整的錄音文件跪者,錄音文件時長不超過60s棵帽。
注:瀏覽器由于無法跨域請求百度語音服務器的域名,因此無法使用本接口渣玲。
step 1: 獲取 Access Token
建議使用post 傳參逗概,請求該地址:
https://openapi.baidu.com/oauth/2.0/token
所需參數(shù)如下:
grant_type:必須參數(shù),固定為“client_credentials”
client_id:必須參數(shù)忘衍,應用的 API Key逾苫;
client_secret:必須參數(shù)卿城,應用的 Secret Key;
mui框架,書寫方式
mui.ajax('https://openapi.baidu.com/oauth/2.0/token', {
data: {
grant_type: "client_credentials",
client_id: "",//此處為申請語音賬戶時的 API key
client_secret: ""http://此處為申請語音賬戶似的 Secret Key
},
dataType: 'json', //服務器返回json格式數(shù)據(jù)
type: 'post', //HTTP請求類型
timeout: 10000, //超時時間設置為10秒铅搓;
success: function (data) {
//服務器返回響應瑟押,根據(jù)響應結(jié)果,分析是否登錄成功星掰;
console.log("獲取token success----");
//data.access_token 該值 為可用的 access_token 的值
},
error: function (xhr, type, errorThrown) {
//異常處理多望;
console.log(type);
console.log(errorThrown);
}
});
注:Access Token 有效期為一個月,開發(fā)者需要對 Access Token的有效性進行判斷氢烘,過期 需要重新獲缺愠狻;
step 2 請求識別接口威始,將base64 轉(zhuǎn)換為文字返回
請求之前
獲取 本地錄音(H5+ 書寫方式)
// 擴展API加載完畢,現(xiàn)在可以正常調(diào)用擴展API
document.addEventListener("plusready", onPlusReady, false);
var r = null;
function onPlusReady() {
r = plus.audio.getRecorder();
uuId = plus.device.imei;
console.log(uuId);
}
function startRecord() {
if (r == null) {
console.log("Device not ready!");
return;
}
r.record({
filename: "_doc/audio/"
}, function (path) {
Audio2dataURL(path);//識別到音頻文件像街,調(diào)用黎棠,轉(zhuǎn)base64 方法
console.log("Audio record success!");
}, function (e) {
console.log("Audio record failed: " + e.message);
});
}
function stopRecord() {
r.stop();
}
語音轉(zhuǎn)為base64(H5+ 書寫方式)
// 錄音語音文件轉(zhuǎn)base64字符串
function Audio2dataURL(path) {
var urlArr;
plus.io.resolveLocalFileSystemURL(path, function (entry) {
entry.file(function (file) {
var reader = new plus.io.FileReader();
//urlSize 為 文件的字節(jié) 大小
var urlSize = file.size;
reader.onloadend = function (e) {
//urlStr 的值,為返回轉(zhuǎn)換的base64數(shù)據(jù)
var urlStr = e.target.result;
urlArr = urlStr.split(",")[1];
//此處調(diào)用镰绎,發(fā)送給百度語引識別的 函數(shù)
//例如:
sendBaseUrl(urlArr, urlSize, token_val);
};
reader.readAsDataURL(file);
}, function (e) {
mui.toast("讀寫出現(xiàn)異常: " + e.message);
})
})
}
開始請求
function sendBaseUrl(speechUrl, urlSize, token_val) {
mui.ajax('https://vop.baidu.com/server_api', {
//注意脓斩,data內(nèi)部為json格式,所以畴栖,必須是字符串
data: {
"format": "amr",//格式支持pcm(不壓縮)随静、wav(不壓縮,pcm編碼)吗讶、amr(壓縮格式)采樣率
"rate": 8000,//前方有坑燎猛,請繞行:此處文檔參數(shù)16000,達不到這種高保真音頻照皆,故 使用8000
"dev_pid": 1536,//普通話
"channel": 1,//固定寫法(聲道)
"cuid": "862245234377502,862989243244150",//設備的唯一id
"speech": speechUrl,//base64的音頻文件
"len": urlSize,//文件的大小重绷,字節(jié)數(shù)
"token": token_val,//獲取到的token值
},
headers: {
'Content-Type': 'application/json'
},
dataType: 'json', //服務器返回json格式數(shù)據(jù)
type: 'post', //HTTP請求類型
timeout: 10000, //超時時間設置為10秒;
success: function (data) {
//服務器返回響應膜毁,根據(jù)響應結(jié)果昭卓,分析是否登錄成功;
console.log("識別ing------");
console.log(JSON.stringify(data));
},
error: function (xhr, type, errorThrown) {
//異常處理瘟滨;
console.log(type);
console.log(errorThrown);
console.log("識別fail");
}
});
}
tips:若有錯誤提示候醒,且 已經(jīng)走到成功回調(diào),建議參照文檔杂瘸,查看錯誤碼倒淫。
說明:本文用途學習交流,并不用于商用胧沫。