- 任务核心:音频与对应视频帧需要同步
- 直接对着相机说话的单说话人视频
- 参数信息
- 分辨率信息:4K
- 编码信息: mp4等编码格式(cv2可以直接处理的编码格式)
- 语种
- 主要目标是亚洲人
- 主要语言普通话(mandarin)最好
- 背景没有需求
- Take special notice !!!
- 背景音:当说话人正在说话或者停止说话时一直有背景噪声,这种数据不能要
- 说话人要求:在一个场景中只能有一个说话人存在,多人说话场景是无效的
- 可以将整个流程分为
- 预处理模块
- 任务处理模块
- 后处理模块
- 目标
- 总的来说:主要得到纯说话人的视频片段
- 视频需要符合下面条件:
- 不含无人脸场景片段
- 不含多人脸场景片段
- 不含人在说话或者静默时背景的噪声(声音降噪)
- 方法
- 目前采用方法:
- 第一阶段:扫描视频,按10帧读取一次的方式,记录每次没有人脸以及多人脸的index
- 第二阶段:根据index区间,起始和终止位置往两侧延伸5s(多丢10s)标记为要丢弃的segment
- 第三阶段:ffmpeg工具裁掉要丢弃的segment,然后拼接视频(目前存在问题,对于一个无人脸的转场segment不能随意拼接)
- 第四阶段:设定clip duration,对拼接的视频进行clip
- 需要改进
- 设置两个阈值max/min clip duration
- max duration:最大不超过这个阈值,超过触发保存视频
- min duration:最小不低于这个阈值,低于丢弃视频片段
- 逐帧检测视频(效率低可选择跳帧检测),遇到无人脸的部分进行片段长度判断舍弃还是保存(使用ffmpeg剪切)
- 设置两个阈值max/min clip duration
- 目前采用方法:
- 目标
- 对视频进行人脸检测并剪切得到人脸剪切数据集
- 对声音进行提取,提取特征文件
- 方法
- 检测人脸得到landmark,根据landmark检测人脸并进行crop
- 根据需求,判断是否需要对人脸做对齐,crop后是否需要resize**(resize要谨慎选择,详解三种方式的插值)**
- 注意
- 由于人脸的分辨率过高,直接检测可能显存消耗,先将人脸进行resize,再进行
- 目标
- 将处理得到的帧和音频特征进行处理符合Loader的方式
- 方法
- 数据清洗(以DINet为例)
- 数据要求
- 将一个视频数据切为帧,按照9帧为一个片段存在按顺序命名的目录中(每个目录必须9帧)
- 1帧对应9帧的deepspeech特征,每个特征为29维度
- 操作
- 去掉不为9帧的目录
- 确保语音的长度特征对应的帧要大于或者等于crop face的帧数,因为是按照face读取数据的,去掉语音比帧数短的目录
- 数据要求
- 数据清洗(以DINet为例)
- 注意
- 由于帧数必须是9的倍数,对video进行clip的时候,可以尽量向9的倍数靠拢,减少丢掉的帧
- 由于音频长度可能不取整,留下一个毫秒级别的尾巴(这个尾巴可能被算作一帧),这个时候需要将视频的尾巴去掉,不然会造成语音特征比帧数少的问题
- 根据不同的任务需求
- convert_fps:首先得到25fps的视频
- **clean_video + clip:**对视频的每帧进行检测,检测不含人脸的帧,以及多人脸的帧,然后将较长的视频进行分段处理
- **crop:**分段后根据任务需求进行crop提取音频等操作