全部产品
云市场

Node.js Demo

更新时间:2019-10-11 14:20:10

提示:

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