腾讯云语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR) 为开发者提供语音转文字服务的最佳体验。语音识别服务经微信、腾讯视频、王者荣耀等大量内部业务验证,同时也在线上线下大量外部客户业务场景下成功落地,具备识别准确率高、接入便捷、性能稳定等特点。腾讯云语音识别服务开放实时语音识别、一句话识别和录音文件识别三种服务形式,满足不同类型开发者需求。
产品优势
海量数据积累
立足于腾讯庞大的社交数据平台,积累了数十万小时的语音标注数据,拥有丰富多样的语料库,为高识别率奠定数据基础。
算法业界领先
基于多种序列神经网络结构(LSTM、Attention Model、DeepCNN),采用 Multitask 训练方法,结合T/S方式,在通用以及垂直领域有业内领先的识别精度。
支持多平台设备
提供 REST API 和 SDK,支持智能硬件、移动应用、网站、桌面客户端和物联网等多种设备终端。
支持语种丰富
现阶段已经支持中文普通话、英语、粤语和韩语语音识别,后续将陆续开放其他语种或方言的识别能力。
噪声环境识别佳
语音识别模型鲁棒性佳,识别精度高,抗噪声的干扰能力强,能够识别来自嘈杂环境的音频信息,不需要客户进行降噪处理。
海量内外部业务验证
经过微信、腾讯视频、王者荣耀等内部业务充分验证,也在大量互联网、金融、教育等领域的外部客户业务场景成功落地,日服务亿级用户,性能稳定。
1. 准备工作:在小程序使用cryptojs
方法一:参照小程序 之使用HMACSHA1算法加密报文,将加密算法文件下载至本地使用。
方法二:引入 npm模块在miniprogram文件夹下安装crypto-js,在npm init时一路回车即可
cd miniprogram npm init npm install crypto-js
在小程序开发工具修改配置:
添加描述
- 点击开发者工具中的菜单栏:工具 --> 构建 npm
添加描述
- 使用:
const CryptoJs = require('crypto-js'); console.log(CryptoJS.HmacSHA1("Message", "Key"));
2. 开始鉴权
拼接请求参数:
* 获取所得secretid及secretkey需确保为同一组。
- 将接口必须的参数进行排序并拼接:
若参数为:
let timestamp = Math.round(Date.now() / 1000); let params = { secretid: '你的SecretId', timestamp: Math.round(Date.now() / 1000), expired: timestamp + 90, nonce: Math.round(Math.random() * 65535), seq: 1, end: 0, res_type: 0, sub_service_type: 1, engine_model_type: '16k_zh', result_text_format: 0, voice_format: 8, //1:wav(pcm);4:speex(sp);6:silk; 8: mp3 source: 0, //默认 voice_id: 'f658c689c3b4db74', timeout: 5000, //超时时间单位为毫秒 needvad: 0, }
}
* 具体请求参数请见请求结构,需要确保参数正确,上述标注的参数需要按照请求结构中的要求设置。
拼接函数:
function generateQueryString(params){ let keys = Object.keys(params); let qstr = ''; keys.sort(); keys.forEach(function(key) { let val = params[key]; if (key === '') { return; } if (val === undefined || val === null || (typeof val === 'number' && isNaN(val))) { val = ''; } qstr += '&' + key + '=' + val; }) return qstr.slice(1); }
拼接签名(appid获取:API 密钥管理页面):
const appid = 你的AppId; //type number let qstr = generateQueryString(params); //params为a 步骤中的参数 let str = 'POSTasr.cloud.tencent.com/asr/v1/' + appid + '?' + qstr;
对secretKey及签名原文进行使用 HmacSha1 算法进行加密处理(secretKey获取
const secretKey = '你的SecretKey'; let sha1_result = CryptoJs.HmacSHA1(str, secretKey); //此处接入Crypto的方法请见上文,str为b 步骤中的str
对加密后的数据进行base64转码,所得到的signStr为最终得到的签名串
let bytes = toUint8Array(sha1_result); let signStr = wx.arrayBufferToBase64(bytes); function toUint8Array(wordArray) { // Shortcuts var words = wordArray.words; var sigBytes = wordArray.sigBytes; // Convert var u8 = new Uint8Array(sigBytes); for (var i = 0; i < sigBytes; i++) { var byte = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; u8[i]=byte; } return u8; }
开始请求(使用wx.getRecorderManager()进行语音输入请参考RecorderManager):
wx.request({ url: 'https://asr.cloud.tencent.com/asr/v1/' + appid + '?' + qstr, // appid与qstr 为 b 步骤参数 data: data, //data为通过录音接口获取的原始音频数据,语音编码方式需要对应请求接口params中的voice_format字段 method: 'POST', header: { 'content-type': 'application/octet-stream', 'Authorization': signStr, //signStr为d 步骤中获得的签名串 }, success (res) { console.log(res); }, fail(err) { console.log( err) } })
留言评论
暂无留言