全部产品
Search
文档中心

Node.js Demo

更新时间: 2020-11-03

提示:

  • 在使用SDK之前,请先确保已阅读了 接口说明文档
  • 本文档中的SDK只适用于7月5日新发布的2.0版语音服务,如果您是之前开通的,要使用此SDK需要新开通2.0版服务

SDK 说明

录音文件识别的Node.js Demo使用了阿里云的Node.js SDK用来提交录音文件识别请求和结果查询,采用的是RPC风格的POP API调用。阿里云Node.js SDK的详细介绍请阅读阿里云Node.js SDK 快速开始

安装阿里云Node.js SDK

说明:阿里云Node.js SDK适用于Node.js最近两个LTS版本(Node.js 4.x和Node.js 6.x)。您可以通过执行命令“node -v”查看Node.js的版本。

使用npm来完成Node.js 依赖模块的安装

所有阿里云官方的Node.js SDK都位于@alicloud下。录音文件识别的Node.js Demo依赖的是@alicloud/nls-filetrans-2018-08-17,在Demo文件所在目录,执行如下命令安装依赖:

  1. npm install @alicloud/nls-filetrans-2018-08-17 --save

调用步骤

  1. 创建并初始化阿里云鉴权Clientt实例,鉴权使用了阿里云账号的AccessKey ID和AccessKey Secret(获取方法请阅读开通服务一节)。
  2. 设置请求参数,提交录音文件识别请求;处理服务端返回的响应,获取任务ID,供轮询识别结果使用。
  3. 设置查询参数为任务的ID,轮询该任务的识别结果。

Demo 示例

录音文件说明: Demo中使用的录音文件为PCM编码格式16000Hz采样率,管控台设置的模型为通用模型;如果使用其他录音文件,请填入对应的编码格式和采样率,并在管控台设置对应的模型,模型设置请阅读管理项目一节。

nls-sample-16k.wav


阿里云鉴权:使用过程中,所有的调用均通过阿里云账号来完成鉴权操作。通过传入阿里云账号的AccessKey ID和AccessKey Secret(获取方法请阅读 开通服务 一节)。

示例

  1. 'use strict';
  2. const Client = require('@alicloud/nls-filetrans-2018-08-17');
  3. function fileTrans(akID, akSecret, appKey, fileLink) {
  4. /**
  5. * 地域ID
  6. * 常量内容,请勿改变
  7. */
  8. var ENDPOINT = 'http://filetrans.ap-southeast-1.aliyuncs.com';
  9. var API_VERSION = '2019-08-23';
  10. /**
  11. * 创建阿里云鉴权client
  12. */
  13. var client = new Client({
  14. accessKeyId: akID,
  15. secretAccessKey: akSecret,
  16. endpoint: ENDPOINT,
  17. apiVersion: API_VERSION
  18. });
  19. client.apiVersion = API_VERSION;
  20. /**
  21. * 提交录音文件识别请求,设置请求参数Task
  22. * 请求参数appkey:您的项目应用appkey
  23. * 请求参数file_link:需要识别的录音文件
  24. * 请求参数组合成JSON格式的字符串作为Task的值
  25. */
  26. var task = {
  27. appkey : appKey,
  28. file_link : fileLink,
  29. version : "4.0", // 新接入请使用4.0版本,已接入(默认2.0)如需维持现状,请注释掉该参数设置
  30. enable_words : false // 设置是否输出词信息,默认为false,开启时需要设置version为4.0
  31. };
  32. task = JSON.stringify(task);
  33. var taskParams = {
  34. Task : task
  35. };
  36. var options = {
  37. method: 'POST'
  38. };
  39. // 提交录音文件识别请求,处理服务端返回的响应
  40. client.submitTask(taskParams, options).then((response) => {
  41. console.log(response);
  42. // 服务端响应信息的状态描述 StatusText
  43. var statusText = response.StatusText;
  44. if (statusText != 'SUCCESS') {
  45. console.log('录音文件识别请求响应失败!')
  46. return;
  47. }
  48. console.log('录音文件识别请求响应成功!');
  49. // 获取录音文件识别请求任务的TaskId,以供识别结果查询使用
  50. var taskId = response.TaskId;
  51. /**
  52. * 以TaskId为查询参数,提交识别结果查询请求
  53. * 以轮询的方式进行识别结果的查询,直到服务端返回的状态描述为"SUCCESS"、SUCCESS_WITH_NO_VALID_FRAGMENT,
  54. * 或者为错误描述,则结束轮询。
  55. */
  56. var taskIdParams = {
  57. TaskId : taskId
  58. };
  59. var timer = setInterval(() => {
  60. client.getTaskResult(taskIdParams).then((response) => {
  61. console.log('识别结果查询响应:');
  62. console.log(response);
  63. var statusText = response.StatusText;
  64. if (statusText == 'RUNNING' || statusText == 'QUEUEING') {
  65. // 继续轮询,注意间隔周期
  66. }
  67. else {
  68. if (statusText == 'SUCCESS' || statusText == 'SUCCESS_WITH_NO_VALID_FRAGMENT') {
  69. console.log('录音文件识别成功:');
  70. var sentences = response.Result;
  71. console.log(sentences);
  72. }
  73. else {
  74. console.log('录音文件识别失败!');
  75. }
  76. // 退出轮询
  77. clearInterval(timer);
  78. }
  79. }).catch((error) => {
  80. console.error(error);
  81. // 异常情况,退出轮询
  82. clearInterval(timer);
  83. });
  84. }, 10000);
  85. }).catch((error) => {
  86. console.error(error);
  87. });
  88. }
  89. var akId = '您的AccessKey Id';
  90. var akSecret = '您的AccessKey Secret';
  91. var appKey = '您的appkey';
  92. var fileLink = 'https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav';
  93. fileTrans(akId, akSecret, appKey, fileLink);