Git Product home page Git Product logo

xuzhitong89 / dataset_generator_for_vits Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fatfish588/dataset_generator_for_vits

0.0 0.0 0.0 2.34 MB

基于达摩院视频切割技术的视频转换为短音频的vits数据集生成工具 A VITS Dataset Generation Tool for Converting Video to Short Audio Based on Damo Academy Video Cutting Technology

License: MIT License

Shell 61.78% Python 38.22%

dataset_generator_for_vits's Introduction

Dataset_Generator_For_VITS

基于达摩院视频切割技术的视频转换为短音频的vits数据集生成工具
A VITS Dataset Generation Tool for Converting Video to Short Audio Based on Damo Academy Video Cutting Technology

介绍

在现在的vits语音模型训练的步骤中,标注、清洗和训练框架都有不少很棒的项目可供学习和使用,但是在数据集的准备这一项好像还没有多少人去探究。手动准备动辄几百成千上万条短音频的数据集,对于一些只想听听自己喜欢的主播、恋人等声音的vits普通爱好者来说是基本不现实的。此前(2023.10)唯一开源且能用的音视频切片机还是VITS-fast-fine-tuning快速微调中内嵌的一套基于whisper的切片机,因为耦合度较大,导致也只能在快速微调自己的项目中使用,而无法适配其他如bert-vits2等项目。

综上所诉,我尝试着基于阿里达摩院FunASR-APP的ClipVideo作简单修改,制作了这个小工具,希望能补上国内vits训练圈子的一块拼图,您只需要一个人物或者角色的音频与视频,不管多长无论多大,有一点背景音乐也无妨,就算音视频混在一起放入指定目录都没问题,然后点击运行,就可以获得一系列1~10秒的短音频,这些音频完全可以直接送入其他用于标注的项目进行下一步准备。

1、本项目基于阿里达摩院FunASR-APP的ClipVideo简单修改制作,其原理是使用ClipVideo通过文字去一个视频中裁剪出对应的那句话的音视频(美妙的技术),并且可以指定音频的开始和结尾偏移量,在中文方面比whisper效果更好,不会出现尾音最后一个音只有一半的情况。
2、本项目的输出都在根目录下ClipVideo/output/中,包含了切割后的音视频和每个视频对应的字幕文件,需要的话可以使用。
3、本项目比较简单,所以从输入视频到输出音频数据集是连续的,如果有参数和自己想要的不一样可以自行修改,例如要修改第一条中的偏移量,可在Dataset_generator.py的前半部分修改,默认是不偏移直接截取。

下图是效果展示,使用GPU加速的情况下2两分钟生成600句短音频.
7月10日

更新日志

2023/10/12
1、现在可以把音频(.wav)和视频(.mp4)一起混合放进video_files中直接运行了!生成器会安排好所有事!
2、增加了demucs人声分离,现在可以接受浅bgm的视频与音频进行处理,哦对,不可以用在唱中文的背景音乐视频,因为歌词也会被识别并切片。
3、增加了初始化输目录的功能,生成器会先把除了video_files以外的目录清空再运行,你只需要开始运行就好了,一切交给生成器!

教程

1、克隆此仓库(python版本3.10,3.8往后应该都行)

git clone https://github.com/Fatfish588/Dataset_Denerator_For_VITS.git

创建所需要的目录,windows直接新建文件夹就好了

mkdir ClipVideo/font
mkdir ClipVideo/clipvideo/video_files
mkdir ClipVideo/clipvideo/output
mkdir ClipVideo/clipvideo/input
mkdir ClipVideo/clipvideo/input/mdx_extra
mkdir ClipVideo/clipvideo/org_wav
mkdir ClipVideo/clipvideo/output/mp4
mkdir ClipVideo/clipvideo/output/srt
mkdir ClipVideo/clipvideo/output/wav

此时,这部分结构应该如下图,以下操作都处于Dataset_Generator_For_VITS根目录下
image

2、安装环境依赖

# install modelscope
pip install "modelscope[audio_asr]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html  
# python environments  
pip install -r ClipVideo/requirments.txt
pip install torchaudio 
pip install demucs~=4.0.0
pip install umap
pip install hdbscan  
# 下载字体(给webUI的字幕镶嵌用的)  
wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ClipVideo/STHeitiMedium.ttc -O ClipVideo/font/STHeitiMedium.ttc  

如果想用GPU加速(尤其是降噪)需要对应的torch和cuda,因为大家的显卡各不相同,这里只提供一个我的作为参考:RTX 4090 + cuda11.7

pip install torch==2.0.1+cu117 torchaudio==2.0.2+cu117 torchvision==0.15.2+cu117  --extra-index-url https://download.pytorch.org/whl/cu117

3、启动一次webUI,这一步是为了让FunASR-APP自动下载视频转文字的相关模型,此步骤下载模型比较耗时,进度条卡住不动是正常情况,稍等就好,模型来自阿里的服务器,可能需要关掉魔法。

python ClipVideo/clipvideo/gradio_service.py

成功打开webUI则说明FunASR-APP的依赖准备完成了

4、将要处理的音频或视频全部放入video_files目录下,支持多个视频音频混合处理,只要确保都是一个人的声音就好。
image

5、开始运行

python ClipVideo/clipvideo/Dataset_generator.py 

6、运行完成后,结果保存在ClipVideo/clipvideo/output/wav目录下
image

后续计划

1、添加降噪模型,将支持带背景音乐的视频输入。(已完成)
2、一键恢复初始化状态,免得每次都要手动清空。(已完成)
3、优化代码,目前是步骤太多太繁杂了。
4、从视频一键生成到音频数据集和标注训练集(大概率鸽了)

碎碎念

1、本项目目前只支持中文的,背景音乐不大或者是纯音乐的音频与视频,例如有声书、教程类的视频、科普类视频、虚拟主播的聊天回(天呐她们能和弹幕聊整整6个小时)等等。
2、本项目只是将长视频生成几秒钟的短音频数据集,减少了手动切片的时间,并不带标注、重采样、生成训练集的功能。
3、本项目生成的文件名字是Paraformer模型听写出来的,只是用作区分文件而已,并不是百分百准确,不推荐直接拿文件名去当训练集。
4、请确保ClipVideo/clipvideo/目录下的video_files、output/mp4、output/srt、output/wav这4个目录存在,生成器现在会在每次点击运行时去清空它们,但是需要在第一次运行前先创建好它们,在这之后就不用管它们了。
5、代码超简单的,每个方法都有备注,有些功能不需要比如降噪部分可以自己修改。
6、关注永雏塔菲喵,关注永雏塔菲谢谢喵。

相关链接:

Paraformer视频自动切片与字幕(创空间)———阿里达摩院
FunASR-APP(GitHub)

dataset_generator_for_vits's People

Contributors

fatfish588 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.