
在使用heygem客户端定制数字人模特时提交的训练数据是传到本机的 D:\heygem_data\face2face\temp\ 和 D:\heygem_data\voice\data\origin_audio 目录下,而数字人后端服务在解析训练数据时使用的是对应的本机路径,所以当服务端和客户端安装在不同机器上时服务器是无法读取到提交的音视频数据的,这时就会报错。
针对以上问题我们只要改造下客户端的提交定制功能让上传的训练数据同时复制一份到服务端所在机器的相同记录即可。
在服务端我们需要启动一个服务用于接收客户端提交过来的文件数据,这里选用go语言的Gen框架来实现这个功能。
在trae的chat模式中输入改动需求:新建一个请求处理可以接收mp4文件存到当前目录下的tmp文件夹中


可以看到trae帮我们写好了请求代码,点击应用就可以追加到当前的文件中。
然后同时也需要上传音频文件,所以让trae来优化一下代码:优化upload-mp4请求让它可以支持wav文件上传。

这里同样直接应用就可以。
接着在命令行执行go run xxx.go启动这个服务。
使用trae打开heygem项目,找到 src\main\service\model.js 这个文件,addModel 就是我们需要修改的方法。
找到// 用ffmpeg分离音频这个注释,在这行注释上方追加注释:
`// 上传视频到本地接口`光标停在追加的注释上面,然后在chat中输入“实现这个功能”。接着就可以等待结果

第一次应用修改之后可以发现控制台有如下报错:

接着我们把错误信息粘贴到chat中让它修复:

然后直接应用修复结果,可以发现报错消失了,客户端正常启动。
在客户端中定制模特,选择文件后提交定制可以看到文件传到了服务端项目的tmp目录下

heygem客户端在定制时会以时间戳重命名文件,所以可以在tmp目录下看到类似命名的mp4文件。

这里说明文件已经成功上传到服务端了,接着我们用类似的方式来处理wav音频文件并修改服务端文件的上传路径。

然后这里是有问题的,因为wav文件是用ffmpeg分离出来的,所以在这个位置实际上音频文件还不存在,要调整一下上传音频文件代码的位置到extractAudio方法的后面:

服务端则要增加判断,修改下音频文件的保存位置:

然后我们再次打包,注意要把上传服务的127.0.0.1改成内网机器的ip:

最后安装完运行,可以成功定制数字人模特了。

目前这样修改之后就可以在局域网内的一台机器上部署heygem数字人后端服务,然后其它机器安装客户端远程使用服务来生成数字人短视频了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。