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

星塵交互數字人Android SDK標準化文檔

更新時間:

概述

星塵Xingchen-VideoChat-SDK是通義星塵推出的一個實時流媒體數字人Android SDK,具備低延遲、高性能、高并發、跨平臺等優勢, 結合阿里云的RTC、語音交互、渲染引擎、臉部和肢體驅動等技術,提供多種數字人解決方案,幫助企業和開發者快速集成數字人,打造數字人各種場景應用。

產品優勢

  • 高性能低延遲

  • 輕松集成、標準化輸出

產品能力

  • 云端渲染數字人

  • 云端渲染數字人是通過阿里云RTC提供視頻流訂閱,SDK在瀏覽器上拉取視頻流呈現數字人的解決方案。

    • 云端渲染數字人具備完整的語音交互、臉部和肢體驅動能力,提供數字人打斷、多種對話模式。

接入前須知

  • 云端渲染數字人、端測渲染(端到端)數字人的語音交互模式主要有三種模式:push2talk模式、tap2talk模式、duplex雙工模式

  • 在push2talk模式下,用戶需要像類似釘釘發送語音消息那樣,通過發送一段音頻,來觸發語音交互

    • 在tap2talk模式下,SDK內部的語音服務會實時識別用戶的語音輸入。但是用戶想打斷數字人,需要通過額外事件來觸發,比如點擊屏幕,或者點擊某按鈕。

  • 在duplex雙工模式下,SDK內部的語音服務會實時識別用戶的語音輸入。數字人在說話狀態下,仍可以接受用戶的語音打斷信號。

    • 在duplex雙工模式,容易受到外部環境音的影響導致觸發頻繁打斷,請在相對安靜的環境下使用雙工模式。

  • 星塵官網上的ApiKey并沒有包含前綴Bearer 頭,在初始化SDK的時候,請開發者自行添加前綴頭,'Bearer ' + ApiKey, 具體可見如下示例項目中的代碼或快速集成說明。

接入方法

Android Studio接入流程

下載示例工程及SDK aar

從OSS上下載VideoChatSdkDemo壓縮包,并進行解壓

環境配置

  • Gradle版本 8.0

  • Android Gradle Plugin 8.1.3

  • Jdk 17

  • Android Studio的版本要求,只要能支持上述三項的版本均可;其中Mac開發環境下建議使用以下版本

  • Android Studio Iguana | 2023.2.1 Patch 1

加載SDK和依賴,video_chat_sdk-release.aar在示例項目里

// aar直接依賴
implementation files('libs/video_chat_sdk-release.aar')
// OKHttp相關依賴
implementation("com.squareup.okhttp3:okhttp:4.10.0")
implementation("com.squareup.okio:okio:3.0.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.10.0")

權限相關

  • SDK和數字人交互需要用到錄音權限,詳細如下:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Release混淆處理

  • SDK中有部分實現類需要使用Json序列化傳輸,不能做混淆處理,上層應用編譯Release版本時,需要把以下混淆規則補充進去

-keep class com.aliyun.allinone.** {
*;
}

-keep class com.aliyun.rts.network.** {
*;
}

-keep class com.aliyun.common.** {
*;
}

-keep class com.huawei.multimedia.alivc.** {
*;
}

-keep class com.alivc.rtc.** {
*;
}

-keep class com.alivc.component.** {
*;
}

-keep class org.webrtc.** {
*;
}

-keep class com.alibaba.ty.conv.** {
*;
}

-keep class com.tongyi.video_chat_sdk.TYVideoChat {
    private static final *;
}

-dontwarn com.aliyun.aio.keep.API
-dontwarn com.aliyun.aio.keep.CalledByNative

-dontwarn org.bouncycastle.jsse.BCSSLSocket
-dontwarn org.bouncycastle.jsse.BCSSLParameters
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
-dontwarn org.conscrypt.*
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
-dontwarn org.openjsse.net.ssl.OpenJSSE

接口列表

API

功能描述

init

初始化方法,主要用來配置參數

start

初始化成功后,啟動對話流程

interrupt

打斷AI說話

startSpeech

Push2Talk模式 用戶開始說話

stopSpeech

Push2Talk模式 用戶結束說話

cancelSpeech

Push2Talk模式 用戶取消說話

muteLocalMic

是否關閉本地麥克風采集

requestToRespond

請求服務端回答指定問題or做TTS播放出來

exit

退出

接口詳情

init

初始化SDK參數

/**
 * 初始化方法,主要用來配置參數
 * @param authParams RTC鑒權參數
 * @param requestConfig 網關信息參數
 * @return 初始化結果
 */
fun init(activity: Activity, authParams: TYRTCAuthParams, requestConfig: TYRequestConfig): Boolean

參數說明

參數名稱

類型

是否必傳

描述

activity

Activity

活動實例

authParams

TYRTCAuthParams

數字人配置參數

requestConfig

TYRequestConfig

數字人鑒權的配置

其中TYRTCAuthParams為數字人配置參數,詳細信息為

參數名稱

類型

是否必傳

描述

modelId

String

模型Id,默認xingchen-plus-v2

voiceId

String

音色Id,從星塵官網獲取

avatarId

String

數字人Id,從星塵官網獲取

mode

TYVoiceChatMode

對話模式,默認為tap2talk

appId

String

租戶Id

characterId

String

個性id,和Content必須傳一個,從星塵官網獲取

content

String

個性Content,和characterId必須傳一個

userId

String

業務自定義Id,保證唯一性即可,建議使用UUID賦值

useRtcAec

Boolean

是否開啟RTC內置AEC,默認開啟

outboundSampleRate

Int

TTS音頻采樣率,默認為48000

extras

Map<String, Any>

擴展消息

TYVoiceChatMode表示對話模式,是枚舉類型,詳細定義為

/**
 * 會話模式
 */
object TYVoiceChatMode {
    const val TAP2TALK = "tap2talk" // 默認方式,一方說完,另一方可以說話
    const val PUSH2TALK = "push2talk" // 用戶主動開始和結束說話
    const val DUPLEX = "duplex" // 全雙工模式,可語音打斷
}

其中TYRequestConfig為數字人鑒權的配置參數,詳細信息為

參數名稱

類型

是否必傳

描述

url

String

鑒權地址,默認為https://nlp.aliyuncs.com/v2/api/videochat/initialize

headers

Map<String,String>

鑒權Headers,主要為從星塵官網獲取的AppKey

此處提供Init參考示例

注意點:Headers.Authorization中應包含"Bearer "+ ApiKey,ApiKey可以通過“星塵-我的空間-密鑰管理”獲取"

/*星塵網關示例 端上sdk可控制的參數*/
"authParams": {
    // appId,當前不做校驗,鑒權信息放在Header里
    "appId": "",
    // 數字人Id,必傳
    "avatarId": "video-chat-tianyou",
    // 個性Id,當前不做校驗,characterId和content必須傳一個
    "characterId": "123",
    "content": "",
    // 通話模式,必傳
    "mode": "tap2talk",
    // LLM大模型ID,必傳
    "modelId": "xingchen-plus-v2",
    // 數字人音頻播放采樣率
    "outboundSampleRate": 48000,
    // 是否開啟RTC內置的AEC,默認開啟
    "useRtcAec": true,
    // 用戶ID,不做權限校驗,保證唯一性即可,建議使用UUID傳入
    "userId": "lxx",
    // 音色Id,必傳
    "voiceId": "longxiaochun"
},
"requestConfig": {
    // Header中預置鑒權信息
    "headers": {
        // 'Bearer ' + '在此處填入ApiKey'
        "Authorization": "鑒權信息,通過“星塵-我的空間-密鑰管理”獲取",
        "x-fag-appcode": "aca",
        "x-fag-servicename": "aca-videochat-init"
    },
    // 星塵網關的地址
    "url": "https://nlp.aliyuncs.com/v2/api/videochat/initialize"
}

start

初始化成功后,啟動對話流程

/**
 * 初始化成功后,啟動對話流程
 * @param chatCallback 主回調,除了初始化過程的所有消息,都會從這里透出給上層
 */
fun start(chatCallback: IChatCallback)

參數名稱

類型

是否必須

描述

chatCallback

IChatCallback

活動實例

其中IChatCallback為主回調,除了初始化接口,所有消息都會從這里透出給上層,詳細接口為

  • onStartResult

對話啟動結果,鑒權、客戶端加入通道成功后,會回調該消息

/**
 * 對話啟動結果,鑒權、客戶端加入通道成功后,會回調該消息
 */
fun onStartResult(isSuccess: Boolean, errorInfo: TYError?)

其中TYError的格式為

參數名稱

類型

是否必須

描述

key

Int

錯誤信息Key

message

String

錯誤信息Message

  • onReadyToSpeech

對話準備完成,三端(客戶端/VoiceChat/Avatar)均加入通道后,會回調該消息,此時才能調用業務接口

/**
 * 對話準備完成,三端(客戶端/VoiceChat/Avatar)均加入通道后,會回調該消息,此時才能調用業務接口
 */
fun onReadyToSpeech()

  • onGotRenderView

RTC準備好的渲染組件,需要調用者把它顯示到屏幕上

/**
 * RTC準備好的渲染組件,需要調用者把它顯示到屏幕上
 */
fun onGotRenderView(renderView: SurfaceView)

  • onInterruptResult

主動打斷的回調,包括手動打斷和語音打斷

/**
 * 主動打斷的回調,包括手動打斷和語音打斷
 */
fun onInterruptResult(isSuccess: Boolean, errorInfo: TYError?)

參數名稱

類型

是否必須

描述

isSuccess

Boolean

True or False

errorInfo

TYError

錯誤信息,若接口成功,該項可能為空

  • onStateChanged

數字人狀態切換

/**
 * 狀態切換
 */
fun onStateChanged(state: DialogState)

其中DialogState為數字人狀態,詳細信息如下

public static enum DialogState {
        DIALOG_IDLE(0),// IDLE狀態
        DIALOG_LISTENING(1),// 數字人在聽
        DIALOG_RESPONDING(2),// 數字人在說
        DIALOG_THINKING(3);// 數字人在想
}

  • onVolumeChanged

音頻強度回調

/**
 * 音量強度回調
 * @param audioType 參考 {@link Constant.TYVolumeSourceType}
 * @param audioLevel 0-100
 */
fun onVolumeChanged(audioLevel: Float, audioType: Constant.TYVolumeSourceType)

參數名稱

類型

是否必須

描述

audioLevel

Float

音頻強度,歸一到【0,1】區間

audioType

TYVolumeSourceType

音頻類型

其中TYVolumeSourceType為枚舉類型,詳細信息如下

/**
 * 語音類型,分為本地采集和遠端TTS兩種
 */
enum class TYVolumeSourceType {
    MIC, // 本地采集
    PLAYER // 遠端TTS
}

  • onMessageReceived

對話過程中的文本詳情回調

/**
 * 對話的文本詳情回調
 * @param chatMessage
 */
fun onMessageReceived(chatMessage: TYVoiceChatMessage)

其中TYVoiceChatMessage為文本詳情封裝類,詳細信息如下

參數名稱

類型

是否必須

描述

chatMessageType

ChatMessageType

消息類型

chatMessageText

String

消息文本

isFinish

Boolean

是否結束,用戶說/AI說每次會返回當前已識別到的全部內容,說完后,該標志位為true

其中ChatMessageType為枚舉類型,詳細信息如下

/**
 * 消息類型,分為用戶說/AI說兩種
 */
enum class ChatMessageType {
    SPEAKING, // 用戶問
    RESPONDING // AI回答
}

  • onErrorReceived

對話過程中的異常回調

/**
 * 對話過程中的異常信息
 * @param errorInfo 異常信息
 */
fun onErrorReceived(errorInfo: TYError)

interrupt

打斷數字人說話,異步方法,打斷結果會通過回調返回

/**
 * 打斷數字人說話
 */
fun interrupt()

startSpeech

Push2Talk模式下,用戶開始說話

/**
 * Push2Talk 用戶開始說話
 */
fun startSpeech()

stopSpeech

Push2Talk模式下,用戶說話完成

/**
 * Push2Talk 用戶結束說話
 */
fun stopSpeech()

cancelSpeech

Push2Talk模式下,用戶取消說話

/**
 * Push2Talk 用戶取消說話
 */
fun cancelSpeech()

muteLocalMic

是否關閉本地麥克風采集

/**
 * 是否關閉本地麥克風采集
 */
fun muteLocalMic(mute: Boolean): Boolean

requestToRespond

請求服務端回答指定問題or做TTS播放出來

/**
 * 請求服務端回答指定問題or做TTS播放出來
 * @param type: transcript 表示直接把文本轉語音,prompt 表示把文本送大模型回答
 * @param text:對應的文本
 */
fun requestToRespond(type: String, text: String)

exit

退出SDK,退出頁面時必須調用該方法,否則會導致實例未釋放,功能會出現異常

/**
 * 銷毀實例
 */
fun exit()

附錄

錯誤碼

網關服務錯誤

云端渲染、端測渲染(端到端)數字人錯誤碼

錯誤碼

錯誤名稱

錯誤說明

解決方案

400

aca.error.invalid.param

初始化參數錯誤,參考返回的錯誤信息

重新在星塵官網確認相關參數

401

用戶未認證

ApiKey錯誤

1、在星塵官網上確認自己的apiKey是否正確 2、確認SDK初始化的ApiKey有沒有加'Bearer '

465

aca.error.not.paas.whitelist

沒有開通白名單

聯系郵箱tongyixingchen@service.aliyun.com

403

aca.error.avatar.permission.error

沒有形象的使用權限

請確認賬號是否擁有形象使用權限

403

aca.error.voice.permission.error

沒有聲音的使用權限

請確認賬號是否擁有聲音使用權限

422

aca.error.videochat.initialize.limit

數字人資源不足

請聯系產品運營同學進行錯誤排查

431

aca.error.videochat.quota.exceeded

超過運行狀態數限制

同一個賬號同時開啟的會話有數量限制,需要更多請聯系產品運營同學

500

aca.error.internal.exception

內部服務錯誤

請聯系產品運營同學進行錯誤排查

501

aca.error.gateway.exception

服務端驗證ApiKey失敗

1、在星塵官網上確認自己的ApiKey是否正確 2、確認SDK初始化的ApiKey有沒有加 'Bearer '

RTC錯誤

錯誤碼

錯誤說明

是否斷連

解決方案

1000

RTC初始化參數錯誤

檢查SDK內部調用星塵initialize初始化的接口返回

1001

RTC鑒權失敗

檢查SDK內部調用星塵initialize初始化的接口返回

語音服務錯誤

錯誤碼

錯誤說明

是否斷連

解決方案

40000000

客戶端錯誤

數字人執行退出操作,重新初始化數字人實例

40000001

參數不合規、檢查參數

40000002

指令不支持,如指令名稱錯誤

40000003

指令不合規,如指令格式錯誤

40000004

連接錯誤

40010000

拒絕訪問

40010001

未授權

40020000

語音輸入或輸出違規

繼續對話

40030000

對話靜默超時

數字人執行退出操作,重新初始化數字人實例

50000000

服務內部錯誤

50000001

服務內部錯誤

50010000

語音識別內部錯誤

繼續對話

50020000

大模型內部錯誤

50030000

語音合成內部錯誤

50040000

數字人內部錯誤

數字人執行退出操作,重新初始化數字人實例

50040001

數字人初始化失敗

50040002

數字人初始化超時

兼容性

  • 本SDK最低支持Android 8.0機器,即minSdk 26