日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Node.js SDK

本文介紹如何使用阿里云智能語音服務提供的Node.js SDK,包括SDK的安裝方法及SDK代碼示例。

前提條件

在使用SDK前,請先閱讀接口說明,詳情請參見接口說明

下載安裝

說明
  • SDK支持nodev14及以上版本。

  • 請確認已經安裝nodejs&npm環境,并完成基本配置。

  1. 下載并安裝SDK。

    通過以下命令完成SDK下載和安裝。

    npm install alibabacloud-nls
  2. 導入SDK。

    在代碼中使用require或者import導入SDK。

    const Nls = require('alibabacloud-nls')
    //Nls內部含SpeechRecognition, SpeechTranscription, SpeechSynthesizer
    //以下為使用import導入SDK
    //import { SpeechRecognition } from "alibabacloud-nls"
    //import { SpeechTranscription } from "alibabacloud-nls"
    //import { SpeechSynthesizer } from "alibabacloud-nls"

實時語音識別

Class: SpeechTranscription

SpeechTranscription類用于進行實時語音識別。

  • 構造函數參數說明:

參數

類型

參數說明

config

Object

連接配置對象。

  • config object說明:

參數

類型

參數說明

url

String

服務URL地址。

token

String

訪問Token,詳情可參見獲取Token概述

appkey

String

對應項目Appkey。獲取Appkey請前往控制臺

defaultStartParams()

返回一個默認的推薦參數,其中Format為PCM,采樣率為16000 Hz,中間結果、標點預測和ITN均為打開狀態。您在拿到默認對象后可以根據自身需求,結合接口說明中的參數列表來添加和修改參數。

  • 參數說明:無。

  • 返回值:

    object類型對象,字段如下:

    {
        "format": "pcm",
        "sample_rate": 16000,
        "enable_intermediate_result": true,
        "enable_punctuation_prediction": true,
        "enable_inverse_text_normalization": true
    }

on(which, handler)

設置事件回調。

  • 參數說明:

參數

類型

參數說明

which

String

事件名稱。

handler

Function

回調函數。

支持的回調事件如下:

事件名稱

事件說明

回調函數參數個數

回調函數參數說明

started

實時語音識別開始。

1

String類型,開始信息。

changed

實時語音識別中間結果。

1

String類型,中間結果信息。

completed

實時語音識別完成。

1

String類型,完成信息。

closed

連接關閉。

0

無。

failed

錯誤。

1

String類型,錯誤信息。

begin

提示句子開始。

1

String類型,相關信息。

end

提示句子結束。

1

String類型,相關信息。

  • 返回值:無。

async start(param, enablePing, pingInterval)

根據param發起一次一句話識別,param可以參考defaultStartParams方法的返回,具體參數見接口說明

  • 參數說明:

參數

類型

參數說明

param

Object

實時語音識別參數。

enablePing

Boolean

是否自動向云端發送ping請求,默認false。

  • true:發送。

  • false:不發送。

pingInterval

Number

發ping請求間隔時間,默認6000,單位為毫秒。

  • 返回值: Promise對象,當started事件發生后觸發resolve,并攜帶started信息;當任何錯誤發生后觸發reject,并攜帶異常信息。

async close(param)

停止一句話識別。

  • 參數說明:

參數

類型

參數說明

param

Object

實時語音識別結束參數。

  • 返回值:

    Promise對象,當completed事件發生后觸發resolve,并攜帶completed信息;當任何錯誤發生后觸發reject,并攜帶異常信息。

shutdown()

強制斷開連接。

  • 參數說明:無。

  • 返回值:無。

sendAudio(data)

發送音頻,音頻格式必須和參數中一致。

  • 參數說明:

參數

類型

參數說明

data

Buffer

二進制音頻數據。

  • 返回值:無。

代碼示例

"use strict"

const Nls = require("alibabacloud-nls")
const fs = require("fs")
const sleep = (waitTimeInMs) => new Promise(resolve => setTimeout(resolve, waitTimeInMs))

const URL = "wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1"
const APPKEY = "Your Appkey"      //獲取Appkey請前往控制臺:https://nls-portal.console.aliyun.com/applist
const TOKEN = "Your Token"      //獲取Token具體操作,請參見:http://bestwisewords.com/document_detail/450514.html

let audioStream = fs.createReadStream("test1.pcm", {
  encoding: "binary",
  highWaterMark: 1024
})
let b1 = []

audioStream.on("data", (chunk) => {
  let b = Buffer.from(chunk, "binary")
  b1.push(b)
})

audioStream.on("close", async ()=>{
  while (true) {
    let st = new Nls.SpeechTranscription({
      url: URL,
      appkey:APPKEY,
      token:TOKEN
    })

    st.on("started", (msg)=>{
      console.log("Client recv started:", msg)
    })

    st.on("changed", (msg)=>{
      console.log("Client recv changed:", msg)
    })

    st.on("completed", (msg)=>{
      console.log("Client recv completed:", msg)
    })

    st.on("closed", () => {
      console.log("Client recv closed")
    })

    st.on("failed", (msg)=>{
      console.log("Client recv failed:", msg)
    })

    st.on("begin", (msg)=>{
      console.log("Client recv begin:", msg)
    })
    
    st.on("end", (msg)=>{
      console.log("Client recv end:", msg)
    })

    try {
      await st.start(st.defaultStartParams(), true, 6000)
    } catch(error) {
      console.log("error on start:", error)
      continue
    }

    try {
      for (let b of b1) {
        if (!st.sendAudio(b)) {
          throw new Error("send audio failed")
        }
        await sleep(20)
      }
    } catch(error) {
      console.log("sendAudio failed:", error)
      continue
    }

    try {
      console.log("close...")
      await st.close()
    } catch(error) {
      console.log("error on close:", error)
    }
    await sleep(2000)
  }
})