TMElyralab / MuseTalk

MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting
Other
1.85k stars 224 forks source link

训练数据预处理问题 #70

Closed ljiqy closed 1 month ago

ljiqy commented 1 month ago

你好,我做训练数据预处理时,我的视频总共1827帧,对音频进行whisper_feature = audio_processor.audio2feat(audio_path)操作后得到的维度是(3649, 5, 384),再进行whisper_chunks = audio_processor.feature2chunks(feature_array=whisper_feature,fps=fps)操作后得到的维度是(1829,50,384),都和我的视频帧数对不上,我理解npy数量应该和png数量一样吧,请问您那边保存的npy文件是从哪个变量得到的?

jinqinn commented 1 month ago

你看下我的修复,在pull request中,没有通过。

itechmusic commented 1 month ago

你好,我做训练数据预处理时,我的视频总共1827帧,对音频进行whisper_feature = audio_processor.audio2feat(audio_path)操作后得到的维度是(3649, 5, 384),再进行whisper_chunks = audio_processor.feature2chunks(feature_array=whisper_feature,fps=fps)操作后得到的维度是(1829,50,384),都和我的视频帧数对不上,我理解npy数量应该和png数量一样吧,请问您那边保存的npy文件是从哪个变量得到的?

针对您提供的这个case。 视频共有1827帧,换算成秒数大约是73.08秒。理论上,音频帧数应该是3654个(73.08 * 50),但实际上只有3649个音频帧。 这表明从MP4文件中提取的音频采样点与视频帧数之间存在无法完全对齐的问题。 具体来说,就是1827帧图片,对应着前(1827,50,384)维的特征,后面两个音频特征在使用时忽略就好。 同时,我们在处理训练数据时也会剔除(视频帧X2-音频帧)>10的case。

itechmusic commented 1 month ago

你看下我的修复,在pull request中,没有通过。

感谢您的分享。(3649, 5, 384)的特征,按照您的写法会变(1827, 50, 384),在这个例子(2视频帧>音频帧)上适用。 但是在批量处理视频的时候,也会遇到一些(2视频帧<音频帧)的case,这里我们选择多滑一次,保留更多trunck。

ljiqy commented 1 month ago

你好,我做训练数据预处理时,我的视频总共1827帧,对音频进行whisper_feature = audio_processor.audio2feat(audio_path)操作后得到的维度是(3649, 5, 384),再进行whisper_chunks = audio_processor.feature2chunks(feature_array=whisper_feature,fps=fps)操作后得到的维度是(1829,50,384),都和我的视频帧数对不上,我理解npy数量应该和png数量一样吧,请问您那边保存的npy文件是从哪个变量得到的?

针对您提供的这个case。 视频共有1827帧,换算成秒数大约是73.08秒。理论上,音频帧数应该是3654个(73.08 * 50),但实际上只有3649个音频帧。 这表明从MP4文件中提取的音频采样点与视频帧数之间存在无法完全对齐的问题。 具体来说,就是1827帧图片,对应着前(1827,50,384)维的特征,后面两个音频特征在使用时忽略就好。 同时,我们在处理训练数据时也会剔除(视频帧X2-音频帧)>10的case。

感谢您的回复,我还有一个问题,就是我在准备训练数据的时候需要保存npy文件,每个npy文件应该是要按顺序保存whisper_feature里的(2, 5, 384)对吗?因为我看推理的时候get_sliced_feature函数选的是(10, 5, 384),而训练的DataLoader.py里是选的相邻的总共5个npy,所以每个npy应该是(2,5,384)。这样理解对吗?