【百度智能云】语音技术-短语音识别 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}

这个错误的原因是: 没有领取免费额度。 创建应用之前,记得先领取免费额度,然后点击开通,不然接口会请求失败。

领取免费额度

需要先有 百度智慧云账户,且开通 短语音试别业务
以下是使用到的数据信息:

AccessToken 获取方式
getAccToken

cuid 获取方式
get-cuid

测试音频

点击下载-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();

post-json

使用 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();

post-raw

posted @ 2023-10-25 17:57  叫夏洛啊  阅读(151)  评论(0编辑  收藏  举报