API 百度 語音識別功能踩坑(菜鳥版)

本文結(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),建議參照文檔杂瘸,查看錯誤碼倒淫。

說明:本文用途學習交流,并不用于商用胧沫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昌简,一起剝皮案震驚了整個濱河市占业,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纯赎,老刑警劉巖谦疾,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異犬金,居然都是意外死亡念恍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門晚顷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來峰伙,“玉大人,你說我怎么就攤上這事该默⊥ィ” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵栓袖,是天一觀的道長匣摘。 經(jīng)常有香客問我,道長裹刮,這世上最難降的妖魔是什么音榜? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮捧弃,結(jié)果婚禮上赠叼,老公的妹妹穿的比我還像新娘。我一直安慰自己违霞,他們只是感情好嘴办,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著买鸽,像睡著了一般户辞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上癞谒,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天底燎,我揣著相機與錄音,去河邊找鬼弹砚。 笑死双仍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的桌吃。 我是一名探鬼主播朱沃,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逗物?” 一聲冷哼從身側(cè)響起搬卒,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翎卓,沒想到半個月后契邀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡失暴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年坯门,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逗扒。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡古戴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矩肩,到底是詐尸還是另有隱情现恼,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布黍檩,位于F島的核電站述暂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏建炫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一疼蛾、第九天 我趴在偏房一處隱蔽的房頂上張望肛跌。 院中可真熱鬧,春花似錦察郁、人聲如沸衍慎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稳捆。三九已至,卻和暖如春麦轰,著一層夾襖步出監(jiān)牢的瞬間乔夯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工款侵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留末荐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓新锈,卻偏偏與公主長得像甲脏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容