星尘数字人网关文档

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

该文档介绍网关如何进行正确配置使用流程。

警告

说明:需要使用您的API-KEY替换实例中的your-api-key,代码才能正常运行。

概述

星尘数字人提供了Android,iOSWeb三端SDK,客户可以直接通过端侧SDK使用数字人能力,但这种方式下,需要将API-KEY分发到客户端中,带来一定的安全风险。

本文档直接将数字人流程中,需要API-KEY访问的接口,以服务端API的形式进行提供。客户可以通过自己的业务服务端对数字人流程中的API进行封装,使用SDK时,直接通过SDK访问业务服务端封装后的API。这样星尘的API-KEY只需要存放在业务服务端,杜绝了API-KEY在客户端泄漏的可能性。

仅使用端侧SDK

image

业务服务端转发

image

重要

注意:业务服务端只需要转发星尘服务端发送的数据即可,请不要修改星尘返回的数据结构,否则可能会导致端侧SDK鉴权异常。

数字人初始化

HTTP

shell

curl --location 'https://nlp.aliyuncs.com/v2/api/videochat/initialize' \
--header 'Expect;' \
--header 'accept: */*' \
--header 'Content-Type: application/json' \
--header 'x-fag-servicename: aca-videochat-init' \
--header 'x-fag-appcode: aca' \
--header 'Authorization: Bearer your-api-key' \
--data '{
            "type": "Avatar",`
            "aca": {
                "botProfile": {
                    "appId": "",
                    "characterId": "",
                    "avatarId": "",
                    "avatarModelId": "",
                    "voiceId": "",
                    "advancedAttributes": {
                        "avatarAudioFormat": "s16"
                    }
                },
                "userProfile": {
                    "userId": ""
                }
            }
        }'

python

import json

import requests

api_key = "your-api-key"
service_name = "aca-videochat-init"

url = "https://nlp.aliyuncs.com/v2/api/videochat/initialize"
headers = {
    "Content-Type": "application/json",
    "x-fag-servicename": service_name,
    "x-fag-appcode": "aca",
    "Authorization": f"Bearer {api_key}"
}
payload = {
    "type": "Avatar",
    "aca": {
        "botProfile": {
            "appId": "",
            "characterId": "",
            "avatarId": "",
            "avatarModelId": "",
            "voiceId": "",
            "advancedAttributes": {
                "avatarAudioFormat": "s16"
            }
        },
        "userProfile": {
            "userId": ""
        }
    }
}
response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(json.loads(response.text))

数据结构

request

参数

类型

是否必选

说明

type

string

通话模式:

Avatar 云端渲染数字人

LocalAvatar 端侧渲染数字人

model

string

LLM模型名称

aca.botProfile.appId

string

租户ID

aca.botProfile.characterId

string

个性ID,从星尘官网获取,应用ID

aca.botProfile.content

string

个性说明,该字段和个性ID必须有一个

aca.botProfile.avatarId

string

从星尘官网获取,数字人ID

aca.botProfile.avatarModelId

string

从星尘官网获取,avatarModelId

aca.botProfile.voiceId

string

从星尘官网获取,语音ID

aca.botProfile.voicePlatform

string

默认是nls,可选值:[nls, minimax]

aca.botProfile.voiceModel

string

aca.botProfile.voicePlatform == 'minimax'时必填

aca.botProfile.outboundSampleRate

long

下发的音频采样率,默认48000

aca.botProfile.advancedAttributes.avatarAudioFormat

string

使用端侧渲染数字人时,可以填此配置,可选值:[s16, f32],建议填写s16,可以降低码率,提高流畅度

aca.userProfile.userId

string

业务自定义用户ID,保持唯一性,建议使用UUID

response

参数

类型

是否必选

说明

requestId

string

request id。

code

int

返回码,正常返回200,异常返回空

success

bool

正常返回 true,异常返回null

data.appId

string

rtc app id

data.nonce

string

rtc nonce

data.timestamp

long

rtc timestamp

data.token

string

rtc token(过期时间24小时)

data.gslb

string

rtc 推流地址

data.channel

string

rtc 频道

data.userIdClient

string

sdk用户id

data.userNameClient

string

sdk用户名

data.userIdVoicechat

string

voicechat用户id

data.userNameVoicechat

string

voicechat用户名

data.userIdAvatar

string

avatar用户id

data.userNameAvatar

string

avatar用户名

资产获取

HTTP

shell

curl --location 'https://nlp.aliyuncs.com/v2/api/videochat/getRTCAvatarAsset' \
--header 'Expect;' \
--header 'accept: */*' \
--header 'Content-Type: application/json' \
--header 'x-fag-servicename: aca-videochat-avatar-get' \
--header 'x-fag-appcode: aca' \
--header 'Authorization: Bearer your-api-key' \
--data '{
            "avatarId": "",
            "type": 2
        }'

python

import json

import requests

api_key = "your-api-key"
service_name = "aca-videochat-avatar-get"

url = "https://nlp.aliyuncs.com/v2/api/videochat/getRTCAvatarAsset"
headers = {
    "Content-Type": "application/json",
    "x-fag-servicename": service_name,
    "x-fag-appcode": "aca",
    "Authorization": f"Bearer {api_key}"
}
payload = {
    "avatarId": "",
    "type": 2
}
response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(json.loads(response.text))

数据结构

request

参数

类型

是否必选

说明

avatarId

string

形象 id。

type

int

1、查询3D avatar

默认:1; 2、查询3D avatar All one

response

参数

类型

是否必选

说明

requestId

string

request id。

code

int

返回码,正常返回200,异常返回空

success

bool

正常返回 true,异常返回null

data.characterModelUrl

String

模型url

type = 1 时返回

data.animationConfig

Map<String, String>

动画配置文件,value值对应的String实际上是json,可以通过SDK调用查看详情

type = 1 时返回

data.backgroundUrl

String

背景url

type = 1 or type = 2 时返回

data.hdrUrl

String

hdr url

type = 1 or type = 2 时返回

data.animationUrl

String

动画url

type = 1 时返回

data.assets

String

资产配置,json字符串

type = 2 时返回

错误码

code

errorMessageKey

errorMessage

431

aca.error.videochat.quota.exceeded

The number of running states exceeds the quota

403

aca.error.avatar.permission.error

Please use the avatar id created with the current account.

403

aca.error.voice.permission.error

Please use the voice id created with the current account.

422

aca.error.videochat.initialize.limit

avatar insufficient resources

500

aca.error.videochat.initialize

initialization failed

400

aca.error.invalid.param

参数错误,动态,具体请参考实际返回内容