ITADN
svc-develop-team/so-vits-svc
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
LOGO

SoftVC VITS 歌声转换

English | 中文简体

Open In Colab Licence

本轮限时更新即将结束,仓库将进入 Archieve 状态,请知悉

✨ 一个包含可视化 f0 编辑器、说话人混音时间轴编辑器及其他功能的工作室(Onnx 模型的使用位置):MoeVoiceStudio

✨ 一个用户界面大幅改进的分支:34j/so-vits-svc-fork

✨ 一个支持实时转换的客户端:w-okada/voice-changer

本项目与 VITS 存在根本性差异,因为它专注于歌声转换(SVC)而非文本转语音(TTS)。在本项目中,不支持 TTS 功能,且 VITS 无法执行 SVC 任务。需要注意的是,这两个项目中使用的模型不可互换或通用。

公告

本项目的目的是让开发者能够让他们喜爱的动漫角色执行歌唱任务。开发者的初衷是仅关注虚构角色,避免涉及任何真实个人,任何与真实个人相关的内容都偏离了开发者的原始意图。

免责声明

本项目是一个开源、离线的项目,SvcDevelopTeam 的所有成员以及其他参与的开发者和维护者(以下统称贡献者)均无法控制该项目。贡献者从未以任何形式向任何组织或个人提供过任何协助,包括但不限于数据集提取、数据集处理、计算支持、训练支持、推理等。贡献者不知道也无法知晓用户使用本项目的目的。因此,通过本项目训练产生的任何 AI 模型和合成音频均与贡献者无关。因使用这些模型或音频而产生的任何问题或后果均由用户自行承担。

本项目完全离线运行,不收集任何用户信息或收集用户输入数据。因此,本项目的贡献者不了解任何用户输入和模型,因此不对任何用户输入负责。

本项目仅作为一个框架,本身不具备语音合成功能。所有功能都需要用户独立训练模型。此外,本项目不附带任何模型,任何二次分发项目均与本项目的贡献者无关。

📏 使用条款

警告:请自行处理与数据集相关的任何授权问题。您需对因使用未经授权的数据集进行训练而产生的任何问题及其后果承担全部责任。该仓库及其维护者 svc develop team 声明与上述后果无任何关联,亦不承担任何责任。

  1. 本项目专为学术目的而建立,旨在促进交流与学习。不打算用于生产环境部署。
  2. 任何基于 sovits 的视频发布到视频平台时,必须在简介中明确说明用于变声转换的输入源人声和音频,例如,如果你使用他人的视频/音频并通过分离人声作为输入源进行转换,你必须提供指向原始视频或音乐的明确链接;如果你使用自己的人声或由另一个语音合成引擎合成的声音作为输入源,你也必须在简介中说明这一点。
  3. 你对由输入源引起的任何侵权问题及所有后果负全部责任。当使用其他商业人声合成软件作为输入源时,请确保你遵守该软件的法规,注意许多人声合成引擎的法规明确规定它们不能用于转换输入源!
  4. 在使用本项目时,严禁从事非法活动以及宗教和政治活动。项目开发者强烈反对上述活动。如果你不同意此条款,则禁止使用该项目。
  5. 如果您继续使用本程序,将被视为已同意 README 中规定的条款和条件,且 README 已对您进行劝阻,并对任何后续问题不承担责任。
  6. 如果您打算将此项目用于任何其他目的,请提前联系并告知本仓库的维护者。

📝 模型介绍

歌声转换模型使用 SoftVC 内容编码器从源音频中提取语音特征。这些特征向量直接输入 VITS,无需转换为基于文本的中间表示。因此,原始音频的音高和语调得以保留。同时,声码器被替换为 NSF HiFiGAN 以解决声音中断的问题。

🆕 4.1-Stable 版本更新内容

  • 特征输入更改为 Content Vec Transformer 输出的第 12 层,并且兼容 4.0 分支。
  • 更新浅层扩散,您可以使用浅层扩散模型来改善音质。
  • 添加 Whisper-PPG 编码器支持
  • 添加静态/动态声音融合
  • 添加响度嵌入
  • 添加从 RVC 检索功能的功能

🆕 关于与 4.0 模型兼容性的问题

  • 为了支持 4.0 模型并整合语音编码器,您可以对 config.json 文件进行修改。在 "model" 部分添加 speech_encoder 字段,如下所示:
  "model": {
    .........
    "ssl_dim": 256,
    "n_speakers": 200,
    "speech_encoder":"vec256l9"
  }

🆕 浅层扩散

Diagram

💬 Python 版本

根据我们的测试,我们确定该项目在 Python 3.8.9 上运行稳定。

📥 预训练模型文件

必需

您需要从以下列表中选择一个编码器

1. 如果使用 contentvec 作为语音编码器(推荐)

vec768l12vec256l9 需要该编码器

或者下载以下 ContentVec,其大小仅为 199MB,但效果相同:

  • ContentVec: hubert_base.pt
    • 将文件名更改为 checkpoint_best_legacy_500.pt 并将其放置在 pretrain 目录下
# contentvec
wget -P pretrain/ https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt -O checkpoint_best_legacy_500.pt

# Alternatively, you can manually download and place it in the hubert directory
2. 如果使用 hubertsoft 作为语音编码器
3. 如果使用 whisper-ppg 作为编码器
  • 下载模型 medium.pt,该模型适用于 whisper-ppg
  • 或下载模型 large-v2.pt,该模型适用于 whisper-ppg-large
    • 将其放置在 pretrain 目录下
4. 如果使用 cnhubertlarge 作为编码器
5. 如果使用 dphubert 作为编码器
6. 如果使用 WavLM 作为编码器
  • 下载模型 WavLM-Base+.pt,该模型适用于 wavlmbase+
    • 将其放置在 pretrain 目录下
7. 如果使用 OnnxHubert/ContentVec 作为编码器

编码器列表

  • "vec768l12"
  • "vec256l9"
  • "vec256l9-onnx"
  • "vec256l12-onnx"
  • "vec768l9-onnx"
  • "vec768l12-onnx"
  • "hubertsoft-onnx"
  • "hubertsoft"
  • "whisper-ppg"
  • "cnhubertlarge"
  • "dphubert"
  • "whisper-ppg-large"
  • "wavlmbase+"

可选(强烈推荐)

  • 预训练模型文件: G_0.pth D_0.pth

    • 将它们放置在 logs/44k 目录下
  • 扩散模型预训练基础模型文件: model_0.pt

    • 将其放置在 logs/44k/diffusion 目录下

从 svc-develop-team(待定)或其他地方获取 Sovits 预训练模型。

扩散模型参考 Diffusion-SVC 扩散模型。预训练的扩散模型与 DDSP-SVC 的通用。你可以前往 Diffusion-SVC 的仓库获取预训练的扩散模型。

虽然预训练模型通常不会引发版权问题,但仍需保持警惕。建议事先咨询作者或仔细查看说明,以确定模型的允许使用范围。这有助于确保符合关于其使用的任何指定指南或限制。

可选(按需选择)

NSF-HIFIGAN

如果你使用的是 NSF-HIFIGAN enhancershallow diffusion,则需要下载预训练的 NSF-HIFIGAN 模型。

  • 预训练 NSF-HIFIGAN 声码器:nsf_hifigan_20221211.zip
    • 解压并将四个文件放置在 pretrain/nsf_hifigan 目录下
# nsf_hifigan
wget -P pretrain/ https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip
unzip -od pretrain/nsf_hifigan pretrain/nsf_hifigan_20221211.zip

# Alternatively, you can manually download and place it in the pretrain/nsf_hifigan directory

# URL: https://github.com/openvpi/vocoders/releases/tag/nsf-hifigan-v1
RMVPE

如果你使用的是 rmvpe F0 预测器,你需要下载预训练的 RMVPE 模型。

  • rmvpe.zip 处下载模型,推荐此权重。
    • 解压 rmvpe.zip,并将 model.pt 文件重命名为 rmvpe.pt,然后放置在 pretrain 目录下。
  • rmvpe.pt 处下载模型
    • 将其放置在 pretrain 目录下
FCPE(预览版)

FCPE(Fast Context-base Pitch Estimator) 是一款专为实时语音转换设计的 F0 预测器,未来将成为 sovits 实时语音转换的首选 F0 预测器。(论文正在撰写中)

如果你使用的是 fcpe F0 预测器,你需要下载预训练的 FCPE 模型。

  • fcpe.pt 处下载模型
    • 将其放置在 pretrain 目录下

📊 数据集准备

只需将数据集放置在 dataset_raw 目录下,并遵循以下文件结构:

dataset_raw
├───speaker0
│   ├───xxx1-xxx1.wav
│   ├───...
│   └───Lxx-0xx8.wav
└───speaker1
    ├───xx2-0xxx2.wav
    ├───...
    └───xxx7-xxx007.wav

每个音频文件的名称格式没有特定限制(例如 000001.wav999999.wav 这样的命名约定也是有效的),但文件类型必须是 `WAV``。

你可以如下自定义说话人名称:

dataset_raw
└───suijiSUI
    ├───1.wav
    ├───...
    └───25788785-20221210-200143-856_01_(Vocals)_0_0.wav

🛠️ 预处理

0. 切片音频

为避免在训练或预处理过程中发生显存溢出,建议限制音频片段的长度。将音频切割为“5s - 15s”的长度更为推荐。稍长的时间是可以接受的,但过长的片段可能会导致诸如 torch.cuda.OutOfMemoryError 等问题。

为了方便切片过程,您可以使用 audio-slicer-GUIaudio-slicer-CLI

通常,只需调整 Minimum Interval 即可。对于语音音频,默认值通常就足够了,而对于歌唱音频,可以根据具体需求将其调整到约 100 甚至 50

切片后,建议移除过长或过短的音频片段。

如果您使用 whisper-ppg 编码器进行训练,音频片段必须短于 30s。

1. 重采样至 44100Hz 和单声道

python resample.py

注意事项

尽管本项目提供了用于重采样、单声道和响度匹配的 resample.py 脚本,但默认的响度匹配是匹配到 0db。这可能会损害音质。虽然 Python 的响度匹配包 pyloudnorm 不限制电平,但这可能导致音爆。因此,建议使用专业的音频处理软件(例如 adobe audition)进行响度匹配。如果您已经使用其他软件进行响度匹配,请在运行命令中添加参数 -skip_loudnorm

python resample.py --skip_loudnorm

2. 自动将数据集拆分为训练集和验证集,并生成配置文件。

python preprocess_flist_config.py --speech_encoder vec768l12

speech_encoder 具有以下选项

vec768l12
vec256l9
hubertsoft
whisper-ppg
cnhubertlarge
dphubert
whisper-ppg-large
wavlmbase+

如果省略 speech_encoder 参数,默认值为 vec768l12

使用响度嵌入

如果要启用响度嵌入,请添加 --vol_aug

python preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug

启用响度嵌入后,训练好的模型将匹配输入源的响度;否则,它将匹配训练集的响度。

您可以修改生成的 config.json 和 diffusion.yaml 中的某些参数

  • keep_ckpts: 在训练期间保留先前模型的数量。设置为 0 以保留所有模型。默认为 3

  • all_in_mem: 将所有数据集加载到 RAM 中。当某些平台的磁盘 IO 过低且系统内存远大于您的数据集时,可以启用此选项。

  • batch_size: 单次训练会话加载到 GPU 的数据量可以调整为小于 GPU 内存容量的大小。

  • vocoder_name: 选择一个声码器。默认为 nsf-hifigan

diffusion.yaml
  • cache_all_data: 将所有数据集加载到 RAM 中。当某些平台的磁盘 IO 过低且系统内存远大于您的数据集时,可以启用此选项。

  • duration: 训练期间音频切片的时长,可根据显存大小进行调整,注意:此值必须小于训练集中音频的最短时间!

  • batch_size: 单次训练会话加载到 GPU 的数据量可以调整为小于显存容量的大小。

  • timesteps: 扩散模型的总步数,默认为 1000。

  • k_step_max: 训练只能训练 k_step_max 步扩散以节省训练时间,注意该值必须小于 timesteps,0 表示训练整个扩散模型,注意:如果不训练整个扩散模型将无法使用 only_diffusion!

Vocoder 列表
nsf-hifigan
nsf-snake-hifigan

3. 生成 hubert 和 f0

python preprocess_hubert_f0.py --f0_predictor dio

f0_predictor 具有以下选项

crepe
dio
pm
harvest
rmvpe
fcpe

如果训练集噪声过大,建议使用 crepe 来处理 f0

如果省略 f0_predictor 参数,默认值为 rmvpe

如果您想要浅层扩散(可选),需要添加 --use_diff 参数,例如:

python preprocess_hubert_f0.py --f0_predictor dio --use_diff

加速 preprocess

如果你的数据集相当大,你可以像这样增加参数 --num_processes

python preprocess_hubert_f0.py --f0_predictor dio --num_processes 8

如果你拥有多于一块 GPU,所有 worker 将被分配到不同的 GPU 上。

完成上述步骤后,数据集目录将包含预处理后的数据,并且可以删除 dataset_raw 文件夹。

🏋️‍ 训练

Sovits 模型

python train.py -c configs/config.json -m 44k

扩散模型(可选)

如果需要浅层扩散函数,则需要训练扩散模型。扩散模型的训练方法如下:

python train_diff.py -c configs/diffusion.yaml

在训练过程中,模型文件将被保存至 logs/44k,扩散模型将被保存至 logs/44k/diffusion

🤖 推理

使用 inference_main.py

# Example
python inference_main.py -m "logs/44k/G_30400.pth" -c "configs/config.json" -n "君の知らない物語-src.wav" -t 0 -s "nen"

必需参数:

  • -m | --model_path: 模型的路径。
  • -c | --config_path: 配置文件的路径。
  • -n | --clean_names: 位于 raw 文件夹中的 wav 文件名列表。
  • -t | --trans: 音高偏移,支持正值和负值(半音)。
  • -s | --spk_list: 选择用于转换的说话人 ID。
  • -cl | --clip: 强制音频裁剪,设置为 0 以禁用(默认),设置为非零值(以秒为单位的时长)以启用。

可选参数:参见下一节

  • -lg | --linear_gradient: 两个音频切片的交叉淡入淡出长度(秒)。如果强制切片后出现不连续的语音,可以调整此值。否则,建议使用默认值 0。
  • -f0p | --f0_predictor: 选择 F0 预测器,选项为 crepe, pm, dio, harvest, rmvpe,fcpe, 默认值为 pm(注意:使用 crepe 时将启用 f0 均值池化)
  • -a | --auto_predict_f0: 自动音高预测,在转换歌声时请勿启用此选项,因为它可能导致严重的音高问题。
  • -cm | --cluster_model_path: 聚类模型或特征检索索引路径,如果留空,将自动设置为这些模型的默认路径。如果没有训练聚类或特征检索,请随意填写。
  • -cr | --cluster_infer_ratio: 聚类方案或特征检索的比例范围为 0 到 1。如果没有训练聚类模型或特征检索,默认为 0。
  • -eh | --enhance: 是否使用 NSF_HIFIGAN 增强器,此选项对某些训练集较少的模型有一定的音质增强效果,但对训练良好的模型有负面影响,因此默认禁用。
  • -shd | --shallow_diffusion: 是否使用浅层扩散,使用后可能会解决一些电流声问题。此选项默认禁用。启用此选项时,NSF_HIFIGAN 增强器将被禁用
  • -usm | --use_spk_mix: 是否使用动态语音融合
  • -lea | --loudness_envelope_adjustment:输入源响度包络相对于输出响度包络融合比的调整。越接近 1,输出响度包络的使用程度越高
  • -fr | --feature_retrieval:是否使用特征检索。如果使用聚类模型,此功能将被禁用,且 cmcr 参数将变为特征检索的索引路径和混合比例

浅层扩散设置:

  • -dm | --diffusion_model_path: 扩散模型路径
  • -dc | --diffusion_config_path: 扩散配置文件路径
  • -ks | --k_step: k_steps 数值越大,越接近扩散模型的结果。默认值为 100
  • -od | --only_diffusion: 是否使用 Only diffusion 模式,该模式不加载 sovits 模型,仅使用扩散模型进行推理
  • -se | --second_encoding:这涉及在浅层扩散之前对原始音频应用额外的编码。此选项可能产生不同的结果——有时是积极的,有时是消极的。

注意事项

如果使用 whisper-ppg 语音编码器进行推理,需要将 --clip 设置为 25,并将 -lg 设置为 1。否则将无法正确推理。

🤔 可选设置

如果您对之前的结果感到满意,或者觉得不理解以下内容,可以跳过,这不会影响模型的使用。这些可选设置的影响相对较小,虽然它们可能对特定数据集产生一些影响,但在大多数情况下,差异可能并不显著。

自动 f0 预测

在训练 4.0 模型期间,也会训练一个 f0 预测器,这使得在语音转换过程中能够自动进行音高预测。然而,如果结果不满意,可以改用手动音高预测。请注意,在转换歌声时,建议不要启用此功能,因为它可能会导致显著的音高偏移。

  • inference_main.py 中将 auto_predict_f0 设置为 true

基于聚类的音色泄漏控制

简介:本模型实现的聚类方案旨在减少音色泄漏并增强训练模型与目标音色的相似度,尽管效果可能并不十分显著。然而,仅依赖聚类会降低模型的清晰度,使其听起来不够清晰。因此,本模型采用了一种融合方法来控制聚类与非聚类方法之间的平衡。这使得可以手动调整“听起来像目标音色”与“发音清晰”之间的权衡,以找到最佳平衡点。

现有步骤无需更改。只需额外训练一个聚类模型,其训练成本相对较低。

  • 训练过程:
    • 在 CPU 性能较好的机器上进行训练。根据现有经验,在配备 6 核 CPU 的腾讯云服务器上,训练每位说话者大约需要 4 分钟。
    • 执行 python cluster/train_cluster.py。输出的模型将保存在 logs/44k/kmeans_10000.pt
    • 目前可以通过执行 python cluster/train_cluster.py --gpu 使用 gpu 训练聚类模型
  • 推理过程:
    • inference_main.py 中指定 cluster_model_path。如果未指定,默认为 logs/44k/kmeans_10000.pt
    • inference_main.py 中指定 cluster_infer_ratio,其中 0 表示完全不使用聚类,1 表示仅使用聚类,通常 0.5 即可。

特征检索

引言:与聚类方案类似,音色泄漏可以得到降低,发音略优于聚类,但会降低推理速度。通过采用融合方法,可以线性地控制特征检索与非特征检索之间的平衡,从而对所需比例进行微调。

  • 训练过程: 首先,需要在生成 hubert 和 f0 之后执行:
python train_index.py -c configs/config.json

模型的输出将为 logs/44k/feature_and_index.pkl

  • 推理过程:
    • 首先需要制定 --feature_retrieval,聚类模式会自动切换到特征检索模式。
    • inference_main.py 中指定 cluster_model_path。如果未指定,默认为 logs/44k/feature_and_index.pkl
    • inference_main.py 中指定 cluster_infer_ratio,其中 0 表示完全不使用特征检索,1 表示仅使用特征检索,通常 0.5 即可。

🗜️ 模型压缩

生成的模型包含进一步训练所需的数据。如果您确认该模型为最终版本且不会用于进一步训练,则可以安全地移除这些数据以获得更小的文件大小(约为原来的 1/3)。

# Example
python compress_model.py -c="configs/config.json" -i="logs/44k/G_30400.pth" -o="logs/44k/release.pth"

👨‍🔧 音色混合

静态音色混合

请参阅 webUI.py 文件,了解 gadget/lab 功能的稳定音色混合。

简介:此功能可将多个模型合并为一个模型(多个模型参数的凸组合或线性组合),以创建现实中不存在的混合音色

注意:

  1. 此功能仅支持单说话人模型
  2. 如果强制使用多说话人模型,务必确保每个模型中的说话人数量相同。这将确保具有相同 SpeakerID 的声音能够正确混合。
  3. 确保所有待混合模型的 config.json 中的 model 字段相同
  4. 混合后的模型可以使用正在合成的模型中的任意 config.json 文件。但是,混合后聚类模型将无法正常工作。
  5. 批量上传模型时,最好将模型放入一个文件夹中,选择后一起上传
  6. 建议将混合比例调整为 0 到 100 之间,或其他数值,但在线性组合模式下会出现未知效果
  7. 混合后,名为 output.pth 的文件将保存在项目根目录中
  8. 凸组合模式将执行 Softmax 使混合比例之和为 1,而线性组合模式则不会

动态音色混合

请参阅 spkmix.py 文件,了解动态音色混合的介绍

角色混合轨道编写规则:

Role ID: [[Start time 1, end time 1, start value 1, start value 1], [Start time 2, end time 2, start value 2]]

开始时间必须与上一个的结束时间相同。第一个开始时间必须为 0,最后一个结束时间必须为 1(时间范围为 0 到 1)。

所有角色都必须填写。对于未使用的角色,填写 [[0., 1., 0., 0.]]

融合值可以任意填写,在指定时间段内从起始值到结束值进行线性变化。

内部线性组合将自动保证为 1(凸组合条件),因此可以安全使用

在推理时使用 --use_spk_mix 参数以启用动态音色混合

📤 导出到 Onnx

使用 onnx_export.py

  • 创建一个名为 checkpoints 的文件夹并打开它
  • checkpoints 文件夹中创建一个文件夹作为你的项目文件夹,以你的项目命名,例如 aziplayer
  • 将你的模型重命名为 model.pth,配置文件重命名为 config.json,并将它们放入你刚刚创建的 aziplayer 文件夹中
  • onnx_export.py 中的 path = "NyaruTaffy" 里修改 "NyaruTaffy" 为你的项目名称,path = "aziplayer"(onnx_export_speaker_mix 允许你混合说话人的声音)
  • 运行 onnx_export.py
  • 等待其运行完成。你的项目文件夹中会生成一个 model.onnx,即导出的模型。

注意:对于 Hubert Onnx 模型,请使用 MoeSS 提供的模型。目前,它们无法自行导出(fairseq 中的 Hubert 包含许多不支持的运算符以及涉及常量,这可能导致错误或在导出时出现输入/输出形状和结果方面的问题。)

📎 参考

URL标识标题实现来源
2106.06103VITS (合成器)用于端到端文本到语音的条件变分自编码器与对抗学习jaywalnut310/vits
2111.02392SoftVC (语音编码器)离散与软语音单元的比较以实现改进的语音转换bshall/hubert
2204.09224ContentVec (语音编码器)ContentVec: 通过解耦说话人改进的自监督语音表示auspicious3000/contentvec
2212.04356Whisper (语音编码器)通过大规模弱监督实现鲁棒的语音识别openai/whisper
2110.13900WavLM (语音编码器)WavLM: 用于全栈语音处理的大规模自监督预训练microsoft/unilm/wavlm
2305.17651DPHubert (语音编码器)DPHuBERT: 自监督语音模型的联合蒸馏与剪枝pyf98/DPHuBERT
DOI:10.21437/Interspeech.2017-68Harvest (F0 预测器)Harvest: 一种从语音信号中提取基频的高性能估计器mmorise/World/harvest
aes35-000039Dio (F0 预测器)基于歌唱和语音声带振动周期提取的快速可靠 F0 估计方法mmorise/World/dio
8461329Crepe (F0 Predictor)Crepe: A Convolutional Representation for Pitch Estimationmaxrmorrison/torchcrepe
DOI:10.1016/j.wocn.2018.07.001Parselmouth (F0 Predictor)Introducing Parselmouth: A Python interface to PraatYannickJadoul/Parselmouth
2306.15412v2RMVPE (F0 Predictor)RMVPE: A Robust Model for Vocal Pitch Estimation in Polyphonic MusicDream-High/RMVPE
2010.05646HIFIGAN (Vocoder)HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesisjik876/hifi-gan
1810.11946NSF (Vocoder)Neural source-filter-based waveform model for statistical parametric speech synthesisopenvpi/DiffSinger/modules/nsf_hifigan
2006.08195Snake (Vocoder)Neural Networks Fail to Learn Periodic Functions and How to Fix ItEdwardDixon/snake
2105.02446v3Shallow Diffusion (PostProcessing)DiffSinger: Singing Voice Synthesis via Shallow Diffusion MechanismCNChTu/Diffusion-SVC
K-meansFeature K-means Clustering (PreProcessing)Some methods for classification and analysis of multivariate observationsThis repo
Feature TopK Retrieval (PreProcessing)Retrieval based Voice ConversionRVC-Project/Retrieval-based-Voice-Conversion-WebUI
whisper ppgwhisper ppgPlayVoice/whisper_ppg
bigvganbigvganPlayVoice/so-vits-svc-5.0

☀️ 早期贡献者

由于某种原因,作者删除了原始仓库。由于组织成员的疏忽,在重建此仓库之初,所有文件被直接重新上传至该仓库,导致贡献者列表被清空。现在在 README.md 中添加早期贡献者列表。

部分成员根据个人意愿未列出。


MistEO


XiaoMiku01


しぐれ


TomoGaSukunai


Plachtaa


zd小达


凍聲響世

📚 部分法律条款供参考

任何国家、地区、组织或个人使用本项目,必须遵守以下法律。

《民法典》

第一千零一十九条

任何组织或者个人不得以丑化、污损,或者利用信息技术手段伪造等方式侵害他人的肖像权。未经肖像权人同意,不得制作、使用、公开肖像权人的肖像,但是法律另有规定的除外。未经肖像权人同意,肖像作品权利人不得以发表、复制、发行、出租、展览等方式使用或者公开肖像权人的肖像。对自然人声音的保护,参照适用肖像权保护的有关规定。

第一千零二十四条

【名誉权】民事主体享有名誉权。任何组织或者个人不得以侮辱、诽谤等方式侵害他人的名誉权。

第一千零二十七条

【作品侵害名誉权】行为人发表的文学、艺术作品以真人真事或者特定人为描述对象,含有侮辱、诽谤内容,侵害他人名誉权的,受害人有权依法请求该行为人承担民事责任。行为人发表的文学、艺术作品不以特定人为描述对象,仅其中的情节与该特定人的情况相似的,不承担民事责任。

中华人民共和国宪法

中华人民共和国刑法

中华人民共和国民法典

中华人民共和国合同法

💪 感谢所有贡献者的付出