共计 1591 个字符,预计需要花费 4 分钟才能阅读完成。
语音驱动虚拟人性能简介
ZEGO Avatar SDK 提供了 语音驱动
性能,通过声音的声波信息,实时驱动以后虚构人物的嘴形变动,使得虚构形象可能和真人一样进行天然的情绪表白。
可广泛应用于社交互动、语聊直播等场景中。
虚拟人语音驱动的前提条件
在实现虚拟人“语音驱动”性能之前,请确保:
- 已在我的项目中集成了 Avatar SDK,详情请参考 集成 SDK。
- 已参考 创立虚构形象,实现根本的虚构人物形象搭建。
虚构形象语音驱动实现流程
开发者请参考以下步骤,实现 虚构形象“语音驱动”性能。
1 开始虚拟人语音检测
- 开始语音检测前,请确认已开启麦克风权限。
- 开发者如果应用了 ZegoCharacterHelper,则无需再调用
ZegoCharacter
的任何相干接口。
搭建出根本的虚构人物形象后,调用 startDetectExpression
接口,设置驱动模式为 Audio
,通过麦克风,开始检测声音稳定;而后能够间接通过 ZegoCharacterHelper 的 setExpression
接口设置表情,驱动以后虚构人物的嘴形变动。
// 开始语音检测
ZegoAvatarService.getInteractEngine().startDetectExpression(ZegoExpressionDetectMode.Audio,expression -> {
// 驱动虚构人物的嘴形变动
mCharacterHelper.setExpression(expression);
});
2 自定义音频采集
开发者能够调用 setCustomAudioDelegate
接口,设置 自定义 的音频数据采集代理(须要继承 AudioDataDelegate
实现 onStart 和 onStop
办法)。采集到音频数据后,调用 sendAudioData
接口,发送数据。
public class CustomAudioDataDelegate extends AudioDataDelegate {
private Boolean isRunning = false;
@Override
public void onStart() {
// 启动音频采集
isRunning = true;
}
@Override
public void onStop() {
// 进行音频采集
isRunning = false;
}
// 这个是 Express 的声音前解决回调,这里间接把 Express 采集的数据给到 Avatar SDK 即可。public void onProcessCapturedAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param) {if(isRunning){
// 填充声音数据
// data: pcm 的原始数据
// length: data 的长度
// dataType: data 采集的位数 0 示意 16 位,1 示意 8 位
// timeStamp: 工夫戳, 从启动采集到以后通过的工夫,单位毫秒。super.sendAudioData(data, dataLength, 1/*rtc 给的数据是 8 位的, 填 1*/, super.getDurationMs()/* 这是个父类办法,间接调用即可。*/);
}
}
}
3 进行语音检测
将利用切换到后盾运行、或退出以后页面时,须要调用 stopDetectExpression
接口,进行语音检测。
// 进行语音检测
ZegoAvatarService.getInteractEngine().stopDetectExpression();
4 获取 ZEGO Avatar SDK 即构虚构形象 更多帮忙
获取本文 ZEGO Avatar SDK 即构虚构形象的开发文档、技术支持,拜访即构文档核心,可驱动虚构形象模仿真人更天然的表白。
近期有开发布局的开发者可上即构官网查看,恰逢即构七周年全线音视频产品 1 折的优惠,分割商务获取“ZEGO Avatar”1 个月收费试用的产品福利;
正文完