【百度智能云】语音技术-短语音识别 JavaScript
提要
代码目的:通过 JavaScript 代码,完成用百度智能云的语音技术-短语音识别功能,实现语音转文字效果。
如果出现以下错误 Open api characters limit reached
:
{'err_detail': '16: Open api characters limit reached', 'err_msg': '16: Open api characters limit reached', 'err_no': 502, 'err_subcode': 16, 'tts_logid': 1943899771}
这个错误的原因是: 没有领取免费额度。
创建应用之前,记得先领取免费额度,然后点击开通,不然接口会请求失败。
需要先有 百度智慧云账户,且开通 短语音试别业务
以下是使用到的数据信息:
测试音频
点击下载-JianWangChao.wav
点击下载-jiarenmen.wav
使用 JSON方式传递获取
/* 音频转文字 --> 使用 JSON 方式传递 */
const axios = require("axios").default;
const access_token = "ur accToken"
const cuid = "ur cuid "
async function main() {
var headers = { 'Content-Type': 'application/json', }
var url = 'https://vop.baidu.com/server_api'
var options = JSON.stringify({
"format": "pcm",
"rate": 16000,
"channel": 1,
"cuid": cuid,
"token": access_token,
"speech": getFileContentAsBase64("E:/xxx/JianWangChao.wav"),
"len": 274832,
});
axios.post(url, options, headers
).then(function (response) {
console.log(response.data);
}).catch(function (err) {
console.log("#>> catch", err);
});
}
/** 获取文件base64编码 */
function getFileContentAsBase64(path) {
const fs = require('fs');
try {
var base64Str = fs.readFileSync(path, { encoding: 'base64' })
return base64Str;
} catch (err) { throw new Error(err); }
}
main();
使用 RAW 方式传递获取
/* 音频转文字 --> 使用 RAW 方式传递 */
const axios = require("axios").default;
const access_token = "ur accToken"
const cuid = "ur cuid "
async function main() {
var data = getFileContentAsBase64("E:/xxx/jiarenmen.wav")
var url = 'https://vop.baidu.com/server_api?dev_pid=1537&cuid=' + cuid + '&token=' + access_token
axios({
url: url,
method: "post",
headers: { 'Content-Type': 'audio/wav;rate=16000' },
data: data
}).then((res) => {
console.log('#> then, ', res.data)
}, (err) => {
console.log('#> err, ', err)
})
}
/**
* 获取文件base64编码
* @param string path 文件路径
* @return string base64编码信息,不带文件头
*/
function getFileContentAsBase64(path) {
const fs = require('fs');
try {
var base64Str = fs.readFileSync(path)
return base64Str;
} catch (err) {
throw new Error(err);
}
}
main();
如果有错误的地方,还望各位多多指点
写个博客,来记录自己成长的一些经历,或许也能顺便帮助他人。
由于使用GitHub仓库作为图床,会有图片显示不出来的情况。