1. 初始化

使用平台账户中提供的appId和appSecret初始化模块并获取Play对象

VirtualFactory.init("your appId", "your appSecret")
player = VirtualFactory.getPlayer(mContext, eglBaseContext)

2. 连接数字人

使用平台账号提供的conversationId连接数字人

    player?.addCallback(callback)
    player?.connect("your conversation id")

其中callback包含如下回调

onShow 数字人可以展示了

void onShow();

onError 连接数字人发生异常

void onError(int msgType, int msgSubType, String msg);

返回参数说明:

参数名类型说明
msgTypeint错误类型
msgSubTypeint子错误类型
msgString异常消息

其中msgType的取值:

取值说明
1000授权异常
1001创建会话异常
1002获取素材异常
1010IM创建连接失败
1011渲染服务返回异常
1020RTC 状态异常
1030渲染服务主动关闭
1040IM连接丢失
1050RTC连接丢失

onVideoTrack RTC媒体通道创建成功

在该回调中展示数字人控件绑定到track中

void onVideoTrack(VideoTrack track);
参数名类型说明
trackVideoTrack视频媒体通道

onAudioSamples 本地音频采集数据回调

可在该回调中实现音频图像化等操作

default void onAudioSamples(int audioFormat, int channelCount, int sampleRat, byte[] data){}

onTtsSpeakStart 数字人开始播放TTS合成音频

default void onTtsSpeakStart(){}

onTtsSpeakText 数字人播放TTS的文本内容

default void onTtsSpeakText(String text){}

onTtsSpeakStop TTS文本播放完成

default void onTtsSpeakStop(){}

onSpeakStart 数字人开始播报

default void onSpeakStart(){}

onSpeakText 数字人播报的文本内容

default void onSpeakText(String text){}

onSpeakStop 数字人播报完成

default void onSpeakStop(){}

onAsrResult ASR识别内容回调

default void onAsrResult(String text, boolean sentenceEnd){}

3. 音频URL驱动数字人说话

使用16k采样率16bit单通道的WAV音频地址驱动数字人说话

player?.speakWithWav(wavUrl, true)
参数名类型说明
wavUrlStringWAV音频的网络地址
interruptboolean是否打断当前说话状态

4. 文本驱动数字人说话

输入想要数字人想说的话,数字人会根据会话配置的音色说出对应的内容。

player?.speakWithTxt(text, true)
参数名类型说明
textString数字人的要说的文本内容
interruptboolean是否打断当前说话状态

5. 数字人问答

让数字人来解答您的疑问。

player?.speakWithQuestion(text, true)
参数名类型说明
textString向数字人表达您的问题
interruptboolean是否打断当前说话状态

6. 打断数字人说话

让数字人不要再说了

player?.stopAudio()