新需求:怎样使用全篇开口说话的视频来训练数字人?
现在拿到的是人物连续演讲的视频,现有逻辑在推理的时候会重新匹配口型,没有问题。但是在没有说话时候,嘴巴闭合无法避免。 采用自定义视频很难衔接的圆滑。各位大佬有办法吗?
我也遇到了这个需求,有较好的解决方法吗?
目前还没有看到,应该需要训练。
可以用静音进行推理,就会得到闭嘴的
使用静音数据(我在ttsreal中传入全0数据15秒),输出的人像此时会有不到1秒的卡顿,但还是开口的。好像没有达到输出闭嘴图片的效果。还请 @chenkai89 指导一下
通过静音音频推理得到闭嘴的视频,再用闭嘴的视频生成数字人头像信息,再使用这个数据进行实时推理
感谢chenkai89的持续回答。第一步采用静音音频推理得到闭嘴的视频,这一步没有成功。出来的视频还是开口讲话的。你是怎么具体操作来获得闭嘴视频的?
我是用了wav2lip256模型进行推理的,首先确定你的素材多长,假设你的素材11秒,你就使用ffmpeg 生成11秒的静音音频,通过静音音频和素材进行推理,wav2lip256自带了推理功能,当然我认为其他版本的wav2lip都是存在推理功能的,这样就得到闭嘴的视频,再用这个闭嘴的视频构建数字人。当然效果肯定不能和源视频相比的。如果精确一点,那就把视频分成多段,只推理讲话那部分,再把视频合并,这样效果会更好些
感谢 @chenkai89 。我原先采用muse,用静音没有变化。现在采用wav2lip可以有效果。但不是很好。生成的闭嘴视频很模糊啊,估计还需要参数的调优。的确,需要好的效果,还是拍摄闭口视频为上。
生成的视频。
采用的1280*720 22秒的视频,人脸截取的是512,出现了torch.Size([32, 512, 1, 1])
torch.Size([32, 512, 5, 5])
Exception in thread Thread-4 (inference):
Traceback (most recent call last):
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\threading.py", line 1016, in _bootstrap_inner
self.run()
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "D:\code\LiveTalking-main\lipreal.py", line 167, in inference
pred = model(mel_batch, img_batch)
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\site-packages\torch\nn\modules\module.py", line 1130, in _call_impl
return forward_call(*input, **kwargs)
File "D:\code\LiveTalking-main\wav2lip\models\wav2lip_v2.py", line 150, in forward
raise e
File "D:\code\LiveTalking-main\wav2lip\models\wav2lip_v2.py", line 146, in forward
x = torch.cat((x, feats[-1]), dim=1)
RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 1 but got size 5 for tensor number 1 in the list.
DEBUG:logger:sleep qsize=7
Traceback (most recent call last):
File "D:\code\LiveTalking-main\app.py", line 374, in
super().run_forever()
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\asyncio\base_events.py", line 603, in run_forever
self._run_once()
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\asyncio\base_events.py", line 1871, in _run_once
event_list = self._selector.select(timeout)
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\asyncio\windows_events.py", line 444, in select
self._poll(timeout)
File "C:\Users\LLM\anaconda3\envs\nerfstream\lib\asyncio\windows_events.py", line 797, in _poll
status = _overlapped.GetQueuedCompletionStatus(self._iocp, ms) 张量不一致怎么解决呀