Aivis:AI声音模仿系统的创新之旅

news2024/11/29 18:41:16

在人工智能技术的不断进步中,声音合成技术也迎来了新的发展机遇。Aivis项目正是这一领域的杰出代表,它提供了一个全流程的工具,让用户能够从数据集的创建到学习再到推理,一站式地生成逼真的语音。

Aivis是一个基于Bert-VITS2模型的系统,它通过自动化的流程,大幅减少了从一般音源创建学习用数据集所需的工作量和时间。Aivis的设计理念是简化数据准备过程,并通过Web UI简化最终的人工注释工作,使得用户即使没有专业知识也能轻松创建高质量的语音数据集。系统具有以下特点:

  • 自动化数据准备:Aivis利用AI技术自动化了从普通音源创建数据集的过程,包括背景噪音的去除和语音的分割。
  • 高质量的语音生成:即使是使用Aivis创建的较短数据集训练的模型,也能生成与专用语音库训练出的模型相媲美的高质量语音。
  • 易于使用的Web UI:Aivis提供了一个Web界面,使用户能够轻松地进行数据集的最终编辑和注释。

安装与使用

安装Aivis

系统要求

Aivis主要在Linux(Ubuntu 20.04 LTS)x64环境下进行了测试。对于Windows用户,建议使用WSL2。此外,Aivis的运行需要NVIDIA GPU支持。

安装步骤
  1. 安装基础软件

    • Git
    • Python 3.11
    • Poetry
    • FFmpeg
  2. 获取Aivis项目代码

    git clone --recurse https://github.com/tsukumijima/Aivis.git

  3. 创建Python虚拟环境并安装依赖

    cd Aivis
    poetry env use 3.11
    poetry install --no-root

  4. 更新已安装的环境: 如果需要更新到最新版本,可以使用以下命令:

    git pull
    git submodule update --init --recursive
    poetry install --no-root

Docker安装

对于希望使用Docker的用户,需要先安装Git和Docker。然后执行以下命令:

  1. 获取Aivis项目代码

    git clone --recurse https://github.com/tsukumijima/Aivis.git

  2. 构建Docker镜像

    cd Aivis
    ./Aivis-Docker.sh build

  3. 使用Docker运行Aivis

    ./Aivis-Docker.sh --help

使用Aivis

数据集准备
  1. 将音源文件放入01-Sources目录下。支持多种音频格式,系统会自动转换为wav格式。

  2. 如果音源文件较长,建议分割成10分钟左右的小文件,以提高转录精度。

数据集预处理和分割

使用以下命令进行音频的预处理和分割:

# Non-Docker
./Aivis.sh create-segments

# Docker
./Aivis-Docker.sh create-segments

这个命令会去除背景BGM和噪音,并将音频分割成单独的句子。

数据集创建(注释)

通过以下命令启动Web UI,进行手动注释:

# Non-Docker
./Aivis.sh create-datasets '*' 'MySpeaker1,MySpeaker2'

# Docker
./Aivis-Docker.sh create-datasets '*' 'MySpeaker1,MySpeaker2'

在这里,*代表03-Segments目录下的所有子目录,MySpeaker1,MySpeaker2是创建数据集的说话者名称。

模型训练

使用以下命令开始模型训练:

# Non-Docker
./Aivis.sh train 'MySpeaker1' --steps 8000 --batch-size 4

# Docker
./Aivis-Docker.sh train 'MySpeaker1' --steps 8000 --batch-size 4

在这里,--steps指定了训练的步数,--batch-size指定了训练时的批量大小。

模型推理

使用以下命令启动推理用的Web UI:

# Non-Docker
./Aivis.sh infer 'MySpeaker1' --model-step 5000

# Docker
./Aivis-Docker.sh infer 'MySpeaker1' --model-step 5000

在这里,--model-step指定了使用哪个步数的模型进行推理。

注意事项

  • 确保安装了所有必要的依赖项和库。
  • 在使用Docker时,确保Docker环境配置正确。
  • 在训练模型时,根据GPU的性能调整batch-sizesteps参数。
  • 推理时,可以通过调整--model-step来使用不同训练阶段的模型,以获得最佳效果。

数据集目录结构

Aivis的数据集目录结构分为五个主要部分,每个部分都有特定的作用:

  1. 01-Sources - 存放原始音源文件。

  2. 02-PreparedSources - 存放预处理后的音源文件和转录文本。

  3. 03-Segments - 存放分割后的音源文件。

  4. 04-Datasets - 存放最终的手动创建的数据集。

  5. 05-Models - 存放训练生成的模型。

各部分详细说明

01-Sources

  • 作用:这是存放将要制作成数据集的原始音源文件的目录。

  • 内容:可以是任何格式的音频文件,系统会自动将其转换为wav格式。

  • 处理:无需事先去除背景音乐或噪音,也无需分割音频文件,这些工作会在后续步骤中自动完成。

02-PreparedSources

  • 作用:存放经过预处理的音频文件和对应的转录文本。

  • 内容

    • 音频文件:经过背景噪音去除和格式转换后的wav文件。

    • 转录文本:使用语音识别技术生成的文本,格式为JSON。

  • 命名规则:音频文件和转录文本的文件名与原始音源文件名相对应。

03-Segments

  • 作用:存放根据转录文本分割后的音频文件。

  • 内容:每个分割的音频片段对应一个转录的句子或短语。

  • 命名规则:文件名通常包含原始音源文件名、一个序列号和对应的转录文本。

04-Datasets

  • 作用:存放最终的、经过人工审核和可能的编辑的数据集。

  • 内容

    • 音频文件:存放在audio/wavs/目录下,每个文件对应一个分割的音频片段。

    • 转录文本:存放在transcripts.list文件中,通常包含音频文件名和对应的文本。

  • 创建:通过create-datasets命令启动的Web UI手动创建。

05-Models

  • 作用:存放通过训练生成的Bert-VITS2模型。

  • 内容:模型文件和相关配置。

  • 创建:通过train命令生成。

使用指南

  • 01-Sources目录下放置原始音频文件。

  • 运行create-segments命令进行音频预处理和分割,生成02-PreparedSources03-Segments目录下的内容。

  • 使用create-datasets命令和Web UI对03-Segments中的音频进行人工审核和编辑,创建04-Datasets目录下的数据集。

  • 运行train命令使用04-Datasets中的数据集训练模型,并将结果保存在05-Models目录下。

注意事项

  • 确保音频文件质量尽可能高,以便生成高质量的数据集。

  • 02-PreparedSources03-Segments目录中,如果转录文本不准确,可以删除对应的JSON文件,重新运行create-segments命令以重新生成。

  • 04-Datasets目录中创建数据集时,仔细选择说话者并编辑转录文本以确保数据集的质量。

Aivis项目以其创新性和易用性,为语音合成领域带来了新的可能。无论是研究者还是开发者,都可以利用这个工具来探索和实现个性化的语音合成应用。期待Aivis在未来能够带来更多的创新和突破。

项目地址:GitHub - tsukumijima/Aivis: 💠 Aivis: AI Voice Imitation System

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1824911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

八、BGP

目录 一、为何需要BGP? 二、BGP 2.1、BGP邻居 2.2、BGP报文 2.3、BGP路由 2.4、BGP通告遵循原则 2.5、BGP实验 第一步:建立邻居 第二步:引入路由 BGP路由黑洞 路由黑洞解决方案 1、IBGP全互联 2、路由引入 3、MPLS 多协…

MySQL Online DDL原理解读

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

YOLOv10网络架构及特点

YOLOv10简介 YOLOv10是清华大学的研究人员在Ultralytics Python包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv…

matplotlib twinx多y轴但单个图例

matplotlib 用 twinx 画多 y 轴参考 [1]。现想在画图例时,多个 y 轴的图例画在一起,写法参考 [2]。本文展示一个简例,效果: Code 要手动指定颜色,否则原 y 轴的用色和新 y 轴会重合。 import matplotlib.pyplot as…

Echarts图表:地图都有哪些配置项,一文告诉你

地图是可视化大屏中最常见的组件,echart图表中关于地图的组件非常多,那么该如何进行配置,让地图和自己的设计稿保持一致。贝格前端工场为大家列举一下。 charts地图图表在配置项中有以下常用的配置选项: title:图表标…

深入理解计算机系统 家庭作业6.34

第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…

欣九康诊疗系统让中医诊所创收不再难

近些年由于国家对中医药的支持政策不断地在推进落实,所以导致中医馆、中医诊所越开越多,再加上各行各业都在向数字化转型,也给中医诊所带来了冲击,所以如何平衡机遇与竞争,实现诊所创收便成了每位中医诊所的负责人所必…

推箱子-小游戏

学习目标: 巩固Java基础,数据类型、二维数组、条件语句等; 效果展示:

空手出门不是梦,华为手机还能这么用?

夏天到了,出门东西多,零碎又费事对吧?现在就教你把繁琐的各类钥匙、公交卡、地铁卡、门禁卡、身份证……统统收纳到手机里!手机化身手提包,轻松出门!今天,我就跟大家聊聊这两神奇的功能&#xf…

Maven引用存放在本地的jar包

场景 由于需要对接合作方的接口,合作方提供了一套加解密的方法,但是需要在项目中引用他们提供的jar包,才能使用此套方法。 解决方案 方案一:将合作方的jar包保存到项目中,在pom文件内指定jar包路径进行依赖 方案二…

STM32项目分享:智能窗帘系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

网络超时

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在访问一个网页时,如果该网页长时间未响应,系统就会判断该网页超时,所以无法打开网页。下面通过代码来模拟一个网…

【MySQL】索引(上)

https://www.wolai.com/curry00/fzTPy3kSsMDEgEcdvo4G5w https://www.bilibili.com/video/BV1Kr4y1i7ru/?p69 https://jimhackking.github.io/%E8%BF%90%E7%BB%B4/MySQL%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#%E7%B4%A2%E5%BC%95 索引是一种用于快速查询和检索数据的数据结构…

知识表示与处理实验3-知识获取方法

✅作业要求:--------高分通过🎉 作业练习目标:以临床病历数据为来源,人机协同标注一定量标准数据集,研发基于机器学习的命名实体抽取等非结构化知识获取方法。 作业形式:提交代码及实验报告,实验报告以Word或者PDE形式…

基于Python+Django+MySQL+HTML的创新创业平台

DjangoMySQLHTML 基于PythonDjangoMySQLHTML的创新创业平台 用户管理 系统监控 角色管理 资源管理 参数设置 角色管理 简介 学生创新创业平台是一个功能丰富的在线教育或协作系统,支持中文语言环境。它提供用户管理、系统监控、多角色权限控制、资源管理、参…

Django REST framework关联序列化器详解:掌握复杂关系的序列化与反序列化艺术

系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游&#xff…

c++使用nlohmann读取json文件

下载&#xff1a; GitHub - nlohmann/json: JSON for Modern C 解压&#xff1a; 包含头文件&#xff1a; 要包含的头文件和要使用的命名空间&#xff1a; #include <nlohmann/json.hpp>using json nlohmann::json; 测试文件&#xff1a; 代码&#xff1a; #include…

等待 chrome.storage.local.get() 完成

chrome.storage.local.get() 获取存储处理并计数&#xff0c;内部计数正常&#xff0c;外部使用始终为0&#xff0c;百思不得其解。 如何在继续执行之前等待异步chrome.storage.local.get()完成-腾讯云开发者社区-腾讯云 (tencent.com) 原来我忽略了异步问题&#xff0c;最简…

通勤路上的美好伴侣:倍思H1s头戴式蓝牙耳机

在繁忙的都市生活中,通勤往往占据了人们大量的时间。而在这个过程中,无尽的嘈杂声——公交车的播报声、地铁的轰鸣声、街头的喧嚣——往往成为我们心情的干扰源。在这样的环境下,一款优质的头戴式蓝牙耳机,会让我们的通勤之旅变得更加愉快和舒适。 通勤路上要更舒适—— 倍思…

显示类控件——Label

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、Label介绍属性代码示例: 显示不同格式的文本代码示例: 显示图片代码示例: 文本对齐, 自动换行…