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

2D互動(dòng)數(shù)字人接入指南(不支持接入)

更新時(shí)間:
重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。

警告
2D互動(dòng)數(shù)字人產(chǎn)品公測(cè)已結(jié)束,目前2D數(shù)字人產(chǎn)品不支持實(shí)時(shí)交互能力。

2D互動(dòng)數(shù)字人(對(duì)應(yīng)開放平臺(tái)的“智能客服”場(chǎng)景)是虛擬數(shù)字人開放平臺(tái)提供能夠支持用戶與2D數(shù)字人進(jìn)行實(shí)時(shí)語(yǔ)音交互的數(shù)字人產(chǎn)品能力,需要配合智能對(duì)話機(jī)器人產(chǎn)品使用。本篇文檔將介紹如何接入2D互動(dòng)數(shù)字人。

能力介紹

2D互動(dòng)數(shù)字人是虛擬數(shù)字人開放平臺(tái)提供能夠支持用戶與2D數(shù)字人進(jìn)行實(shí)時(shí)語(yǔ)音交互的數(shù)字人產(chǎn)品能力,需要配合智能對(duì)話機(jī)器人產(chǎn)品使用。

目前互動(dòng)數(shù)字人支持文本、語(yǔ)音兩種交互方式,同時(shí)在數(shù)字人說話中可以支持通過特定話術(shù)進(jìn)行打斷,實(shí)現(xiàn)更加友好的雙工語(yǔ)音對(duì)話體驗(yàn)。

使用場(chǎng)景

適用于一些需要真人與數(shù)字人進(jìn)行交互的場(chǎng)景,如線下大屏,數(shù)字人客服等場(chǎng)景。

前置條件

下述介紹接入2D互動(dòng)數(shù)字人需要提前完成的步驟,每個(gè)步驟都需要完成才能順利接入2D互動(dòng)數(shù)字人。

1. 申請(qǐng)阿里云賬號(hào)

2. 申請(qǐng)購(gòu)買權(quán)限,完成購(gòu)買開通服務(wù)

3. 開通智能對(duì)話機(jī)器人

image

4. 進(jìn)入虛擬數(shù)字人開放平臺(tái)創(chuàng)建并配置應(yīng)用

互動(dòng)數(shù)字人的創(chuàng)建和配置與播報(bào)數(shù)字人大體相同,具體創(chuàng)建和配置流程可以參考:創(chuàng)建并配置數(shù)字人項(xiàng)目,下面針對(duì)互動(dòng)數(shù)字人特有的一些配置做一些介紹。

重要

創(chuàng)建互動(dòng)數(shù)字人應(yīng)用時(shí)請(qǐng)?jiān)诓藛芜x擇“互動(dòng)數(shù)字人”,然后點(diǎn)擊創(chuàng)建數(shù)字人應(yīng)用。

4.1 智能對(duì)話機(jī)器人配置虛擬數(shù)字人開放平臺(tái)-互動(dòng)數(shù)字人機(jī)器人配置

  • 在上述圖中所示位置添加第三步獲取到的智能對(duì)話機(jī)器人的機(jī)器人id,密鑰ID和密鑰Secret是阿里云賬號(hào)的AccessKey ID和AccessKey Secret(點(diǎn)擊獲取,建議通過子賬號(hào)的方式獲取AK&SK)。

技術(shù)接入

警告

請(qǐng)確保完成上述全部前置步驟,獲取到阿里云賬號(hào)的AccessKey ID和AccessKey Secret(點(diǎn)擊獲取),以及獲取到對(duì)應(yīng)數(shù)字人應(yīng)用的tenantId和appId。

下面介紹接入互動(dòng)數(shù)字人的完整步驟以及涉及到API

1. 了解虛擬數(shù)字人開放平臺(tái)服務(wù)端API接入方式

虛擬數(shù)字人開放平臺(tái)的服務(wù)端API采用OpenAPI形式對(duì)外輸出,具體對(duì)接方案見:服務(wù)端API接入

2. SDK版本要求

重要

該功能需要升級(jí)虛擬數(shù)字人開放平臺(tái)服務(wù)端SDK版本至1.0.5及以上。

3. 調(diào)用OpenAPI啟動(dòng)一路數(shù)字人實(shí)例

下面介紹通過Java調(diào)用OpenAPI啟動(dòng)一路數(shù)字人實(shí)例的代碼示例,獲取到返回的sessionId以及token。

代碼示例:

參考OpenAPI官網(wǎng)調(diào)試頁(yè)面,可在線直接填寫參數(shù)并執(zhí)行測(cè)試。

說明

接口調(diào)用返回的sessionId和token在后續(xù)步驟對(duì)接互動(dòng)數(shù)字人客戶端SDK時(shí)將會(huì)使用到,channel信息在對(duì)接RTC進(jìn)行拉流時(shí)需要使用。

關(guān)于StartInstance API的詳細(xì)信息可以參考:StartInstance - 啟動(dòng)一個(gè)數(shù)字人。同時(shí)OpenAPI提供了在線調(diào)試頁(yè)面,可以直接面代碼調(diào)試API:OpenAPI在線調(diào)試

4. 通過WebSocket對(duì)接互動(dòng)數(shù)字人

互動(dòng)數(shù)字人需要客戶端通過WebSocket協(xié)議與服務(wù)端進(jìn)行語(yǔ)音流的傳輸,下面將為您介紹如何通過WebSocket對(duì)接互動(dòng)數(shù)字人。

1. 與虛擬數(shù)字人開放平臺(tái)建立WebSocket長(zhǎng)連接

2. 通過WebSocket發(fā)送互動(dòng)數(shù)字人對(duì)話請(qǐng)求

在建立與虛擬數(shù)字人開放平臺(tái)WebSocket服務(wù)端連接之后,客戶端需要按照互動(dòng)數(shù)字人的對(duì)話協(xié)議發(fā)送對(duì)應(yīng)的請(qǐng)求數(shù)據(jù)。

2.1 啟動(dòng)對(duì)話,初始化對(duì)話配置

通過websocket發(fā)送啟動(dòng)對(duì)話消息,協(xié)議如下:

5{
  "messageId": "<messageId>", // 必傳,消息id,需要保證唯一,可以直接生成16位隨機(jī)數(shù)
  "receiverId": "ability", // 必傳,固定值
  "receiverType": "server", // 必傳,固定值
  "sticky": true, // 必傳,固定值
  "receiverAppId": "<appId>", // 必傳,數(shù)字人應(yīng)用的開發(fā)者信息中的appId
  "content": {
  "type": "start", // 必傳,固定值,表示是啟動(dòng)對(duì)話
  "sessionId": "<sessionId>", // 必傳,StartInstance接口返回的sessionId
  "format": "<format>", // 可選,音頻數(shù)據(jù)格式,目前支持pcm和wav,不傳默認(rèn)pcm 
  "sampleRate": "<sampleRate>" // 可選,音頻采樣率,目前支持16000和8000,不傳默認(rèn)16000
  }
 }
  • 參考websocket接入文檔,發(fā)送該消息需要在消息體前面增加一個(gè)5,表示是業(yè)務(wù)消息。

2.2 等待服務(wù)端啟動(dòng)完成

服務(wù)端收到啟動(dòng)對(duì)話消息之后會(huì)進(jìn)行對(duì)話的啟動(dòng),啟動(dòng)完成之后會(huì)下發(fā)一條啟動(dòng)完成的消息,結(jié)構(gòu)如下:

5{ 
  "content": {
  "sessionId": "8afe971f-0f9c-466a-996b-6beeafd7ae72",
  "type": "startResult", // type=startResult表示啟動(dòng)結(jié)果消息
  "status": true // status表示啟動(dòng)成功或者失敗,false表示失敗,如果遇到失敗可重新發(fā)送啟動(dòng)消息
  },
  "messageId": "473220b6-9062-4b5f-bae6-910f622c943e", // 通信的一些協(xié)議參數(shù),可直接忽略,重點(diǎn)關(guān)注content內(nèi)容
  "tenantId": 20004,
  ...
 }

收到該消息,且status=true之后,才能進(jìn)行后續(xù)的語(yǔ)音流的發(fā)送,在此之前發(fā)送語(yǔ)音流會(huì)被服務(wù)端直接丟棄。

2.3 持續(xù)發(fā)送語(yǔ)音流數(shù)據(jù)

5{
  "messageId": "<messageId>", // 必傳,消息id,需要保證唯一,可以直接生成16位隨機(jī)數(shù)
  "receiverId": "ability", // 必傳,固定值
  "receiverType": "server", // 必傳,固定值
  "sticky": true, // 必傳,固定值
  "receiverAppId": "<appId>", // 必傳,數(shù)字人應(yīng)用的開發(fā)者信息中的appId
  "content": {
  "type": "dataSend", // 必傳,固定值,表示是發(fā)送語(yǔ)音數(shù)據(jù)
  "sessionId": "<sessionId>", // 必傳,StartInstance接口返回的sessionId
  "audio": "<語(yǔ)音數(shù)據(jù)base64之后的文本>",// 可選,語(yǔ)音數(shù)據(jù)base64字符串(文本和語(yǔ)音必傳一個(gè))
  "text": "<text>" // 可選,文本,可直接發(fā)送文本與互動(dòng)數(shù)字人進(jìn)行對(duì)話
  }
 }

語(yǔ)音流的發(fā)送建議每隔100ms發(fā)送一次,發(fā)送最快不要小于50ms,發(fā)送太快可能會(huì)導(dǎo)致無(wú)法識(shí)別。語(yǔ)音數(shù)據(jù)在發(fā)送前需要進(jìn)行base64編碼。同時(shí)語(yǔ)音流需要連續(xù)發(fā)送,如果沒有聲音可以發(fā)送靜音包,長(zhǎng)時(shí)間不發(fā)送音頻流可能會(huì)導(dǎo)致對(duì)話中斷。

重要

該協(xié)議支持直接發(fā)送純文本進(jìn)行對(duì)話,也可發(fā)送語(yǔ)音流進(jìn)行對(duì)話,在文本和語(yǔ)音同時(shí)發(fā)送的過程時(shí)無(wú)法保證對(duì)話觸發(fā)的順序。

服務(wù)端在收到客戶端發(fā)送的語(yǔ)音流之后,會(huì)調(diào)用語(yǔ)音轉(zhuǎn)文本服務(wù),最終拿到文本調(diào)用智能客服機(jī)器人的對(duì)話服務(wù),如果客戶端發(fā)送的是文本,則直接拿文本調(diào)用智能客戶機(jī)器人的對(duì)話服務(wù)(調(diào)用的機(jī)器人實(shí)例是在互動(dòng)數(shù)字人應(yīng)用配置頁(yè)面配置的機(jī)器人信息),最終拿到智能客服機(jī)器人的回復(fù)文本,觸發(fā)數(shù)字人播報(bào)對(duì)應(yīng)的回復(fù)文本。在這過程中服務(wù)端會(huì)返回客戶端識(shí)別到的文本,以及智能客服機(jī)器人的回復(fù)文本,下面是返回的具體協(xié)議。

2.4 服務(wù)端返回語(yǔ)音文本識(shí)別結(jié)果

服務(wù)端在語(yǔ)音轉(zhuǎn)文本服務(wù)識(shí)別到一句完整的句子時(shí)會(huì)將識(shí)別到的文本返回給客戶端。

5{
  "content": {
  "type": "asrContent", // 表示是下發(fā)語(yǔ)音識(shí)別文本消息
  "sentenceId": "b60e43b53333437a9d312a62518a5b3c", // 本次識(shí)別到的內(nèi)容的id
  "text": "你好。", // 本次識(shí)別到的文本
  "sessionId": "028f5247-d089-4fd2-800b-dab5148d5407", // 對(duì)應(yīng)的sessionId
  "isFinished": true // true表示是一句話結(jié)束
  },
  "messageId": "221d0c82-c73e-4c13-9324-8c7947cf199a", // 通信的一些協(xié)議參數(shù),可直接忽略,重點(diǎn)關(guān)注content內(nèi)容
  "tenantId": 20004,
  ...
 }
重要

服務(wù)端返回的消息也是5開頭。

2.5 服務(wù)端返回對(duì)話回復(fù)結(jié)果

服務(wù)端在語(yǔ)音轉(zhuǎn)文本服務(wù)識(shí)別到一句完整的句子時(shí)會(huì)將識(shí)別到的文本調(diào)用智能客服機(jī)器人的對(duì)話服務(wù),拿到對(duì)應(yīng)的對(duì)話回復(fù)文本,從而驅(qū)動(dòng)數(shù)字人播報(bào)對(duì)應(yīng)的回復(fù)文本,同時(shí)服務(wù)端會(huì)將回復(fù)文本返回給客戶端。

5{
  "content": {
  "type": "replyContent", // 表示是下發(fā)智能客服機(jī)器人回復(fù)的文本消息
  "sentenceId": "b60e43b53333437a9d312a62518a5b3c", // 本次識(shí)別到的內(nèi)容的id
  "text": "我在聽,請(qǐng)講。", // 智能客服機(jī)器人回復(fù)的文本
  "sessionId": "028f5247-d089-4fd2-800b-dab5148d5407" // 對(duì)應(yīng)的sessionId
  },
  "messageId": "221d0c82-c73e-4c13-9324-8c7947cf199a", // 通信的一些協(xié)議參數(shù),可直接忽略,重點(diǎn)關(guān)注content內(nèi)容
  "tenantId": 20004,
  ...
 }
重要

服務(wù)端返回的消息也是5開頭。

2.6 停止對(duì)話

在完成一通對(duì)話之后,客戶端可主動(dòng)發(fā)起停止對(duì)話。

5{
  "messageId": "<messageId>", // 必傳,消息id,需要保證唯一,可以直接生成16位隨機(jī)數(shù)
  "receiverId": "ability", // 必傳,固定值
  "receiverType": "server", // 必傳,固定值
  "sticky": true, // 必傳,固定值
  "receiverAppId": "<appId>", // 必傳,數(shù)字人應(yīng)用的開發(fā)者信息中的appId
  "content": {
  "type": "stop", // 必傳,固定值,表示是停止對(duì)話
  "sessionId": "<sessionId>", // 必傳,StartInstance接口返回的sessionId
  }
 }

在停止對(duì)話之后,需要對(duì)應(yīng)的數(shù)字人實(shí)例沒有停止的情況下,可以重新啟動(dòng)對(duì)話服務(wù)。

重要

停止對(duì)話不會(huì)停止對(duì)應(yīng)的數(shù)字人實(shí)例,如果需要停止數(shù)字人實(shí)例可參考下述步驟5:調(diào)用OpenAPI停止對(duì)應(yīng)數(shù)字人實(shí)例。

5. 接入RTC客戶端進(jìn)行拉流

接入RTC客戶端可參考文檔:3D數(shù)字人實(shí)時(shí)流媒體。需要使用到第二步中獲取到的Channel信息。

6. 調(diào)用OpenAPI停止對(duì)應(yīng)數(shù)字人實(shí)例

下面介紹通過Java調(diào)用OpenAPI啟動(dòng)一路數(shù)字人實(shí)例的代碼示例,需要使用到第二步中獲取的sessionId。

代碼示例:

參考OpenAPI官網(wǎng)調(diào)試頁(yè)面,可在線直接填寫參數(shù)并執(zhí)行測(cè)試。

7. sessionId丟失如何停止數(shù)字人實(shí)例

針對(duì)運(yùn)行中的數(shù)字人實(shí)例,如果sessionId丟失將無(wú)法調(diào)用StopInstance接口停止,此時(shí)可通過調(diào)用QueryRunningIntance接口獲取到正在運(yùn)行中的數(shù)字人實(shí)例列表,從而獲取到對(duì)應(yīng)的sessionId。

代碼示例:

參考OpenAPI官網(wǎng)調(diào)試頁(yè)面,可在線直接填寫參數(shù)并執(zhí)行測(cè)試。