本文介绍如何使用阿里云智能语音服务提供的Node.js SDK,包括SDK的安装方法及SDK代码示例。
前提条件
示例说明
录音文件识别示例使用Node.js SDK提交识别请求和查询识别结果,采用的是RPC风格的POP API调用方式。
关于阿里云Node.js SDK请参见快速开始。
SDK安装
说明
阿里云Node.js SDK适用于Node.js 4.x和Node.js 6.x 两个LTS版本。您可以通过执行命令node -v
查看Node.js版本。
所有阿里云官方的Node.js SDK均位于aliyun-nls-filetrans
下。录音文件识别的Node.js示例依赖aliyun-nls-filetrans
,在示例文件所在目录,执行如下命令安装Node.js依赖模块:
npm install aliyun-nls-filetrans --save
调用步骤
创建并初始化阿里云鉴权对象。
设置请求参数,提交录音文件识别请求,处理服务端返回的响应并获取任务ID。
设置查询参数为任务ID,轮询该任务的识别结果。
代码示例
下载nls-sample-16k.wav。该录音文件为PCM编码格式16000 Hz采样率,管控台设置的模型为通用模型;如果使用其他录音文件,请填入对应的编码格式和采样率,并在管控台设置对应的模型,模型设置请参见管理项目。
调用接口前,需配置环境变量,通过环境变量读取访问凭证。智能语音交互的AccessKey ID、AccessKey Secret和AppKey的环境变量名:ALIYUN_AK_ID、ALIYUN_AK_SECRET、NLS_APP_KEY。
'use strict';
const Client = require('aliyun-nls-filetrans');
function fileTrans(akID, akSecret, appKey, fileLink) {
//地域ID,固定值。
var ENDPOINT = 'http://speechfiletranscriberlite.cn-shanghai.aliyuncs.com';
var API_VERSION = '2021-12-21';
/**
* 创建阿里云鉴权client
*/
var client = new Client({
accessKeyId: akID,
secretAccessKey: akSecret,
endpoint: ENDPOINT,
apiVersion: API_VERSION
});
/**
* 提交录音文件识别请求,请求参数组合成JSON格式的字符串作为task的值。
* 请求参数appkey:项目Appkey,获取Appkey请前往控制台:https://nls-portal.console.aliyun.com/applist
* 请求参数file_link:需要识别的录音文件。
*/
var task = {
appkey : appKey,
file_link : fileLink,
enable_words : false // 设置是否输出词信息,默认值为false。
};
task = JSON.stringify(task);
var taskParams = {
Task : task
};
var options = {
method: 'POST'
};
// 提交录音文件识别请求,处理服务端返回的响应。
client.submitTask(taskParams, options).then((response) => {
console.log(response);
// 服务端响应信息的状态描述StatusText。
var statusText = response.StatusText;
if (statusText != 'SUCCESS') {
console.log('录音文件识别请求响应失败!')
return;
}
console.log('录音文件识别请求响应成功!');
// 获取录音文件识别请求任务的TaskId,以供识别结果查询使用。
var taskId = response.TaskId;
/**
* 以TaskId为查询参数,提交识别结果查询请求。
* 以轮询的方式进行识别结果的查询,直到服务端返回的状态描述为"SUCCESS"、SUCCESS_WITH_NO_VALID_FRAGMENT,
* 或者为错误描述,则结束轮询。
*/
var taskIdParams = {
TaskId : taskId
};
var timer = setInterval(() => {
client.getTaskResult(taskIdParams).then((response) => {
console.log('识别结果查询响应:');
console.log(response);
var statusText = response.StatusText;
if (statusText == 'RUNNING' || statusText == 'QUEUEING') {
// 继续轮询,注意间隔周期。
}
else {
if (statusText == 'SUCCESS' || statusText == 'SUCCESS_WITH_NO_VALID_FRAGMENT') {
console.log('录音文件识别成功:');
var sentences = response.Result;
console.log(sentences);
}
else {
console.log('录音文件识别失败!');
}
// 退出轮询
clearInterval(timer);
}
}).catch((error) => {
console.error(error);
// 异常情况,退出轮询。
clearInterval(timer);
});
}, 10000);
}).catch((error) => {
console.error(error);
});
}
var akId = process.env.ALIYUN_AK_ID;
var akSecret = process.env.ALIYUN_AK_SECRET;
var appKey = process.env.NLS_APP_KEY;
var fileLink = 'https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav';
fileTrans(akId, akSecret, appKey, fileLink);
文档内容是否对您有帮助?