Showing preview only (493K chars total). Download the full file or copy to clipboard to get everything.
Repository: voicepaw/so-vits-svc-fork
Branch: main
Commit: 5dfcf10a242f
Files: 100
Total size: 465.0 KB
Directory structure:
gitextract_fwmtssbt/
├── .all-contributorsrc
├── .codespellrc
├── .copier-answers.yml
├── .dockerignore
├── .editorconfig
├── .flake8
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug-report.yml
│ │ ├── 1-bug_report.yml
│ │ ├── 2-feature-request.yml
│ │ └── config.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── labels.toml
│ └── workflows/
│ ├── ci.yml
│ ├── hacktoberfest.yml
│ ├── issue-manager.yml
│ ├── labels.yml
│ ├── poetry-upgrade.yml
│ └── upgrader.yml
├── .gitignore
├── .gitpod.yml
├── .pre-commit-config.yaml
├── .readthedocs.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── README_zh_CN.md
├── commitlint.config.js
├── commitlint.config.mjs
├── docs/
│ ├── Makefile
│ ├── _static/
│ │ └── .gitkeep
│ ├── changelog.md
│ ├── conf.py
│ ├── contributing.md
│ ├── index.md
│ ├── installation.md
│ ├── make.bat
│ └── usage.md
├── easy-installation/
│ ├── install-cn.bat
│ └── install.bat
├── flake.nix
├── notebooks/
│ └── so-vits-svc-fork-4.0.ipynb
├── pyproject.toml
├── renovate.json
├── setup.py
├── src/
│ └── so_vits_svc_fork/
│ ├── __init__.py
│ ├── __main__.py
│ ├── cluster/
│ │ ├── __init__.py
│ │ └── train_cluster.py
│ ├── dataset.py
│ ├── default_gui_presets.json
│ ├── f0.py
│ ├── gui.py
│ ├── hparams.py
│ ├── inference/
│ │ ├── __init__.py
│ │ ├── core.py
│ │ └── main.py
│ ├── logger.py
│ ├── modules/
│ │ ├── __init__.py
│ │ ├── attentions.py
│ │ ├── commons.py
│ │ ├── decoders/
│ │ │ ├── __init__.py
│ │ │ ├── f0.py
│ │ │ ├── hifigan/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _models.py
│ │ │ │ └── _utils.py
│ │ │ └── mb_istft/
│ │ │ ├── __init__.py
│ │ │ ├── _generators.py
│ │ │ ├── _loss.py
│ │ │ ├── _pqmf.py
│ │ │ ├── _stft.py
│ │ │ └── _stft_loss.py
│ │ ├── descriminators.py
│ │ ├── encoders.py
│ │ ├── flows.py
│ │ ├── losses.py
│ │ ├── mel_processing.py
│ │ ├── modules.py
│ │ └── synthesizers.py
│ ├── preprocessing/
│ │ ├── __init__.py
│ │ ├── config_templates/
│ │ │ ├── __init__.py
│ │ │ ├── quickvc.json
│ │ │ ├── so-vits-svc-4.0v1-legacy.json
│ │ │ └── so-vits-svc-4.0v1.json
│ │ ├── preprocess_classify.py
│ │ ├── preprocess_flist_config.py
│ │ ├── preprocess_hubert_f0.py
│ │ ├── preprocess_resample.py
│ │ ├── preprocess_speaker_diarization.py
│ │ ├── preprocess_split.py
│ │ └── preprocess_utils.py
│ ├── py.typed
│ ├── train.py
│ └── utils.py
├── templates/
│ └── CHANGELOG.md.j2
└── tests/
├── __init__.py
└── test_main.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .all-contributorsrc
================================================
{
"projectName": "so-vits-svc-fork",
"projectOwner": "voicepaw",
"repoType": "github",
"repoHost": "https://github.com",
"files": ["README.md"],
"imageSize": 80,
"commit": true,
"commitConvention": "angular",
"contributors": [
{
"login": "34j",
"name": "34j",
"avatar_url": "https://avatars.githubusercontent.com/u/55338215?v=4",
"profile": "https://github.com/34j",
"contributions": [
"code",
"ideas",
"doc",
"example",
"infra",
"maintenance",
"review",
"test",
"tutorial",
"promotion",
"bug"
]
},
{
"login": "GarrettConway",
"name": "GarrettConway",
"avatar_url": "https://avatars.githubusercontent.com/u/22782004?v=4",
"profile": "https://github.com/GarrettConway",
"contributions": ["code", "bug", "doc", "review"]
},
{
"login": "BlueAmulet",
"name": "BlueAmulet",
"avatar_url": "https://avatars.githubusercontent.com/u/43395286?v=4",
"profile": "https://github.com/BlueAmulet",
"contributions": ["ideas", "question", "code", "maintenance"]
},
{
"login": "ThrowawayAccount01",
"name": "ThrowawayAccount01",
"avatar_url": "https://avatars.githubusercontent.com/u/125531852?v=4",
"profile": "https://github.com/ThrowawayAccount01",
"contributions": ["bug"]
},
{
"login": "MashiroSA",
"name": "緋",
"avatar_url": "https://avatars.githubusercontent.com/u/40637516?v=4",
"profile": "https://github.com/MashiroSA",
"contributions": ["doc", "bug"]
},
{
"login": "Lordmau5",
"name": "Lordmau5",
"avatar_url": "https://avatars.githubusercontent.com/u/1345036?v=4",
"profile": "https://github.com/Lordmau5",
"contributions": [
"bug",
"code",
"ideas",
"maintenance",
"question",
"userTesting"
]
},
{
"login": "DL909",
"name": "DL909",
"avatar_url": "https://avatars.githubusercontent.com/u/71912115?v=4",
"profile": "https://github.com/DL909",
"contributions": ["bug"]
},
{
"login": "Satisfy256",
"name": "Satisfy256",
"avatar_url": "https://avatars.githubusercontent.com/u/101394399?v=4",
"profile": "https://github.com/Satisfy256",
"contributions": ["bug"]
},
{
"login": "pierluigizagaria",
"name": "Pierluigi Zagaria",
"avatar_url": "https://avatars.githubusercontent.com/u/57801386?v=4",
"profile": "https://github.com/pierluigizagaria",
"contributions": ["userTesting"]
},
{
"login": "ruckusmattster",
"name": "ruckusmattster",
"avatar_url": "https://avatars.githubusercontent.com/u/77196088?v=4",
"profile": "https://github.com/ruckusmattster",
"contributions": ["bug"]
},
{
"login": "Desuka-art",
"name": "Desuka-art",
"avatar_url": "https://avatars.githubusercontent.com/u/111822082?v=4",
"profile": "https://github.com/Desuka-art",
"contributions": ["bug"]
},
{
"login": "heyfixit",
"name": "heyfixit",
"avatar_url": "https://avatars.githubusercontent.com/u/41658450?v=4",
"profile": "https://github.com/heyfixit",
"contributions": ["doc"]
},
{
"login": "nerdyrodent",
"name": "Nerdy Rodent",
"avatar_url": "https://avatars.githubusercontent.com/u/74688049?v=4",
"profile": "https://www.youtube.com/c/NerdyRodent",
"contributions": ["video"]
},
{
"login": "xieyumc",
"name": "谢宇",
"avatar_url": "https://avatars.githubusercontent.com/u/47858007?v=4",
"profile": "https://github.com/xieyumc",
"contributions": ["doc"]
},
{
"login": "ColdCawfee",
"name": "ColdCawfee",
"avatar_url": "https://avatars.githubusercontent.com/u/79474598?v=4",
"profile": "https://github.com/ColdCawfee",
"contributions": ["bug"]
},
{
"login": "sbersier",
"name": "sbersier",
"avatar_url": "https://avatars.githubusercontent.com/u/34165937?v=4",
"profile": "https://github.com/sbersier",
"contributions": ["ideas", "userTesting", "bug"]
},
{
"login": "Meldoner",
"name": "Meldoner",
"avatar_url": "https://avatars.githubusercontent.com/u/43951115?v=4",
"profile": "https://github.com/Meldoner",
"contributions": ["bug", "ideas", "code"]
},
{
"login": "mmodeusher",
"name": "mmodeusher",
"avatar_url": "https://avatars.githubusercontent.com/u/46575920?v=4",
"profile": "https://github.com/mmodeusher",
"contributions": ["bug"]
},
{
"login": "AlonDan",
"name": "AlonDan",
"avatar_url": "https://avatars.githubusercontent.com/u/21152334?v=4",
"profile": "https://github.com/AlonDan",
"contributions": ["bug"]
},
{
"login": "Likkkez",
"name": "Likkkez",
"avatar_url": "https://avatars.githubusercontent.com/u/44336181?v=4",
"profile": "https://github.com/Likkkez",
"contributions": ["bug"]
},
{
"login": "DuctTapeGames",
"name": "Duct Tape Games",
"avatar_url": "https://avatars.githubusercontent.com/u/84365142?v=4",
"profile": "https://github.com/DuctTapeGames",
"contributions": ["bug"]
},
{
"login": "hxl9654",
"name": "Xianglong He",
"avatar_url": "https://avatars.githubusercontent.com/u/6624983?v=4",
"profile": "https://tec.hxlxz.com/",
"contributions": ["bug"]
},
{
"login": "75aosu",
"name": "75aosu",
"avatar_url": "https://avatars.githubusercontent.com/u/79185331?v=4",
"profile": "https://github.com/75aosu",
"contributions": ["bug"]
},
{
"login": "tonyco82",
"name": "tonyco82",
"avatar_url": "https://avatars.githubusercontent.com/u/56610534?v=4",
"profile": "https://github.com/tonyco82",
"contributions": ["bug"]
},
{
"login": "yxlllc",
"name": "yxlllc",
"avatar_url": "https://avatars.githubusercontent.com/u/33565655?v=4",
"profile": "https://github.com/yxlllc",
"contributions": ["ideas", "code"]
},
{
"login": "outhipped",
"name": "outhipped",
"avatar_url": "https://avatars.githubusercontent.com/u/116147475?v=4",
"profile": "https://github.com/outhipped",
"contributions": ["bug"]
},
{
"login": "escoolioinglesias",
"name": "escoolioinglesias",
"avatar_url": "https://avatars.githubusercontent.com/u/73505402?v=4",
"profile": "https://github.com/escoolioinglesias",
"contributions": ["bug", "userTesting", "video"]
},
{
"login": "Blacksingh",
"name": "Blacksingh",
"avatar_url": "https://avatars.githubusercontent.com/u/130872856?v=4",
"profile": "https://github.com/Blacksingh",
"contributions": ["bug"]
},
{
"login": "tybantarnusa",
"name": "Mgs. M. Thoyib Antarnusa",
"avatar_url": "https://avatars.githubusercontent.com/u/9532857?v=4",
"profile": "http://tybantarnusa.com",
"contributions": ["bug"]
},
{
"login": "ZeroHackz",
"name": "Exosfeer",
"avatar_url": "https://avatars.githubusercontent.com/u/15729496?v=4",
"profile": "https://github.com/ZeroHackz",
"contributions": ["bug", "code"]
},
{
"login": "guranon",
"name": "guranon",
"avatar_url": "https://avatars.githubusercontent.com/u/130421189?v=4",
"profile": "https://github.com/guranon",
"contributions": ["bug", "ideas", "code"]
},
{
"login": "alexanderkoumis",
"name": "Alexander Koumis",
"avatar_url": "https://avatars.githubusercontent.com/u/5108856?v=4",
"profile": "https://github.com/alexanderkoumis",
"contributions": ["code"]
},
{
"login": "acekagami",
"name": "acekagami",
"avatar_url": "https://avatars.githubusercontent.com/u/127201056?v=4",
"profile": "https://github.com/acekagami",
"contributions": ["translation"]
},
{
"login": "Highupech",
"name": "Highupech",
"avatar_url": "https://avatars.githubusercontent.com/u/114140670?v=4",
"profile": "https://github.com/Highupech",
"contributions": ["bug"]
},
{
"login": "Scorpi",
"name": "Scorpi",
"avatar_url": "https://avatars.githubusercontent.com/u/969654?v=4",
"profile": "https://github.com/Scorpi",
"contributions": ["code"]
},
{
"login": "maximxlss",
"name": "Maximxls",
"avatar_url": "https://avatars.githubusercontent.com/u/29152154?v=4",
"profile": "http://maximxlss.github.io",
"contributions": ["code"]
},
{
"login": "Star3Lord",
"name": "Star3Lord",
"avatar_url": "https://avatars.githubusercontent.com/u/57606931?v=4",
"profile": "https://github.com/Star3Lord",
"contributions": ["bug", "code"]
},
{
"login": "Ph0rk0z",
"name": "Forkoz",
"avatar_url": "https://avatars.githubusercontent.com/u/59298527?v=4",
"profile": "https://github.com/Ph0rk0z",
"contributions": ["bug", "code"]
},
{
"login": "Zerui18",
"name": "Zerui Chen",
"avatar_url": "https://avatars.githubusercontent.com/u/34794550?v=4",
"profile": "https://github.com/Zerui18",
"contributions": ["code", "ideas"]
},
{
"login": "shenberg",
"name": "Roee Shenberg",
"avatar_url": "https://avatars.githubusercontent.com/u/653972?v=4",
"profile": "https://www.meimadix.com",
"contributions": ["userTesting", "ideas", "code"]
},
{
"login": "ShinyJustyZ",
"name": "Justas",
"avatar_url": "https://avatars.githubusercontent.com/u/65282440?v=4",
"profile": "https://github.com/ShinyJustyZ",
"contributions": ["bug", "code"]
},
{
"login": "Onako2",
"name": "Onako2",
"avatar_url": "https://avatars.githubusercontent.com/u/79749977?v=4",
"profile": "https://onako2.github.io/",
"contributions": ["doc"]
},
{
"login": "4ll0w3v1l",
"name": "4ll0w3v1l",
"avatar_url": "https://avatars.githubusercontent.com/u/53517147?v=4",
"profile": "https://github.com/4ll0w3v1l",
"contributions": ["code"]
},
{
"login": "SamuelSwartzberg",
"name": "j5y0V6b",
"avatar_url": "https://avatars.githubusercontent.com/u/16353439?v=4",
"profile": "https://github.com/SamuelSwartzberg",
"contributions": ["security"]
},
{
"login": "marcellocirelli",
"name": "marcellocirelli",
"avatar_url": "https://avatars.githubusercontent.com/u/51972090?v=4",
"profile": "https://github.com/marcellocirelli",
"contributions": ["bug"]
},
{
"login": "Priyanshu-hawk",
"name": "Priyanshu Patel",
"avatar_url": "https://avatars.githubusercontent.com/u/76026651?v=4",
"profile": "https://github.com/Priyanshu-hawk",
"contributions": ["code"]
},
{
"login": "annagorshunova",
"name": "Anna Gorshunova",
"avatar_url": "https://avatars.githubusercontent.com/u/5199204?v=4",
"profile": "https://github.com/annagorshunova",
"contributions": ["bug", "code"]
}
],
"contributorsPerLine": 7,
"skipCi": true,
"commitType": "docs"
}
================================================
FILE: .codespellrc
================================================
[codespell]
ignore-words-list = socio-economic
================================================
FILE: .copier-answers.yml
================================================
# Changes here will be overwritten by Copier
_commit: 2e4f7d0
_src_path: gh:34j/pypackage-template
copyright_year: '2023'
documentation: true
email: 34j.95a2p@simplelogin.com
full_name: 34j
github_username: voicepaw
has_cli: false
initial_commit: false
is_django_package: false
open_source_license: MIT
open_with_editor: false
package_name: so_vits_svc_fork
project_name: SoftVC VITS Singing Voice Conversion Fork
project_short_description: A fork of so-vits-svc.
project_slug: so-vits-svc-fork
run_uv_sync: false
setup_pre_commit: false
================================================
FILE: .dockerignore
================================================
# Ignore everything
*
================================================
FILE: .editorconfig
================================================
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8
end_of_line = lf
[*.bat]
indent_style = tab
end_of_line = crlf
[LICENSE]
insert_final_newline = false
[Makefile]
indent_style = tab
================================================
FILE: .flake8
================================================
[flake8]
exclude = docs
max-line-length = 88
ignore = E203, E501, E741, E402, E712, W503, E731, E711, E226
================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting @voicepaw. All complaints will be reviewed and
investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: .github/FUNDING.yml
================================================
github: ["voicepaw"]
================================================
FILE: .github/ISSUE_TEMPLATE/1-bug-report.yml
================================================
name: Bug report
description: Create a report to help us improve
labels: [bug]
body:
- type: textarea
id: description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
placeholder: Describe the bug
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: To Reproduce
description: Steps to reproduce the behavior.
placeholder: To Reproduce
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context about the problem here.
placeholder: Additional context
- type: input
id: version
attributes:
label: Version
description: Version of the project.
placeholder: Version
validations:
required: true
- type: input
id: platform
attributes:
label: Platform
description: Platform where the bug was found.
placeholder: "Example: Windows 11 / macOS 12.0.1 / Ubuntu 20.04"
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our
[Code of Conduct](https://github.com/voicepaw/so-vits-svc-fork/blob/main/.github/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct.
required: true
- type: checkboxes
id: no-duplicate
attributes:
label: No Duplicate
description: Please check [existing issues](https://github.com/voicepaw/so-vits-svc-fork/issues) to avoid duplicates.
options:
- label: I have checked existing issues to avoid duplicates.
required: true
- type: markdown
attributes:
value: 👋 Have a great day and thank you for the bug report!
================================================
FILE: .github/ISSUE_TEMPLATE/1-bug_report.yml
================================================
name: Bug report
description: Create a report to help us improve
labels: [bug]
body:
- type: textarea
id: description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
placeholder: Describe the bug
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: To Reproduce
description: Steps to reproduce the behavior.
placeholder: To Reproduce
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context about the problem here.
placeholder: Additional context
- type: input
id: version
attributes:
label: Version
description: Version of the project.
placeholder: Version
validations:
required: true
- type: input
id: platform
attributes:
label: Platform
description: Platform where the bug was found.
placeholder: "Example: Windows 11 / macOS 12.0.1 / Ubuntu 20.04"
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our
[Code of Conduct](https://github.com/34j/so-vits-svc-fork/blob/main/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct.
required: true
- type: checkboxes
id: no-duplicate
attributes:
label: No Duplicate
description: Please check [existing issues](https://github.com/34j/so-vits-svc-fork/issues) to avoid duplicates.
options:
- label: I have checked existing issues to avoid duplicates.
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/2-feature-request.yml
================================================
name: Feature request
description: Suggest an idea for this project
labels: [enhancement]
body:
- type: textarea
id: description
attributes:
label: Is your feature request related to a problem? Please describe.
description: A clear and concise description of what the problem is.
value: I'm always frustrated when
validations:
required: true
- type: textarea
id: solution
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
placeholder: Describe alternatives you've considered
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
placeholder: Additional context
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our
[Code of Conduct](https://github.com/voicepaw/so-vits-svc-fork/blob/main/.github/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct
required: true
- type: checkboxes
id: willing
attributes:
label: Are you willing to resolve this issue by submitting a Pull Request?
description: Remember that first-time contributors are welcome! 🙌
options:
- label: Yes, I have the time, and I know how to start.
- label: Yes, I have the time, but I don't know how to start. I would need guidance.
- label: No, I don't have the time, although I believe I could do it if I had the time...
- label: No, I don't have the time and I wouldn't even know how to start.
- type: markdown
attributes:
value: 👋 Have a great day and thank you for the feature request!
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
# Disabling blank issues to ensure all necessary information is provided
# Users should use the provided templates for specific issues
# For general questions, please refer to the contact links section
blank_issues_enabled: false
contact_links:
- name: Questions
url: https://github.com/voicepaw/so-vits-svc-fork/discussions/categories/q-a
about: Please ask and answer questions here.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
😀 Wonderful! Thank you for opening a pull request.
By submitting this pull request, you agree to follow our [Code of Conduct](https://github.com/voicepaw/so-vits-svc-fork/blob/main/.github/CODE_OF_CONDUCT.md).
Please fill in the information below to expedite the review
and (hopefully) merge of your change.
-->
### Description of change
<!--
Please be clear and concise what the change is intended to do,
why this change is needed, and how you've verified that it
corrects what you intended.
In some cases it may be helpful to include the current behavior
and the new behavior.
If the change is related to an open issue, you can link it here.
If you include `Fixes #0000` (replacing `0000` with the issue number)
when this is merged it will automatically mark the issue as fixed and
close it.
-->
### Pull-Request Checklist
<!--
Please make sure to review and check all of the following to merge this PR.
Note that there is no problem if they are not checked when this PR is created.
If an item is not applicable, you can add "N/A" to the end.
-->
- [ ] Code is up-to-date with the `main` branch
- [ ] This pull request follows the [contributing guidelines](https://github.com/voicepaw/so-vits-svc-fork/blob/main/CONTRIBUTING.md).
- [ ] This pull request links relevant issues as `Fixes #0000`
- [ ] There are new or updated unit tests validating the change
- [ ] Documentation has been updated to reflect this change
- [ ] The new commits follow conventions outlined in the [conventional commit spec](https://www.conventionalcommits.org/en/v1.0.0/), such as "fix(api): prevent racing of requests".
> - If pre-commit.ci is failing, try `pre-commit run -a` for further information.
> - If CI / test is failing, try `uv run pytest` for further information.
<!--
🎉 Thank you for contributing!
-->
================================================
FILE: .github/labels.toml
================================================
[breaking]
color = "ffcc00"
name = "breaking"
description = "Breaking change."
[bug]
color = "d73a4a"
name = "bug"
description = "Something isn't working"
[dependencies]
color = "0366d6"
name = "dependencies"
description = "Pull requests that update a dependency file"
[github_actions]
color = "000000"
name = "github_actions"
description = "Update of github actions"
[documentation]
color = "1bc4a5"
name = "documentation"
description = "Improvements or additions to documentation"
[duplicate]
color = "cfd3d7"
name = "duplicate"
description = "This issue or pull request already exists"
[enhancement]
color = "a2eeef"
name = "enhancement"
description = "New feature or request"
["good first issue"]
color = "7057ff"
name = "good first issue"
description = "Good for newcomers"
["help wanted"]
color = "008672"
name = "help wanted"
description = "Extra attention is needed"
[invalid]
color = "e4e669"
name = "invalid"
description = "This doesn't seem right"
[nochangelog]
color = "555555"
name = "nochangelog"
description = "Exclude pull requests from changelog"
[question]
color = "d876e3"
name = "question"
description = "Further information is requested"
[removed]
color = "e99695"
name = "removed"
description = "Removed piece of functionalities."
[tests]
color = "bfd4f2"
name = "tests"
description = "CI, CD and testing related changes"
[wontfix]
color = "ffffff"
name = "wontfix"
description = "This will not be worked on"
[discussion]
color = "c2e0c6"
name = "discussion"
description = "Some discussion around the project"
[hacktoberfest]
color = "ffa663"
name = "hacktoberfest"
description = "Good issues for Hacktoberfest"
[answered]
color = "0ee2b6"
name = "answered"
description = "Automatically closes as answered after a delay"
[waiting]
color = "5f7972"
name = "waiting"
description = "Automatically closes if no answer after a delay"
[fund]
color = "0E8A16"
name = "fund"
description = "Add a section linking to polar.sh for funding the issue."
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: 3.x
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
# Make sure commit messages follow the conventional commits convention:
# https://www.conventionalcommits.org
commitlint:
name: Lint Commit Messages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1
test:
strategy:
fail-fast: false
matrix:
python-version:
# - "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
os:
- ubuntu-latest
# - windows-latest
# - macOS-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
id: setup-python
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
- run: uv sync --no-python-downloads
shell: bash
- run: uv run pytest
shell: bash
- uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
release:
needs:
- test
- lint
- commitlint
runs-on: ubuntu-latest
environment: release
concurrency: release
permissions:
id-token: write
attestations: write
contents: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
ref: ${{ github.sha }}
- name: Checkout commit for release
run: |
git checkout -B ${{ github.ref_name }} ${{ github.sha }}
# Do a dry run of PSR
- name: Test release
uses: python-semantic-release/python-semantic-release@350c48fcb3ffcdfd2e0a235206bc2ecea6b69df0 # v10
if: github.ref_name != 'main'
with:
root_options: --noop
github_token: noop
# On main branch: actual PSR + upload to PyPI & GitHub
- name: Release
uses: python-semantic-release/python-semantic-release@350c48fcb3ffcdfd2e0a235206bc2ecea6b69df0 # v10
id: release
if: github.ref_name == 'main'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Attest build provenance
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4
if: steps.release.outputs.released == 'true'
with:
subject-path: "dist/*"
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: steps.release.outputs.released == 'true'
- name: Publish package distributions to GitHub Releases
uses: python-semantic-release/publish-action@310a9983a0ae878b29f3aac778d7c77c1db27378 # v10
if: steps.release.outputs.released == 'true'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ steps.release.outputs.tag }}
================================================
FILE: .github/workflows/hacktoberfest.yml
================================================
name: Hacktoberfest
on:
schedule:
# Run every day in October
- cron: "0 0 * 10 *"
# Run on the 1st of November to revert
- cron: "0 13 1 11 *"
jobs:
hacktoberfest:
runs-on: ubuntu-latest
steps:
- uses: browniebroke/hacktoberfest-labeler-action@72564cc2b8f1cd239fb6880cca150a1b8b6b027b # v2.6.0
with:
github_token: ${{ secrets.GH_PAT }}
================================================
FILE: .github/workflows/issue-manager.yml
================================================
name: Issue Manager
on:
schedule:
- cron: "0 0 * * *"
issue_comment:
types:
- created
issues:
types:
- labeled
pull_request_target:
types:
- labeled
workflow_dispatch:
jobs:
issue-manager:
runs-on: ubuntu-latest
steps:
- uses: tiangolo/issue-manager@2fb3484ec9279485df8659e8ec73de262431737d # 0.6.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
config: >
{
"answered": {
"message": "Assuming the original issue was solved, it will be automatically closed now."
},
"waiting": {
"message": "Automatically closing. To re-open, please provide the additional information requested."
}
}
================================================
FILE: .github/workflows/labels.yml
================================================
name: Sync Github labels
on:
push:
branches:
- main
paths:
- ".github/**"
jobs:
labels:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: 3.x
- name: Install labels
run: pip install labels
- name: Sync config with Github
run: labels -u ${{ github.repository_owner }} -t ${{ secrets.GH_PAT }} sync -f .github/labels.toml
================================================
FILE: .github/workflows/poetry-upgrade.yml
================================================
name: Upgrader
on:
workflow_dispatch:
schedule:
- cron: "29 23 16 * *"
jobs:
upgrade:
uses: browniebroke/github-actions/.github/workflows/poetry-upgrade.yml@a4a8428c6f76ab8848c94c5a649fa809aacf8688 # v1
secrets:
gh_pat: ${{ secrets.GH_PAT }}
================================================
FILE: .github/workflows/upgrader.yml
================================================
name: Upgrader
on:
workflow_dispatch:
schedule:
- cron: "15 11 3 1-9,11-12 *"
jobs:
upgrade:
uses: browniebroke/github-actions/.github/workflows/uv-upgrade.yml@a4a8428c6f76ab8848c94c5a649fa809aacf8688 # v1
secrets:
gh_pat: ${{ secrets.GH_PAT }}
================================================
FILE: .gitignore
================================================
# Created by .ignore support plugin (hsz.mobi)
### Python template
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder {{package_name}} settings
.spyderproject
.spyproject
# Rope {{package_name}} settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# additional files
tests/**/*.wav
!tests/dataset_raw/test/**/*.wav
tests/**/*.npy
tests/**/*.pt
tests/**/*.txt
tests/**/*.json
tests/**/*.pth
tests/**/*.download
tests/**/*.lab
tests/**/*.pdf
tests/**/*.csv
tests/**/*.ckpt
tests/**/*.yaml
*.tfevents.*
*.pt
user_gui_presets.json
logs
dataset
dataset_raw
configs
filelists
================================================
FILE: .gitpod.yml
================================================
tasks:
- command: |
pip install uv
PIP_USER=false uv sync
- command: |
pip install pre-commit
pre-commit install
PIP_USER=false pre-commit install-hooks
================================================
FILE: .pre-commit-config.yaml
================================================
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
exclude: "CHANGELOG.md|.copier-answers.yml|.all-contributorsrc|project"
default_stages: [pre-commit]
ci:
autofix_commit_msg: "chore(pre-commit.ci): auto fixes"
autoupdate_commit_msg: "chore(pre-commit.ci): pre-commit autoupdate"
repos:
- repo: https://github.com/commitizen-tools/commitizen
rev: v4.13.9
hooks:
- id: commitizen
stages: [commit-msg]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: debug-statements
- id: check-builtin-literals
- id: check-case-conflict
- id: check-docstring-first
- id: check-json
- id: check-toml
- id: check-xml
- id: check-yaml
- id: detect-private-key
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.20.0"
hooks:
- id: pyproject-fmt
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.10.12
hooks:
- id: uv-lock
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
hooks:
- id: prettier
args: ["--tab-width", "2"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.14
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
- repo: https://github.com/codespell-project/codespell
rev: v2.4.2
hooks:
- id: codespell
# - repo: https://github.com/pre-commit/mirrors-mypy
# rev: v1.15.0
# hooks:
# - id: mypy
# additional_dependencies: []
================================================
FILE: .readthedocs.yml
================================================
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.12"
commands:
- asdf plugin add uv
- asdf install uv latest
- asdf global uv latest
- uv sync --only-group docs --frozen
- uv run -m sphinx -T -b html -d docs/_build/doctrees -D language=en docs $READTHEDOCS_OUTPUT/html
# Build documentation in the docs directory with Sphinx
sphinx:
configuration: docs/conf.py
================================================
FILE: CHANGELOG.md
================================================
# Changelog
## v4.2.30 (2026-02-02)
### Bug fixes
- Fix `.json` files not included ([`922beed`](https://github.com/voicepaw/so-vits-svc-fork/commit/922beedff7d1efd7d54c75d92f2e090e18c58369))
## v4.2.29 (2025-10-27)
### Bug fixes
- Fix train not working ([`f90cc40`](https://github.com/voicepaw/so-vits-svc-fork/commit/f90cc40802a56ebb3a8ba1f1493ff8d6008fa57b))
### Documentation
- Better notebook ([`a80a296`](https://github.com/voicepaw/so-vits-svc-fork/commit/a80a296166ed0a872f93fc30f504b3a504e11f9e))
## v4.2.28 (2025-10-26)
### Documentation
- Better notebook ([`b3e9fe3`](https://github.com/voicepaw/so-vits-svc-fork/commit/b3e9fe3b6069ee0846701111c4dbc9c69924fbc6))
### Bug fixes
- Fix config templates not included ([`319ba6e`](https://github.com/voicepaw/so-vits-svc-fork/commit/319ba6e0ef2ee61c3f096e3e8e2c58665da42c8c))
## v4.2.27 (2025-09-10)
### Bug fixes
- Run copier recopy ([`b806ddb`](https://github.com/voicepaw/so-vits-svc-fork/commit/b806ddb4e14f2e82ad9349596d776bfdbd3ce4b7))
- Remove onnx deps ([`021c959`](https://github.com/voicepaw/so-vits-svc-fork/commit/021c95936ca1b459e79fc14e4d801ffccb48346a))
### Documentation
- Update civitai model url ([`0f015e3`](https://github.com/voicepaw/so-vits-svc-fork/commit/0f015e32aada5cf7481f91bbe6758e574c9c5f39))
## v4.2.26 (2024-07-29)
### Bug fixes
- Update dependency transformers to v4.43.3 ([`bd9262f`](https://github.com/voicepaw/so-vits-svc-fork/commit/bd9262f546eb9aaa8d9f9641f2d1faa361cf8ea8))
## v4.2.25 (2024-07-29)
### Bug fixes
- Update dependency torch to v2.4.0 ([`20549f6`](https://github.com/voicepaw/so-vits-svc-fork/commit/20549f6f4e1f59090d6bbfe45c43f62613effa0e))
## v4.2.24 (2024-07-18)
### Bug fixes
- Update dependency transformers to v4.42.4 ([`f949a07`](https://github.com/voicepaw/so-vits-svc-fork/commit/f949a071b542b4b699aaa39cf4cfb39d0b53950b))
## v4.2.23 (2024-07-18)
### Bug fixes
- Update dependency lightning to v2.3.3 ([`31edf05`](https://github.com/voicepaw/so-vits-svc-fork/commit/31edf05234d72401db02d994f27d611c4015a65b))
## v4.2.22 (2024-07-18)
### Bug fixes
- Update dependency fastapi to v0.111.1 ([`59ed5f3`](https://github.com/voicepaw/so-vits-svc-fork/commit/59ed5f32e67d4bb96fdd7b2bb606d1ce9e4bb9f0))
## v4.2.21 (2024-07-04)
### Bug fixes
- Update dependency transformers to v4.42.3 ([`b9c031c`](https://github.com/voicepaw/so-vits-svc-fork/commit/b9c031c6814c12c9d5e04ea19745b67f41f8e9ae))
## v4.2.20 (2024-07-04)
### Bug fixes
- Update dependency tensorboard to v2.17.0 ([`e5f3c13`](https://github.com/voicepaw/so-vits-svc-fork/commit/e5f3c1354dcda41c1fa3e518d0d5bc204800f03c))
## v4.2.19 (2024-07-04)
### Bug fixes
- Update dependency lightning to v2.3.2 ([`a7e299f`](https://github.com/voicepaw/so-vits-svc-fork/commit/a7e299ff882c5854ac4be88d21fe95ed1a159711))
## v4.2.18 (2024-07-04)
### Bug fixes
- Update dependency matplotlib to v3.9.1 ([`df6adf4`](https://github.com/voicepaw/so-vits-svc-fork/commit/df6adf461d2174b92ccc0aa6ee4b02a1c9e4634e))
## v4.2.17 (2024-07-04)
### Bug fixes
- Update dependency lightning to v2.3.1 ([`89da16b`](https://github.com/voicepaw/so-vits-svc-fork/commit/89da16bd89ac08c07334156d28ab7dac29a0f01e))
## v4.2.16 (2024-07-04)
### Bug fixes
- Update dependency scipy to v1.14.0 ([`45a1167`](https://github.com/voicepaw/so-vits-svc-fork/commit/45a1167f9d09a822e9dca2b497bed08edca6e919))
## v4.2.15 (2024-07-03)
### Bug fixes
- Update dependency torchcrepe to v0.0.23 ([`2d76d82`](https://github.com/voicepaw/so-vits-svc-fork/commit/2d76d82df14afc3ec6b89770997f267237f98d53))
## v4.2.14 (2024-07-03)
### Bug fixes
- Update dependency torch to v2.3.1 ([`cc51418`](https://github.com/voicepaw/so-vits-svc-fork/commit/cc514182b48a133ed2da249f3d3dc65b28870e74))
## v4.2.13 (2024-07-03)
### Bug fixes
- Update dependency sounddevice to v0.4.7 ([`4df53c2`](https://github.com/voicepaw/so-vits-svc-fork/commit/4df53c22579c9bfe236953bfe238dde0179cfaca))
## v4.2.12 (2024-07-03)
### Bug fixes
- Update dependency requests to v2.32.3 ([`e60876a`](https://github.com/voicepaw/so-vits-svc-fork/commit/e60876ab2c883ca1accb9488a5ee17232d4e4ce7))
## v4.2.11 (2024-07-02)
### Bug fixes
- Update dependency onnx to v1.16.1 ([`0d7ed17`](https://github.com/voicepaw/so-vits-svc-fork/commit/0d7ed171011bdcdf4ec701d1df53573ced09ddbf))
### Documentation
- Update docs ([`94b2412`](https://github.com/voicepaw/so-vits-svc-fork/commit/94b2412f95ee6cb194c37ae558c9ca03b23402db))
- Update docs ([`94b2412`](https://github.com/voicepaw/so-vits-svc-fork/commit/94b2412f95ee6cb194c37ae558c9ca03b23402db))
- Update docs ([`94b2412`](https://github.com/voicepaw/so-vits-svc-fork/commit/94b2412f95ee6cb194c37ae558c9ca03b23402db))
- Update docs ([`94b2412`](https://github.com/voicepaw/so-vits-svc-fork/commit/94b2412f95ee6cb194c37ae558c9ca03b23402db))
## v4.2.10 (2024-07-02)
### Bug fixes
- Replace pysimplegui with pysimplegui-4-foss ([`34e2e77`](https://github.com/voicepaw/so-vits-svc-fork/commit/34e2e77a7f258e09f4661a96645a5f79d761cbed))
## v4.2.9 (2024-05-23)
### Bug fixes
- Update dependency transformers to v4.41.1 ([`42c69fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/42c69fd48146f6b43f9dbfac53339ad573d61acd))
## v4.2.8 (2024-05-22)
### Bug fixes
- Update dependency lightning to v2.2.5 ([`6a457dc`](https://github.com/voicepaw/so-vits-svc-fork/commit/6a457dc4996220cebe0ce54d7f116873f1cf94f3))
## v4.2.7 (2024-05-22)
### Bug fixes
- Update dependency requests to v2.32.2 ([`28e1be1`](https://github.com/voicepaw/so-vits-svc-fork/commit/28e1be1ef191badbe314cf232e932646fd6811d1))
## v4.2.6 (2024-05-18)
### Bug fixes
- Update dependency transformers to v4.41.0 ([`9d20b50`](https://github.com/voicepaw/so-vits-svc-fork/commit/9d20b509e210d20cb7005a58c6408830522b94cf))
## v4.2.5 (2024-05-16)
### Bug fixes
- Update dependency matplotlib to v3.9.0 ([`ed95519`](https://github.com/voicepaw/so-vits-svc-fork/commit/ed9551956bbae36164f9404bad87ac78d7a326c5))
## v4.2.4 (2024-05-16)
### Bug fixes
- Update dependency tqdm-joblib to ^0.0.4 ([`06ea73c`](https://github.com/voicepaw/so-vits-svc-fork/commit/06ea73cd3a82cc058df5b5973aa6edf97d4d708e))
## v4.2.3 (2024-05-10)
### Bug fixes
- Update dependency fastapi to v0.111.0 ([`ee70d52`](https://github.com/voicepaw/so-vits-svc-fork/commit/ee70d522ab1943513517d5068e17c1e5578b09ce))
## v4.2.2 (2024-05-10)
### Bug fixes
- Fix format selection for the input audio in non-windows ([`8168cb4`](https://github.com/voicepaw/so-vits-svc-fork/commit/8168cb404648c23e3ac5f3d2418bf38a606710e4))
- Fix format selection for the input audio in non-windows ([`8168cb4`](https://github.com/voicepaw/so-vits-svc-fork/commit/8168cb404648c23e3ac5f3d2418bf38a606710e4))
## v4.2.1 (2024-05-10)
### Bug fixes
- Support python 3.12, end support for python 3.8, explicitly specify click as a dependency, update deps ([`a7ceffa`](https://github.com/voicepaw/so-vits-svc-fork/commit/a7ceffa57566082f2a4ce9842be236505681d629))
### Documentation
- Replace 3.10 with 3.11 ([`a7ceffa`](https://github.com/voicepaw/so-vits-svc-fork/commit/a7ceffa57566082f2a4ce9842be236505681d629))
## v4.2.0 (2024-04-11)
### Features
- Add leading zeros for 4-digit width of the output file name's numeric part #1154 ([`41b147f`](https://github.com/voicepaw/so-vits-svc-fork/commit/41b147f6c20873fc1cfeaae50d27b7b80d5fdeb6))
### Documentation
- Add annagorshunova as a contributor for bug, and code ([`50f6d79`](https://github.com/voicepaw/so-vits-svc-fork/commit/50f6d79f81d443c3dea9a4de3c65dca6988080ac))
- Update readme.md [skip ci] ([`50f6d79`](https://github.com/voicepaw/so-vits-svc-fork/commit/50f6d79f81d443c3dea9a4de3c65dca6988080ac))
- Update .all-contributorsrc [skip ci] ([`50f6d79`](https://github.com/voicepaw/so-vits-svc-fork/commit/50f6d79f81d443c3dea9a4de3c65dca6988080ac))
### Bug fixes
- Set speaker-diarization version to 3.1 for pyannote.audio 3.1.1 compatibility ([`9bd3089`](https://github.com/voicepaw/so-vits-svc-fork/commit/9bd3089d87be0c4e7bd0fbed51c06c203ad55474))
## v4.1.61 (2024-04-06)
### Bug fixes
- Update dependency fastapi to v0.110.1 ([`eab647c`](https://github.com/voicepaw/so-vits-svc-fork/commit/eab647c8e21b954aa082b8319f084ae080105180))
### Documentation
- Add priyanshu-hawk as a contributor for code ([`d6888db`](https://github.com/voicepaw/so-vits-svc-fork/commit/d6888db4204f87b7075d41371edf08c050179912))
- Update readme.md [skip ci] ([`d6888db`](https://github.com/voicepaw/so-vits-svc-fork/commit/d6888db4204f87b7075d41371edf08c050179912))
- Update .all-contributorsrc [skip ci] ([`d6888db`](https://github.com/voicepaw/so-vits-svc-fork/commit/d6888db4204f87b7075d41371edf08c050179912))
- Add marcellocirelli as a contributor for bug ([`8795709`](https://github.com/voicepaw/so-vits-svc-fork/commit/879570933831cdee3f325c94fc5b4e3fd172990f))
- Update readme.md [skip ci] ([`8795709`](https://github.com/voicepaw/so-vits-svc-fork/commit/879570933831cdee3f325c94fc5b4e3fd172990f))
- Update .all-contributorsrc [skip ci] ([`8795709`](https://github.com/voicepaw/so-vits-svc-fork/commit/879570933831cdee3f325c94fc5b4e3fd172990f))
## v4.1.60 (2024-04-06)
### Documentation
- Add description of repository maintenance status ([`3f537b0`](https://github.com/voicepaw/so-vits-svc-fork/commit/3f537b0919c0e651297c190ede9eb3c03782f319))
- Add samuelswartzberg as a contributor for security ([`cddb722`](https://github.com/voicepaw/so-vits-svc-fork/commit/cddb72236f00d00a566a27a0243b71abbd615c64))
- Update readme.md [skip ci] ([`cddb722`](https://github.com/voicepaw/so-vits-svc-fork/commit/cddb72236f00d00a566a27a0243b71abbd615c64))
- Update .all-contributorsrc [skip ci] ([`cddb722`](https://github.com/voicepaw/so-vits-svc-fork/commit/cddb72236f00d00a566a27a0243b71abbd615c64))
- Update pytorch urls ([`c0c5376`](https://github.com/voicepaw/so-vits-svc-fork/commit/c0c537639c72455328f98d147c06bd8f86030399))
- Add 4ll0w3v1l as a contributor for code ([`df699c7`](https://github.com/voicepaw/so-vits-svc-fork/commit/df699c7284149f79238b783f530d058b2a272447))
- Update readme.md [skip ci] ([`df699c7`](https://github.com/voicepaw/so-vits-svc-fork/commit/df699c7284149f79238b783f530d058b2a272447))
- Update .all-contributorsrc [skip ci] ([`df699c7`](https://github.com/voicepaw/so-vits-svc-fork/commit/df699c7284149f79238b783f530d058b2a272447))
### Bug fixes
- Disallow pysimplegui>=5, update deps, update pytorch urls in readme.md ([`c0c5376`](https://github.com/voicepaw/so-vits-svc-fork/commit/c0c537639c72455328f98d147c06bd8f86030399))
- Disallow pysimplegui>=5 ([`c0c5376`](https://github.com/voicepaw/so-vits-svc-fork/commit/c0c537639c72455328f98d147c06bd8f86030399))
## v4.1.59 (2024-04-06)
### Bug fixes
- Fix broken scipy imports in _pqmf.py ([`b7639ca`](https://github.com/voicepaw/so-vits-svc-fork/commit/b7639ca3a2b283f371a14ce176fe5d0e1d74581e))
## v4.1.58 (2024-03-25)
### Bug fixes
- Update dependency transformers to v4.39.1 ([`a274333`](https://github.com/voicepaw/so-vits-svc-fork/commit/a274333e764ea56aa099033de24279619b4f2210))
## v4.1.57 (2024-03-25)
### Bug fixes
- Update dependency pebble to v5.0.7 ([`e14b62f`](https://github.com/voicepaw/so-vits-svc-fork/commit/e14b62f11f8ed245a05c663381b086e92f76f2c6))
## v4.1.56 (2024-03-05)
### Bug fixes
- Update dependency lightning to v2.2.1 ([`a84d26b`](https://github.com/voicepaw/so-vits-svc-fork/commit/a84d26ba6614c3cf1ca3415ee5131e77867f5d10))
## v4.1.55 (2024-03-04)
### Bug fixes
- Update dependency onnxsim to v0.4.36 ([`12761e8`](https://github.com/voicepaw/so-vits-svc-fork/commit/12761e8989f43864b9f35f1dc144f5bc4dea1ac0))
## v4.1.54 (2024-03-03)
### Bug fixes
- Update dependency transformers to v4.38.2 ([`cfc4edb`](https://github.com/voicepaw/so-vits-svc-fork/commit/cfc4edb570d5381f044cc9db51f291744c118f87))
## v4.1.53 (2024-02-28)
### Bug fixes
- Update dependency rich to v13.7.1 ([`21f33d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/21f33d6494f09b62e2b97ceb356be7d6fa6560bc))
## v4.1.52 (2024-02-25)
### Bug fixes
- Update dependency fastapi to v0.110.0 ([`29fc759`](https://github.com/voicepaw/so-vits-svc-fork/commit/29fc7592dae3a16c310a159ebe94df5f64ac2271))
## v4.1.51 (2024-02-23)
### Bug fixes
- Update dependency torch to v2.2.1 ([`bbc73c1`](https://github.com/voicepaw/so-vits-svc-fork/commit/bbc73c1b15608a8d4b1cf564ac2183044a94bdc6))
## v4.1.50 (2024-02-22)
### Bug fixes
- Update dependency transformers to v4.38.1 ([`c90cfee`](https://github.com/voicepaw/so-vits-svc-fork/commit/c90cfee4dbcd29f6fd54193d506232c4a1ab0fe7))
## v4.1.49 (2024-02-21)
### Bug fixes
- Update dependency transformers to v4.38.0 ([`4dec304`](https://github.com/voicepaw/so-vits-svc-fork/commit/4dec3048ed3fd208ed9b24dfe2e17338adcc8253))
## v4.1.48 (2024-02-16)
### Bug fixes
- Update dependency matplotlib to v3.8.3 ([`e8eab7f`](https://github.com/voicepaw/so-vits-svc-fork/commit/e8eab7f9fc47c1ddc7c2753705abfdbafbc53f69))
## v4.1.47 (2024-02-10)
### Bug fixes
- Update dependency tqdm to v4.66.2 ([`4516483`](https://github.com/voicepaw/so-vits-svc-fork/commit/451648353d5d473dfa058d75ce4953db67422506))
## v4.1.46 (2024-02-08)
### Bug fixes
- Update dependency lightning to v2.2.0 ([`f7b2a42`](https://github.com/voicepaw/so-vits-svc-fork/commit/f7b2a427f11cab439b03ec6ec87a5794b184aa57))
## v4.1.45 (2024-02-05)
### Bug fixes
- Update dependency fastapi to v0.109.2 ([`c570f8e`](https://github.com/voicepaw/so-vits-svc-fork/commit/c570f8e37b7c1b9ab0faada3c4f7f37a7e8fe896))
## v4.1.44 (2024-02-03)
### Bug fixes
- Update dependency fastapi to v0.109.1 ([`6ee83d5`](https://github.com/voicepaw/so-vits-svc-fork/commit/6ee83d5931c2e2f5f3658ce96a83bec53e6e1d73))
## v4.1.43 (2024-02-02)
### Bug fixes
- Update dependency lightning to v2.1.4 ([`33334fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/33334fd9a0e112a811b5ad90cedc0e1929f10e89))
## v4.1.42 (2024-01-30)
### Bug fixes
- Update dependency torch to v2.2.0 ([`8750059`](https://github.com/voicepaw/so-vits-svc-fork/commit/875005917101170e755b4dca7fe223436fb3e41e))
## v4.1.41 (2024-01-29)
### Bug fixes
- Update dependency transformers to v4.37.2 ([`69c59b8`](https://github.com/voicepaw/so-vits-svc-fork/commit/69c59b8180cd489f30b5f13bc037c9928e1e65ba))
### Documentation
- Add onako2 as a contributor for doc ([`b204663`](https://github.com/voicepaw/so-vits-svc-fork/commit/b204663d36a1bf1ed5a2af23866824ed9c5dce43))
- Update readme.md [skip ci] ([`b204663`](https://github.com/voicepaw/so-vits-svc-fork/commit/b204663d36a1bf1ed5a2af23866824ed9c5dce43))
- Update .all-contributorsrc [skip ci] ([`b204663`](https://github.com/voicepaw/so-vits-svc-fork/commit/b204663d36a1bf1ed5a2af23866824ed9c5dce43))
## v4.1.40 (2024-01-24)
### Bug fixes
- Update dependency transformers to v4.37.1 ([`d8be0d0`](https://github.com/voicepaw/so-vits-svc-fork/commit/d8be0d01361a00fb71477daab666a75a33d0fd49))
## v4.1.39 (2024-01-22)
### Bug fixes
- Update dependency transformers to v4.37.0 ([`7b405c6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7b405c6daff500c4f60f37cc430cbf364e95bd26))
## v4.1.38 (2024-01-11)
### Bug fixes
- Update dependency fastapi to v0.109.0 ([`565be56`](https://github.com/voicepaw/so-vits-svc-fork/commit/565be56fcc4c62e4f2099db8108bb2c982326411))
## v4.1.37 (2024-01-03)
### Bug fixes
- Update dependency transformers to v4.36.2 ([`7e18425`](https://github.com/voicepaw/so-vits-svc-fork/commit/7e18425b8d1c29820fff30df0bb7c6ee6d24e22d))
## v4.1.36 (2024-01-03)
### Bug fixes
- Update dependency fastapi to v0.108.0 ([`091805c`](https://github.com/voicepaw/so-vits-svc-fork/commit/091805c1d070922318ef10389ab225788db89dd7))
## v4.1.35 (2024-01-03)
### Bug fixes
- Update dependency torch to v2.1.2 ([`77586fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/77586fd8d1eded848cc334aac46be35202da2e0a))
## v4.1.34 (2024-01-03)
### Bug fixes
- Update dependency pebble to v5.0.6 ([`546db40`](https://github.com/voicepaw/so-vits-svc-fork/commit/546db40768114fcfab4a15a8c9b28398a8075446))
## v4.1.33 (2024-01-02)
### Bug fixes
- Update dependency lightning to v2.1.3 ([`47b15e6`](https://github.com/voicepaw/so-vits-svc-fork/commit/47b15e6ba439239ea5459f01321e7a8d2c681ae4))
## v4.1.32 (2023-11-21)
### Bug fixes
- Update dependency pebble to v5.0.4 ([`a8dc5d7`](https://github.com/voicepaw/so-vits-svc-fork/commit/a8dc5d7f88f0117291ba90fce23e3b1eebc52902))
## v4.1.31 (2023-11-18)
### Bug fixes
- Update dependency matplotlib to v3.8.2 ([`68eb536`](https://github.com/voicepaw/so-vits-svc-fork/commit/68eb536b4a45a61803ffbab57a1a5c932b2dedcb))
## v4.1.30 (2023-11-16)
### Bug fixes
- Update dependency torch to v2.1.1 ([`1911035`](https://github.com/voicepaw/so-vits-svc-fork/commit/19110358c12306b087af11837b43baf7d626e500))
## v4.1.29 (2023-11-16)
### Bug fixes
- Update dependency lightning to v2.1.2 ([`58c8d5a`](https://github.com/voicepaw/so-vits-svc-fork/commit/58c8d5aa65dc55b53ed9dce25b7f08280fff5fba))
## v4.1.28 (2023-11-16)
### Bug fixes
- Update dependency rich to v13.7.0 ([`1be5442`](https://github.com/voicepaw/so-vits-svc-fork/commit/1be54422e5383900fac818f7b9d33b31eac4ee92))
## v4.1.27 (2023-11-15)
### Bug fixes
- Update dependency transformers to v4.35.2 ([`77ee0c0`](https://github.com/voicepaw/so-vits-svc-fork/commit/77ee0c0384c02c34c85ec77a8b8e1cfad2f94caf))
## v4.1.26 (2023-11-14)
### Bug fixes
- Update dependency transformers to v4.35.1 ([`fa503ce`](https://github.com/voicepaw/so-vits-svc-fork/commit/fa503ce412d6afcd859375255fb128b33a648465))
### Documentation
- Add shinyjustyz as a contributor for bug, and code ([`acd6a8e`](https://github.com/voicepaw/so-vits-svc-fork/commit/acd6a8e4733ad1dbe94f118599aafa87f23ce89f))
- Update readme.md [skip ci] ([`acd6a8e`](https://github.com/voicepaw/so-vits-svc-fork/commit/acd6a8e4733ad1dbe94f118599aafa87f23ce89f))
- Update .all-contributorsrc [skip ci] ([`acd6a8e`](https://github.com/voicepaw/so-vits-svc-fork/commit/acd6a8e4733ad1dbe94f118599aafa87f23ce89f))
## v4.1.25 (2023-11-09)
### Bug fixes
- Make pyanote.audio use gpu ([`c9d49ca`](https://github.com/voicepaw/so-vits-svc-fork/commit/c9d49ca8a903e1bf6e8a6ac9c6a8365077bedad4))
## v4.1.24 (2023-11-08)
### Bug fixes
- Update dependency lightning to v2.1.1 ([`ce8efce`](https://github.com/voicepaw/so-vits-svc-fork/commit/ce8efcefb8df2601941cae0d63e843e49ffbdfb6))
## v4.1.23 (2023-11-02)
### Bug fixes
- Update dependency transformers to v4.35.0 ([`bb05569`](https://github.com/voicepaw/so-vits-svc-fork/commit/bb055692363677cf48f22baef2b72b255fc74182))
## v4.1.22 (2023-10-30)
### Bug fixes
- Update dependency fastapi to v0.104.1 ([`dbd4490`](https://github.com/voicepaw/so-vits-svc-fork/commit/dbd44909e3aabb2787e136036c1e2ca9ab6b9316))
## v4.1.21 (2023-10-26)
### Bug fixes
- Update dependency onnx to v1.15.0 ([`5736bf7`](https://github.com/voicepaw/so-vits-svc-fork/commit/5736bf7e257dbd39c64ac73f3593ffebaa559def))
## v4.1.20 (2023-10-26)
### Bug fixes
- Update python to >=3.8,<3.13 ([`031712a`](https://github.com/voicepaw/so-vits-svc-fork/commit/031712a70177f20610f8fefd20f49036dfe15721))
## v4.1.19 (2023-10-21)
### Bug fixes
- Update dependency onnxsim to v0.4.35 ([`dd89347`](https://github.com/voicepaw/so-vits-svc-fork/commit/dd89347e863fd7a40683447463dfb665522a1d10))
## v4.1.18 (2023-10-21)
### Bug fixes
- Update dependency onnxsim to v0.4.34 ([`3d2d4af`](https://github.com/voicepaw/so-vits-svc-fork/commit/3d2d4af65221ded497e3e805dfb48792ab20640f))
## v4.1.17 (2023-10-19)
### Bug fixes
- Update dependency transformers to v4.34.1 ([`78c2d4c`](https://github.com/voicepaw/so-vits-svc-fork/commit/78c2d4c850c7cee2e58dc7e0ad10243e55247f64))
## v4.1.16 (2023-10-18)
### Bug fixes
- Update dependency fastapi to v0.104.0 ([`6440667`](https://github.com/voicepaw/so-vits-svc-fork/commit/6440667b03cc79519b9e83aa08757c21d17bcf99))
## v4.1.15 (2023-10-13)
### Bug fixes
- Update dependency rich to v13.6.0 ([`9ae0737`](https://github.com/voicepaw/so-vits-svc-fork/commit/9ae073700058ff17ab5a8a0a781fb3fe942e1994))
## v4.1.14 (2023-10-13)
### Bug fixes
- Update dependency lightning to v2.1.0 ([`4637f69`](https://github.com/voicepaw/so-vits-svc-fork/commit/4637f693ea994c5180ec7a517bea6e5ddd8445aa))
- Update dependency transformers to v4.34.0 ([`6bb2555`](https://github.com/voicepaw/so-vits-svc-fork/commit/6bb2555ace79487a4252a23ba7915a5b3676629e))
## v4.1.13 (2023-10-13)
### Bug fixes
- Update dependency librosa to v0.10.1 ([`3ae20b7`](https://github.com/voicepaw/so-vits-svc-fork/commit/3ae20b7cbcc2fbfc72a2c8cb73a653bb7ee863a1))
- Update dependency torchcrepe to v0.0.22 ([`ad7b2bf`](https://github.com/voicepaw/so-vits-svc-fork/commit/ad7b2bfa23e9e669b46976b796fb58d6b4829ce3))
## v4.1.12 (2023-10-13)
### Bug fixes
- Update dependency fastapi to v0.103.2 ([`02cea64`](https://github.com/voicepaw/so-vits-svc-fork/commit/02cea643631e2c39265c7f4f58e40cea18e707e6))
## v4.1.11 (2023-09-23)
### Documentation
- Replace "34j" with "voicepaw" ([`c1e6c0c`](https://github.com/voicepaw/so-vits-svc-fork/commit/c1e6c0c0c61d4a99eb1a19e8ca0f619d9a07146a))
### Bug fixes
- Update python to >=3.11,<3.12 ([`a5455b9`](https://github.com/voicepaw/so-vits-svc-fork/commit/a5455b92f7228fc01d51cdbfb7da6e9241c7fcca))
## v4.1.10 (2023-09-17)
### Bug fixes
- Update dependency rich to v13.5.3 ([`e692e8c`](https://github.com/voicepaw/so-vits-svc-fork/commit/e692e8cd81dc648edcd60503a52274a8b9738dab))
## v4.1.9 (2023-09-16)
### Bug fixes
- Update dependency transformers to v4.33.2 ([`7a8e54f`](https://github.com/voicepaw/so-vits-svc-fork/commit/7a8e54f10d0679df8419cc1cf934434f9f08e9b9))
## v4.1.8 (2023-09-15)
### Bug fixes
- Update dependency lightning to v2.0.9 ([`dcde3d1`](https://github.com/voicepaw/so-vits-svc-fork/commit/dcde3d1a0b67e4825a709d19f5708b086b6c35e7))
## v4.1.7 (2023-09-12)
### Bug fixes
- Update dependency matplotlib to v3.7.3 ([`302d5a7`](https://github.com/voicepaw/so-vits-svc-fork/commit/302d5a7dd0f0578d9f126c898b1c871f22987742))
## v4.1.6 (2023-09-06)
### Bug fixes
- Update dependency transformers to v4.33.1 ([`f3e3b68`](https://github.com/voicepaw/so-vits-svc-fork/commit/f3e3b689d416f7191b8c5a25976afb0b11b4a3c7))
## v4.1.5 (2023-09-05)
### Bug fixes
- Update dependency transformers to v4.33.0 ([`146d3ae`](https://github.com/voicepaw/so-vits-svc-fork/commit/146d3ae33aeb7b7440b47a89f286ec2dfe4c689f))
## v4.1.4 (2023-09-02)
### Bug fixes
- Update dependency fastapi to v0.103.1 ([`f7473aa`](https://github.com/voicepaw/so-vits-svc-fork/commit/f7473aa1226c8aed89b44f6d08bea05dba68e882))
## v4.1.3 (2023-08-30)
### Bug fixes
- Update dependency lightning to v2.0.8 ([`825fa44`](https://github.com/voicepaw/so-vits-svc-fork/commit/825fa44279bd7c3c2812efafe4f9757803f04519))
## v4.1.2 (2023-08-28)
### Bug fixes
- Update dependency transformers to v4.32.1 ([`da7a72f`](https://github.com/voicepaw/so-vits-svc-fork/commit/da7a72ff0b11231793e48ac5fcb38a1b022fa26b))
### Documentation
- Add instructions for pipx installation, update torch urls ([`0b02c49`](https://github.com/voicepaw/so-vits-svc-fork/commit/0b02c49edb5701becfe141645f0e3fc00c241944))
- Add shenberg as a contributor for usertesting, ideas, and code ([`319ddf3`](https://github.com/voicepaw/so-vits-svc-fork/commit/319ddf35e2f7e915bbf786fa785ec2734f4b0c00))
## v4.1.1 (2023-07-02)
### Bug fixes
- Remove weight norm on inference so metal backend will work without cpu fallback ([`39ea0bc`](https://github.com/voicepaw/so-vits-svc-fork/commit/39ea0bc57f39fdbbcf07c92fab310474d95d1d39))
## v4.1.0 (2023-06-25)
### Documentation
- Add zerui18 as a contributor for code, and ideas ([`4e74fc4`](https://github.com/voicepaw/so-vits-svc-fork/commit/4e74fc4f2f9165a48d75565ae5d0910b6b77dbaf))
- Add ph0rk0z as a contributor for bug, and code ([`8dc25c7`](https://github.com/voicepaw/so-vits-svc-fork/commit/8dc25c793a8a92985ac589b31cc863768a9ba6a7))
### Features
- Add batched loading to clustering & max length per clip to split ([`4179ec9`](https://github.com/voicepaw/so-vits-svc-fork/commit/4179ec9e1d1ac20cffc9e66f522b5f865828f7fe))
## v4.0.3 (2023-06-25)
### Documentation
- Add star3lord as a contributor for bug, and code ([`b3e2cfe`](https://github.com/voicepaw/so-vits-svc-fork/commit/b3e2cfe1294e7b64f76cd34c5b527a080ede2e87))
### Bug fixes
- Pass str instead of path in sf.load() and sf.write() ([`561cbfe`](https://github.com/voicepaw/so-vits-svc-fork/commit/561cbfe64927371ea68c0be70b4bc5007f6514b4))
## v4.0.2 (2023-06-14)
### Bug fixes
- Fix typo in core.py ([`6a87d32`](https://github.com/voicepaw/so-vits-svc-fork/commit/6a87d323ec7716f09062e4846c31e58758a27e33))
## v4.0.1 (2023-05-29)
### Bug fixes
- Fix window scaling ([`9cd720c`](https://github.com/voicepaw/so-vits-svc-fork/commit/9cd720c60d7baa6a945610f674820e14c4833917))
## v4.0.0 (2023-05-29)
### Features
- Update pretrained model url, raise error if there are no files to preprocess, shuffle files consistently ([`c4c719c`](https://github.com/voicepaw/so-vits-svc-fork/commit/c4c719cdddd0e8f7703a02474208451729ab6d18))
- Update urls for pretrained models ([`c4c719c`](https://github.com/voicepaw/so-vits-svc-fork/commit/c4c719cdddd0e8f7703a02474208451729ab6d18))
## v3.15.0 (2023-05-22)
### Features
- Add gui command for module root entrypoint ([`3940a4c`](https://github.com/voicepaw/so-vits-svc-fork/commit/3940a4c0f51943dc3caec0832850f110b0f27961))
- Add gui command to __main__ ([`3940a4c`](https://github.com/voicepaw/so-vits-svc-fork/commit/3940a4c0f51943dc3caec0832850f110b0f27961))
- Add gui command to __main__ ([`3940a4c`](https://github.com/voicepaw/so-vits-svc-fork/commit/3940a4c0f51943dc3caec0832850f110b0f27961))
- Add gui cli command ([`3940a4c`](https://github.com/voicepaw/so-vits-svc-fork/commit/3940a4c0f51943dc3caec0832850f110b0f27961))
## v3.14.1 (2023-05-07)
### Bug fixes
- Replace pyinputplus with normal input ([`2b507da`](https://github.com/voicepaw/so-vits-svc-fork/commit/2b507da7da68f6baf00e5b0437d2d08e2d4f1246))
## v3.14.0 (2023-05-06)
### Features
- Add batch inference, enhance gui, add custom theme ([`3ce110b`](https://github.com/voicepaw/so-vits-svc-fork/commit/3ce110be72aa2c614f24249ee26f00cba03f16a8))
## v3.13.3 (2023-05-06)
### Documentation
- Add meldoner as a contributor for ideas, and code ([`880fea8`](https://github.com/voicepaw/so-vits-svc-fork/commit/880fea84696938b6636332d8c5d88664adae4004))
### Bug fixes
- Complete removal of ckpts in colab ([`e8964c6`](https://github.com/voicepaw/so-vits-svc-fork/commit/e8964c604bba31a9a8fa0a27bb5ea72a49a5fa5b))
## v3.13.2 (2023-05-06)
### Bug fixes
- Always refresh output path if input path changed ([`f79de0c`](https://github.com/voicepaw/so-vits-svc-fork/commit/f79de0c81b6e748f8aa87ab94895c738f1808fcf))
### Documentation
- Fix minor issues in readme.md ([`139ed18`](https://github.com/voicepaw/so-vits-svc-fork/commit/139ed182a39a779d8cbdcefc8022a0ed7ff604cd))
- Add notes about minimum requirements ([`ae9aece`](https://github.com/voicepaw/so-vits-svc-fork/commit/ae9aece9529145ed76aec24febdc77c07522a110))
## v3.13.1 (2023-05-04)
### Bug fixes
- Remove filehandler to avoid permissionerror ([`38e0c4e`](https://github.com/voicepaw/so-vits-svc-fork/commit/38e0c4ed471c4520571a1585d868e325ea1a57e3))
## v3.13.0 (2023-05-04)
### Documentation
- Add maximxlss as a contributor for code ([`435ca3c`](https://github.com/voicepaw/so-vits-svc-fork/commit/435ca3c58ab48934622c3d192cc11fd130a4a6f7))
### Features
- Add max_chunk_seconds option ([`101b948`](https://github.com/voicepaw/so-vits-svc-fork/commit/101b9484a86cce634a71054e5b8110998566197b))
## v3.12.1 (2023-04-30)
### Documentation
- Add scorpi as a contributor for code ([`542d3a8`](https://github.com/voicepaw/so-vits-svc-fork/commit/542d3a8382d97064f13c1dcc4ba11107614dec3f))
### Bug fixes
- Fix epoch variable name to log in checkpoint save/load functions ([`0530ea3`](https://github.com/voicepaw/so-vits-svc-fork/commit/0530ea34fa42d9af51c73872b02d6453427c5a00))
## v3.12.0 (2023-04-30)
### Features
- Add pre-classify command to manually classify files ([`7a0319c`](https://github.com/voicepaw/so-vits-svc-fork/commit/7a0319c65f42b0cc54d1d86ae5945d4a356b507a))
## v3.11.2 (2023-04-30)
### Bug fixes
- Decouple lf0 predictor from speaker embeddings ([`7ab47f4`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ab47f44e2ec77aa8c9e36b2e322d2dca0f94fb0))
## v3.11.1 (2023-04-30)
### Documentation
- Add highupech as a contributor for bug ([`8eedc24`](https://github.com/voicepaw/so-vits-svc-fork/commit/8eedc2439b6987f70c94033c3f375ea330498a64))
- Fix typo in readme.md ([`1773940`](https://github.com/voicepaw/so-vits-svc-fork/commit/1773940ae4a17a522ebc9fe6c1c70c3e02728341))
- Add acekagami as a contributor for translation ([`958b9fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/958b9fdf5fd1d527b63ac488ad21db2ce90539aa))
- Update readme.md [skip ci] ([`958b9fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/958b9fdf5fd1d527b63ac488ad21db2ce90539aa))
- Update .all-contributorsrc [skip ci] ([`958b9fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/958b9fdf5fd1d527b63ac488ad21db2ce90539aa))
- Update readme_zh_cn.md ([`1ccd594`](https://github.com/voicepaw/so-vits-svc-fork/commit/1ccd5941e5f17a273dad681301a287aafb7973d9))
### Bug fixes
- Specify encoding to utf-8 in read_text() and write_text() ([`e947336`](https://github.com/voicepaw/so-vits-svc-fork/commit/e94733678955430f4e0c8ee5a26627077c0ffad9))
## v3.11.0 (2023-04-23)
### Documentation
- Add alexanderkoumis as a contributor for code ([`5e032a3`](https://github.com/voicepaw/so-vits-svc-fork/commit/5e032a3e1eb36b0a7f99fd440b3e2a82f2345747))
- Update readme.md [skip ci] ([`5e032a3`](https://github.com/voicepaw/so-vits-svc-fork/commit/5e032a3e1eb36b0a7f99fd440b3e2a82f2345747))
- Update .all-contributorsrc [skip ci] ([`5e032a3`](https://github.com/voicepaw/so-vits-svc-fork/commit/5e032a3e1eb36b0a7f99fd440b3e2a82f2345747))
### Features
- Configurable output file (#452) ([`d2e3596`](https://github.com/voicepaw/so-vits-svc-fork/commit/d2e3596d5c0874918712488765e068f4010d62b9))
## v3.10.5 (2023-04-22)
### Bug fixes
- Fix so-vits-svc style contentvec usage ([`6d35139`](https://github.com/voicepaw/so-vits-svc-fork/commit/6d351390354b17a2cd004bc9572d7dc1202f236c))
## v3.10.4 (2023-04-21)
### Bug fixes
- Only save checkpoints on main device ([`1aaaac6`](https://github.com/voicepaw/so-vits-svc-fork/commit/1aaaac6328476249371799b92ced3edcbaac8d18))
### Documentation
- Add sbersier as a contributor for bug ([`58b936d`](https://github.com/voicepaw/so-vits-svc-fork/commit/58b936d669fbf5156f1ae1381393762994dd7414))
- Add escoolioinglesias as a contributor for video ([`69f097f`](https://github.com/voicepaw/so-vits-svc-fork/commit/69f097f388447d64b7807cf554a5c310c34b7ef0))
- Add garrettconway as a contributor for review ([`c1e4ada`](https://github.com/voicepaw/so-vits-svc-fork/commit/c1e4ada97739bf0b360295335475fef7029fbe49))
- Add blueamulet as a contributor for maintenance ([`514ed84`](https://github.com/voicepaw/so-vits-svc-fork/commit/514ed84ffda901243c1bd6f39677eb020257f11f))
- Add guranon as a contributor for bug, ideas, and code ([`b9eb3fd`](https://github.com/voicepaw/so-vits-svc-fork/commit/b9eb3fdc350588b9528a74d5b7be8e80b2bfbd51))
- Add zerohackz as a contributor for bug, and code ([`66d5adc`](https://github.com/voicepaw/so-vits-svc-fork/commit/66d5adcf6dbb60fd6b6800162e3e16570a8dac1c))
- Add tybantarnusa as a contributor for bug ([`e6e57b3`](https://github.com/voicepaw/so-vits-svc-fork/commit/e6e57b3e0d97ac91cadde45d5f080ced873df959))
- Add blacksingh as a contributor for bug ([`7bc76ba`](https://github.com/voicepaw/so-vits-svc-fork/commit/7bc76ba9355089ab94fce9231f5dbbdd54e849ee))
- Add escoolioinglesias as a contributor for bug, and usertesting ([`f00fe6e`](https://github.com/voicepaw/so-vits-svc-fork/commit/f00fe6e15cd12085cd01ae3c2676c195e7924429))
- Add outhipped as a contributor for bug ([`7497175`](https://github.com/voicepaw/so-vits-svc-fork/commit/74971752821a852154bbfc35c318bb05e7b1169c))
- Add yxlllc as a contributor for ideas, and code ([`42e35d2`](https://github.com/voicepaw/so-vits-svc-fork/commit/42e35d2a1f83be25e3fb0318e694163b0e936c59))
- Add lordmau5 as a contributor for ideas, maintenance, and 2 more ([`352451c`](https://github.com/voicepaw/so-vits-svc-fork/commit/352451ccc9c1e1f800dc7697d5c705c0b9707c96))
- Add tonyco82 as a contributor for bug ([`036ce90`](https://github.com/voicepaw/so-vits-svc-fork/commit/036ce9052f145cf047434d472f775b563e503946))
- Add 75aosu as a contributor for bug ([`5afc28b`](https://github.com/voicepaw/so-vits-svc-fork/commit/5afc28bf918e1a62343f445a72487c1d932dc7b4))
- Add hxl9654 as a contributor for bug ([`0953f1f`](https://github.com/voicepaw/so-vits-svc-fork/commit/0953f1fd0dfbfa557f639eb8d917805f8891d7b0))
- Add ducttapegames as a contributor for bug ([`b0f4d39`](https://github.com/voicepaw/so-vits-svc-fork/commit/b0f4d39371ed2913ad792a46754469eb68c8c72d))
- Add likkkez as a contributor for bug ([`4a12109`](https://github.com/voicepaw/so-vits-svc-fork/commit/4a12109b6a0b3cd2741f10d6e9027204603b0f27))
- Add alondan as a contributor for bug ([`662ec4b`](https://github.com/voicepaw/so-vits-svc-fork/commit/662ec4b39816b1a1311d56e3edaca31fb442bb8d))
- Add mmodeusher as a contributor for bug ([`6a78df9`](https://github.com/voicepaw/so-vits-svc-fork/commit/6a78df97d8191b62a04c9ec48b74cf1f00e47c30))
- Add meldoner as a contributor for bug ([`5586bec`](https://github.com/voicepaw/so-vits-svc-fork/commit/5586becd35b456523cec1e1aa8c601cd1039dd1c))
## v3.10.3 (2023-04-19)
### Bug fixes
- Don't save model when tuning for auto batch size ([`2311a35`](https://github.com/voicepaw/so-vits-svc-fork/commit/2311a35c36315123c87b7f20dde3c4dda723bea3))
## v3.10.2 (2023-04-19)
### Bug fixes
- Properly stop training after `epochs` has been reached ([`f9bb3d8`](https://github.com/voicepaw/so-vits-svc-fork/commit/f9bb3d86605321288f11387bc853143378c3284e))
## v3.10.1 (2023-04-19)
### Bug fixes
- Support ddp in windows (gloo backend) ([`bcb0507`](https://github.com/voicepaw/so-vits-svc-fork/commit/bcb05078d8ca7a6ac681de919552b3a190b2cd9b))
## v3.10.0 (2023-04-18)
### Features
- Replace `fairseq` with `transformers` ([`a2fe0f3`](https://github.com/voicepaw/so-vits-svc-fork/commit/a2fe0f376d33f02987c91a57bd90a794de90a0e1))
## v3.9.5 (2023-04-18)
### Bug fixes
- Set persistent_workers = true in dataloader for performance, do not save checkpoints, fix logging issue and multiple warning issues, do not do validation when global_step == 0 ([`6cab9af`](https://github.com/voicepaw/so-vits-svc-fork/commit/6cab9af86e3a96e79243fa890eb1c6c51fae4476))
## v3.9.4 (2023-04-18)
### Bug fixes
- Always use "spawn" context in processpool ([`5d7fb77`](https://github.com/voicepaw/so-vits-svc-fork/commit/5d7fb774e8d5e97a9a31dbc891892e9f934f3884))
## v3.9.3 (2023-04-16)
### Bug fixes
- Fix subprocess errors in linux and fix wrong error logging ([`fd67db6`](https://github.com/voicepaw/so-vits-svc-fork/commit/fd67db6312944557c09afd7b1ccbb97987a03489))
## v3.9.2 (2023-04-16)
### Bug fixes
- Fix y_mel length ([`2d71992`](https://github.com/voicepaw/so-vits-svc-fork/commit/2d71992d80ba4142d2d5a5df17c69c2f2ac553fd))
## v3.9.1 (2023-04-16)
### Bug fixes
- Allow higher segment size ([`09d5a52`](https://github.com/voicepaw/so-vits-svc-fork/commit/09d5a52b9bfc8eba8857f2b6c804ecdb39b4b38b))
- Do not use weights_only in get_cluster_model() ([`24c05d1`](https://github.com/voicepaw/so-vits-svc-fork/commit/24c05d16c3b55f664699400496a7e0fd2fd84353))
## v3.9.0 (2023-04-16)
### Features
- Add option to name ckpts by epochs ([`bba24c4`](https://github.com/voicepaw/so-vits-svc-fork/commit/bba24c4a62b935ed29572aa2c2c437d1b54aa2e2))
## v3.8.1 (2023-04-16)
### Bug fixes
- Patch stft and add mps to get_optimal_device() ([`da928aa`](https://github.com/voicepaw/so-vits-svc-fork/commit/da928aa0bb1399bf5780526f8a7e9b674476a000))
## v3.8.0 (2023-04-15)
### Features
- Automatically decide batch_size ([`8ffa128`](https://github.com/voicepaw/so-vits-svc-fork/commit/8ffa128aa209787fde8fb1f0e4ae5c96dfe31217))
## v3.7.3 (2023-04-15)
### Bug fixes
- Show errors raised in inference ([`99833c5`](https://github.com/voicepaw/so-vits-svc-fork/commit/99833c55045647b9a766042765b454cb3d7d18ce))
## v3.7.2 (2023-04-15)
### Bug fixes
- Suppress pytorch logs for deprecated typedstorage ([`e67ac62`](https://github.com/voicepaw/so-vits-svc-fork/commit/e67ac621296cf6667d05b51f23ce8cb9ef8a0855))
## v3.7.1 (2023-04-15)
### Bug fixes
- Fix check for notebook / colab ([`7f69814`](https://github.com/voicepaw/so-vits-svc-fork/commit/7f698141e1b65e901579a5dbbabf28bfae5cc91f))
## v3.7.0 (2023-04-14)
### Features
- Add option to specify tensorboardlogger version parameter support ([`a685123`](https://github.com/voicepaw/so-vits-svc-fork/commit/a685123a4063e08e0b021a1ad51098d3154b75de))
## v3.6.2 (2023-04-14)
### Bug fixes
- Fix torch.load and save to use file objects and weights_only and remove unidecode ([`4aad701`](https://github.com/voicepaw/so-vits-svc-fork/commit/4aad701badc1eae5195e874dec40f9ed8dd40ee6))
## v3.6.1 (2023-04-14)
### Bug fixes
- Fix gradient logging ([`73ef3dc`](https://github.com/voicepaw/so-vits-svc-fork/commit/73ef3dc94ccd4c0514ab33b0c5a65edf8b356484))
## v3.6.0 (2023-04-13)
### Features
- Support sola algorithm ([`0fcbf99`](https://github.com/voicepaw/so-vits-svc-fork/commit/0fcbf9979862e945ca2427612a92549db2d627d0))
## v3.5.1 (2023-04-13)
### Bug fixes
- Do not use rich in notebook ([`03c8240`](https://github.com/voicepaw/so-vits-svc-fork/commit/03c824015872e3d7e4e5795b9d65fad4116d54e4))
## v3.5.0 (2023-04-13)
### Features
- Run inference in thread and disable button ([`c55caa8`](https://github.com/voicepaw/so-vits-svc-fork/commit/c55caa8019cc06fc6bd8851b0fd895b73cf926a4))
## v3.4.0 (2023-04-13)
### Features
- Make num_workers configurable ([`e8df714`](https://github.com/voicepaw/so-vits-svc-fork/commit/e8df7146b0d1d3ee32af576c251f47d8fdd80bb3))
## v3.3.1 (2023-04-13)
### Performance improvements
- Specify num_workers in dataloader ([`6042164`](https://github.com/voicepaw/so-vits-svc-fork/commit/6042164a60f9990eb0636e37dd650bb0cdff032b))
## v3.3.0 (2023-04-13)
### Features
- Use richprogressbar ([`17e937a`](https://github.com/voicepaw/so-vits-svc-fork/commit/17e937aae9c90b513e4b7674f442a60161c84e83))
## v3.2.0 (2023-04-13)
### Features
- Add optional `accumulate_grad_batches` config param ([`1172b23`](https://github.com/voicepaw/so-vits-svc-fork/commit/1172b2385cfe5239da3222cf93916436395e0f1a))
- Add accumulate_grad_batches hparam ([`1172b23`](https://github.com/voicepaw/so-vits-svc-fork/commit/1172b2385cfe5239da3222cf93916436395e0f1a))
### Bug fixes
- Normalize loss when using gradient accumulation ([`1172b23`](https://github.com/voicepaw/so-vits-svc-fork/commit/1172b2385cfe5239da3222cf93916436395e0f1a))
## v3.1.13 (2023-04-12)
### Bug fixes
- Fix too noisy logger ([`bd0eb33`](https://github.com/voicepaw/so-vits-svc-fork/commit/bd0eb33a66d77afff8328d08008f2643651c712a))
- Fix cli() not called in __main__ ([`11f2d24`](https://github.com/voicepaw/so-vits-svc-fork/commit/11f2d245137da240f5e8214e4b6ce4330d726143))
## v3.1.12 (2023-04-12)
### Bug fixes
- Fix ddp not working ([`bec43fc`](https://github.com/voicepaw/so-vits-svc-fork/commit/bec43fcbedf6b16260411655b19cf780ddbafe8e))
## v3.1.11 (2023-04-12)
### Bug fixes
- Fix init_logger not showing debug messages in certain conditions as intended ([`d3ab7d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/d3ab7d667c391ba1d8d1b34e2b66992256b3989d))
## v3.1.10 (2023-04-11)
### Bug fixes
- Improves inference ([`d3228df`](https://github.com/voicepaw/so-vits-svc-fork/commit/d3228df704b2e6a0746b3f842ca5f2240890d829))
- Improves and nb_clean ([`d3228df`](https://github.com/voicepaw/so-vits-svc-fork/commit/d3228df704b2e6a0746b3f842ca5f2240890d829))
- Improves inference ([`d3228df`](https://github.com/voicepaw/so-vits-svc-fork/commit/d3228df704b2e6a0746b3f842ca5f2240890d829))
- Improves inference ([`d3228df`](https://github.com/voicepaw/so-vits-svc-fork/commit/d3228df704b2e6a0746b3f842ca5f2240890d829))
- Unix formatting ([`d3228df`](https://github.com/voicepaw/so-vits-svc-fork/commit/d3228df704b2e6a0746b3f842ca5f2240890d829))
- Step lr schedulers at end of epoch ([`3af223e`](https://github.com/voicepaw/so-vits-svc-fork/commit/3af223eeb5146abcbb8198d4c11e2c1895ece130))
## v3.1.9 (2023-04-10)
### Bug fixes
- Fix fp16_run not being mix precision and fix bf16 errors ([`b0dd0ed`](https://github.com/voicepaw/so-vits-svc-fork/commit/b0dd0ed4014d32e9f19e335ec603bdab92c52039))
## v3.1.8 (2023-04-10)
### Bug fixes
- Fix wrong commands in "before training" ([`e056ad9`](https://github.com/voicepaw/so-vits-svc-fork/commit/e056ad9ec22cbaa119f7c93cb60b5b8851e80a7e))
## v3.1.7 (2023-04-09)
### Bug fixes
- Improve quality of training ([`7ed71d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ed71d6fd89ca8bf2c4aefbb280e705b1d7ae6b8))
- Initialize `_temp_epoch` variable ([`7ed71d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ed71d6fd89ca8bf2c4aefbb280e705b1d7ae6b8))
- Fix order of optimizer as per lightning.ai documentation ([`7ed71d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ed71d6fd89ca8bf2c4aefbb280e705b1d7ae6b8))
- Remove `with torch.no_grad():` call for generator loss ([`7ed71d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ed71d6fd89ca8bf2c4aefbb280e705b1d7ae6b8))
- Ensure `log_audio_dict` uses correct `total_batch_idx` ([`7ed71d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ed71d6fd89ca8bf2c4aefbb280e705b1d7ae6b8))
- Only save checkpoints for first `batch_idx` ([`7ed71d6`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ed71d6fd89ca8bf2c4aefbb280e705b1d7ae6b8))
## v3.1.6 (2023-04-09)
### Bug fixes
- Fix checkpoint not properly loaded ([`0979147`](https://github.com/voicepaw/so-vits-svc-fork/commit/0979147a234e08999a19dba4988a53886f61dade))
## v3.1.5 (2023-04-09)
### Bug fixes
- Fix optim_d functions called in wrong order ([`13d6346`](https://github.com/voicepaw/so-vits-svc-fork/commit/13d63469b0a84ace0dc8848df47dc20538b98770))
## v3.1.4 (2023-04-09)
### Bug fixes
- Add bf16 and fp16 support ([`4229fd8`](https://github.com/voicepaw/so-vits-svc-fork/commit/4229fd8ead64cf03caad9acd3d8f7f0fec3a7fee))
## v3.1.3 (2023-04-09)
### Bug fixes
- Update dependency starlette to v0.26.1 ([`5eb574b`](https://github.com/voicepaw/so-vits-svc-fork/commit/5eb574bec01430399df48e90e6112cef85e21945))
## v3.1.2 (2023-04-09)
### Bug fixes
- Remove wrong test and trigger release ([`9ea77e4`](https://github.com/voicepaw/so-vits-svc-fork/commit/9ea77e4c5c6575844685998e237994d54be84bb9))
- Remove pydantic constraints ([`f446e3b`](https://github.com/voicepaw/so-vits-svc-fork/commit/f446e3bbd62205b9c847e9ecdc46f519417b572a))
- Fix fastapi version to 0.88 ([`a26f387`](https://github.com/voicepaw/so-vits-svc-fork/commit/a26f387abea585c300cd1ed0c36c6b9afc731764))
- Fix get_optimal_device ([`79e4b5a`](https://github.com/voicepaw/so-vits-svc-fork/commit/79e4b5a0abe20789335eaaf4a359880c099aaa35))
## v3.1.1 (2023-04-08)
### Bug fixes
- Update dependency fastapi to <0.96 ([`29c8cc0`](https://github.com/voicepaw/so-vits-svc-fork/commit/29c8cc05b7e5180058e03f2dc1f681e58cc67f09))
## v3.1.0 (2023-04-08)
### Features
- Migrate to lightning ([`824ecbd`](https://github.com/voicepaw/so-vits-svc-fork/commit/824ecbd7222b9b9ada77c4fbbd7ae7f491049f21))
## v3.0.5 (2023-04-08)
### Bug fixes
- Fix train_cluster ([`b0c93e4`](https://github.com/voicepaw/so-vits-svc-fork/commit/b0c93e49f9cdfdcd714575fc27011bf56ce4493d))
## v3.0.4 (2023-04-06)
### Bug fixes
- Fix default config type to revert breaking changes ([`e05c0b5`](https://github.com/voicepaw/so-vits-svc-fork/commit/e05c0b52b6affac5e4483c0938e04584e1bd8d98))
## v3.0.3 (2023-04-05)
### Bug fixes
- Fix issues when loading legacy checkpoint and fix pre-hubert n_jobs ([`15f1e7f`](https://github.com/voicepaw/so-vits-svc-fork/commit/15f1e7ffca80cb551316affae546ea72e8cccb34))
## v3.0.2 (2023-04-04)
### Performance improvements
- Move methods from dataloader to pre-hubert ([`d5a4456`](https://github.com/voicepaw/so-vits-svc-fork/commit/d5a4456ebd5b6659ca037ee2f43480a00d7915f6))
## v3.0.1 (2023-04-03)
### Bug fixes
- Remove possible leak in unused code ([`e921c3d`](https://github.com/voicepaw/so-vits-svc-fork/commit/e921c3dc018ea783b4c26375a04f499a45ad9df0))
### Performance improvements
- Better implementation of repeat_expand_2d ([`ef30a9d`](https://github.com/voicepaw/so-vits-svc-fork/commit/ef30a9d5ae60fdde5f6b44d6cea8cee0a40dd3e9))
## v3.0.0 (2023-04-03)
### Features
- Add quickvc, fix usage of contentvec, remove onnx support ([`1a6c021`](https://github.com/voicepaw/so-vits-svc-fork/commit/1a6c021cd102b48b44e006decebc165062df8a95))
### Documentation
- Update allcontributors link for @mashirosa ([`650524b`](https://github.com/voicepaw/so-vits-svc-fork/commit/650524bb37997326e924814632c6202b76660f77))
- Add paperspace referral ([`7280012`](https://github.com/voicepaw/so-vits-svc-fork/commit/7280012df66b5ea71291e5a80bb22451f0ca236e))
- Add paperspace link and add more description, add a link for zh-cn docs ([`bc4b122`](https://github.com/voicepaw/so-vits-svc-fork/commit/bc4b1229e4ad9c046fda38334c4c6d22548356c2))
## v2.1.5 (2023-04-01)
### Bug fixes
- Update dependency tensorboard to v2.12.1 ([`0ccda1c`](https://github.com/voicepaw/so-vits-svc-fork/commit/0ccda1ccb34b8125abe369f738b06de7b77c8efc))
## v2.1.4 (2023-03-31)
### Bug fixes
- Update dependency gradio to v3.24.1 ([`4fa141b`](https://github.com/voicepaw/so-vits-svc-fork/commit/4fa141b210cb9b80bc7f75176fb01b18352c91cd))
## v2.1.3 (2023-03-31)
### Bug fixes
- Update dependency gradio to v3.24.0 ([`4e441cb`](https://github.com/voicepaw/so-vits-svc-fork/commit/4e441cb30429e4a47afd261d69e32ec5f86564c9))
### Documentation
- Add sbersier as a contributor for ideas, and usertesting ([`a655bf4`](https://github.com/voicepaw/so-vits-svc-fork/commit/a655bf47dde4ad2506283997987bce3a09229c57))
- Add coldcawfee as a contributor for bug ([`87a09e6`](https://github.com/voicepaw/so-vits-svc-fork/commit/87a09e654a0e8f064293750779b743abf2897ebb))
## v2.1.2 (2023-03-28)
### Bug fixes
- Fix wrong devices set as default ([`6265f8f`](https://github.com/voicepaw/so-vits-svc-fork/commit/6265f8f93e8facd4f58aab906bfcb23e05d4032b))
- Fix -h option overridden ([`52f1cfe`](https://github.com/voicepaw/so-vits-svc-fork/commit/52f1cfe1f08bd63966b0d1d7c025abed17cb36a6))
### Documentation
- Add xieyumc as a contributor for doc ([`29474d9`](https://github.com/voicepaw/so-vits-svc-fork/commit/29474d9dc77555fe5a55427278d44dfea7ece5ef))
- Update readme_zh_cn.md ([`f94a14c`](https://github.com/voicepaw/so-vits-svc-fork/commit/f94a14cb63e2afd40cba3e94f84077643d9a7560))
## v2.1.1 (2023-03-27)
### Bug fixes
- Update dependency rich to v13.3.3 ([`8bdefa9`](https://github.com/voicepaw/so-vits-svc-fork/commit/8bdefa9636e13fb0a24058a589675a20655357f4))
### Documentation
- Add nerdyrodent as a contributor for video ([`78ab661`](https://github.com/voicepaw/so-vits-svc-fork/commit/78ab661af198d87ce2ca5525fa262c639ed03cdc))
- Add heyfixit as a contributor for doc ([`32a2a63`](https://github.com/voicepaw/so-vits-svc-fork/commit/32a2a63b375300be6d67be56035005956003bdfd))
- Add desuka-art as a contributor for bug ([`fe3c6bf`](https://github.com/voicepaw/so-vits-svc-fork/commit/fe3c6bf8270fc219cdaeef05b7deacdbfc4df313))
- Add ruckusmattster as a contributor for bug ([`2b971db`](https://github.com/voicepaw/so-vits-svc-fork/commit/2b971db5c7a332c8321e99bd77bb956a0ee3ec88))
- Add pierluigizagaria as a contributor for usertesting ([`6fabe8d`](https://github.com/voicepaw/so-vits-svc-fork/commit/6fabe8d10b684caa236331a157455db1da686f8f))
- Add satisfy256 as a contributor for bug ([`ee72aee`](https://github.com/voicepaw/so-vits-svc-fork/commit/ee72aee12f23fee458599b8b7fa4f0ed27d33b1c))
- Add dl909 as a contributor for bug ([`a5e6651`](https://github.com/voicepaw/so-vits-svc-fork/commit/a5e6651a8f537961caf53adbb8bc52c1412c0762))
## v2.1.0 (2023-03-27)
### Features
- Add an option to launch tensorboard in `train` command ([`ef22cce`](https://github.com/voicepaw/so-vits-svc-fork/commit/ef22cceaeb7f06ea53b2151ef9c962d1040de20d))
## v2.0.0 (2023-03-27)
### Bug fixes
- Fix preprocessing and convert bool options to flags, use `unidecode` to decode non-ascii filenames in `pre-resample` ([`98d7ee2`](https://github.com/voicepaw/so-vits-svc-fork/commit/98d7ee22a40104468285324cc6ec21c707c30d54))
### Documentation
- Add yt tutorial vid link ([`1694f44`](https://github.com/voicepaw/so-vits-svc-fork/commit/1694f449e5a9f7b9da71e9a4c2764830c5268de3))
## v1.4.3 (2023-03-26)
### Performance improvements
- Specify samplerate to reduce memory usage ([`6217eda`](https://github.com/voicepaw/so-vits-svc-fork/commit/6217eda0ec3bac27e408fcd0466a6b658cf718c5))
## v1.4.2 (2023-03-26)
### Bug fixes
- Initialize logging in logger file and move version log ([`441d51f`](https://github.com/voicepaw/so-vits-svc-fork/commit/441d51f8efa84144d8a9f8fa02f2adaaf15295c0))
- Fix dtype in sf.read() to save memory and fix preprocess_resample ([`0af1e13`](https://github.com/voicepaw/so-vits-svc-fork/commit/0af1e13a468ad282266a595b8d3c77d62aa938dc))
- Fix audio resampled to 22khz ([`4203f37`](https://github.com/voicepaw/so-vits-svc-fork/commit/4203f374c5625369518063888e1ca70d1af4f694))
### Documentation
- Update notebook and readme.md ([`38d9744`](https://github.com/voicepaw/so-vits-svc-fork/commit/38d97449d5b443167926f409f904f4b40c6e0f03))
## v1.4.1 (2023-03-26)
### Bug fixes
- Fix some parameters not passed ([`6cfe3d3`](https://github.com/voicepaw/so-vits-svc-fork/commit/6cfe3d3f567c03e1c59065ff827f564a13a7aaaf))
## v1.4.0 (2023-03-26)
### Features
- Add 2 more preprocessing commands ([`45eba0f`](https://github.com/voicepaw/so-vits-svc-fork/commit/45eba0f25db1346757fcd9134ccb3a62125a05a9))
### Documentation
- Add blueamulet as a contributor for code ([`6a7e8ba`](https://github.com/voicepaw/so-vits-svc-fork/commit/6a7e8ba827ee69f1ceca60b83dfbae437bbe6667))
## v1.3.5 (2023-03-26)
### Bug fixes
- Allow float32 audio to be processed properly ([`13943b6`](https://github.com/voicepaw/so-vits-svc-fork/commit/13943b693d177cf5417127647a3280a9e5ff9ca5))
## v1.3.4 (2023-03-25)
### Bug fixes
- Change default f0 method from crepe to dio ([`baf58d2`](https://github.com/voicepaw/so-vits-svc-fork/commit/baf58d286c286c0064fd015e0e8f0b9e690021f7))
## v1.3.3 (2023-03-25)
### Documentation
- Add lordmau5 as a contributor for bug, and code ([`4df46ee`](https://github.com/voicepaw/so-vits-svc-fork/commit/4df46eed47378f41d76c7637f540779db3bb54a3))
- Update readme.md [skip ci] ([`4df46ee`](https://github.com/voicepaw/so-vits-svc-fork/commit/4df46eed47378f41d76c7637f540779db3bb54a3))
- Update .all-contributorsrc [skip ci] ([`4df46ee`](https://github.com/voicepaw/so-vits-svc-fork/commit/4df46eed47378f41d76c7637f540779db3bb54a3))
### Bug fixes
- Fix old checkpoint deletion by sorting the models properly (#65) ([`287dc94`](https://github.com/voicepaw/so-vits-svc-fork/commit/287dc94be719147023af0ecfe7e92b16a8e98fc5))
## v1.3.2 (2023-03-24)
### Bug fixes
- Fix devices list and fix tqdm error in gui ([`59724cd`](https://github.com/voicepaw/so-vits-svc-fork/commit/59724cd2afc6a8d5ef6ea4b7fa8c012e21fc4af6))
### Documentation
- Add mashirosa as a contributor for doc, and bug ([`495b7cb`](https://github.com/voicepaw/so-vits-svc-fork/commit/495b7cbfc9f9468d49bc3f57efe6c5c076dcb0d3))
- Fix cluster inference command and improve cluster training command ([`7642594`](https://github.com/voicepaw/so-vits-svc-fork/commit/7642594472bd660fe046c45909f0475398af199e))
## v1.3.1 (2023-03-24)
### Bug fixes
- Fix defaut for auto_play ([`07920a4`](https://github.com/voicepaw/so-vits-svc-fork/commit/07920a4954e1a14d47fcb2687f050d49d03da415))
- Fix speaker not automaticlly set to the first one if not found in cluster inference ([`a643e4f`](https://github.com/voicepaw/so-vits-svc-fork/commit/a643e4f26b59f12f00b316467edad876467dad49))
### Documentation
- Add cluster training and inference ([`9ffb621`](https://github.com/voicepaw/so-vits-svc-fork/commit/9ffb6216f418d8c5a4a9f1bdd79fc2cebb885db1))
## v1.3.0 (2023-03-23)
### Features
- Better error handling ([`985704b`](https://github.com/voicepaw/so-vits-svc-fork/commit/985704b1afa8af15fe8eab5e3fc838465f5162c8))
## v1.2.11 (2023-03-23)
### Bug fixes
- Fix onnx export and fix gui ([`3e9a47d`](https://github.com/voicepaw/so-vits-svc-fork/commit/3e9a47dd4faa938a6aaebf2d7c1c0b9d68cc97d3))
## v1.2.10 (2023-03-23)
### Bug fixes
- Fix cluster not working ([`29b209c`](https://github.com/voicepaw/so-vits-svc-fork/commit/29b209cf7060deb7f15ae28fe2e520bb20a236f4))
## v1.2.9 (2023-03-23)
### Bug fixes
- Fix speakers and devices not updated and fix default presets ([`a851150`](https://github.com/voicepaw/so-vits-svc-fork/commit/a8511508b0d2b3a62e7b77833280e4264997d9ed))
## v1.2.8 (2023-03-22)
### Bug fixes
- Update dependency torchcrepe to v0.0.18 ([`4fda479`](https://github.com/voicepaw/so-vits-svc-fork/commit/4fda4799f017e7de57de36c95cd8d64ab6f9b446))
### Documentation
- Shorten docs ([`e0c1572`](https://github.com/voicepaw/so-vits-svc-fork/commit/e0c1572d057032735c3118e9137be8e4399c6251))
## v1.2.7 (2023-03-22)
### Bug fixes
- Fix clean_checkpoints ([`e5169bf`](https://github.com/voicepaw/so-vits-svc-fork/commit/e5169bf8121578a6cc3ed1bccd1b47a6281cafe4))
## v1.2.6 (2023-03-22)
### Documentation
- Add blueamulet as a contributor for question ([`8d073e3`](https://github.com/voicepaw/so-vits-svc-fork/commit/8d073e3e0798a0739cea5b979cf6cfd361f3e6d3))
- Add garrettconway as a contributor for doc ([`6c6cbc6`](https://github.com/voicepaw/so-vits-svc-fork/commit/6c6cbc6ac8a97ecb71d789a5782bb8db2c4c52f8))
- Update readme.md regarding installation, update. wsl audio support ([`4f1323b`](https://github.com/voicepaw/so-vits-svc-fork/commit/4f1323b3d12a080f38a195bf494db7086dbfa7e4))
### Bug fixes
- Disable checkbox if cuda is not available and show errors for vc ([`3fdd983`](https://github.com/voicepaw/so-vits-svc-fork/commit/3fdd9836c3b60d2e737fc7e40efe42a9cc84888e))
## v1.2.5 (2023-03-22)
### Bug fixes
- Fix rtf calculation ([`fb25500`](https://github.com/voicepaw/so-vits-svc-fork/commit/fb25500f4e3e70e5d71462715b83fb3bedcf8bd5))
## v1.2.4 (2023-03-22)
### Bug fixes
- Fix latest_checkpoint_path ([`00b9f4a`](https://github.com/voicepaw/so-vits-svc-fork/commit/00b9f4acd005cdb801b3f41df6e25b0b8799d631))
## v1.2.3 (2023-03-21)
### Bug fixes
- Update dependency onnxsim to v0.4.19 ([`f8a4cf6`](https://github.com/voicepaw/so-vits-svc-fork/commit/f8a4cf61bad5d0d55a7334af8f022114605e7038))
## v1.2.2 (2023-03-21)
### Bug fixes
- Update dependency onnxoptimizer to v0.3.10 ([`d0137f9`](https://github.com/voicepaw/so-vits-svc-fork/commit/d0137f920083a08173d58e35492b9b9fb925e41f))
### Documentation
- Add links for pretrained models and fix gui pic height ([`34ac39f`](https://github.com/voicepaw/so-vits-svc-fork/commit/34ac39f0c9ce89f2effdd18f3fc4ab91e72b3f82))
- Add more explanation to notebook ([`9b3c483`](https://github.com/voicepaw/so-vits-svc-fork/commit/9b3c4835e063d26d1e66d172cf592e69e30d59b8))
## v1.2.1 (2023-03-21)
### Bug fixes
- Use librosa.load() instead of soundfile.read() ([`b343106`](https://github.com/voicepaw/so-vits-svc-fork/commit/b34310662b2bac53884df396932f72366132ea01))
- Fix window too big to show in a fhd environment ([`259e6e6`](https://github.com/voicepaw/so-vits-svc-fork/commit/259e6e6eb6ebfd9027b1813756d67d1a516e0214))
## v1.2.0 (2023-03-21)
### Features
- Add presets ([`e8adcc6`](https://github.com/voicepaw/so-vits-svc-fork/commit/e8adcc621f6caf5f4b20846575b3559c032ed47f))
## v1.1.1 (2023-03-21)
### Bug fixes
- Update dependency gradio to v3.23.0 ([`a2bdb48`](https://github.com/voicepaw/so-vits-svc-fork/commit/a2bdb48b436d206b30bb72409852c0b30d6811e9))
## v1.1.0 (2023-03-21)
### Documentation
- Update gui screenshot ([`58d06aa`](https://github.com/voicepaw/so-vits-svc-fork/commit/58d06aa7460dd75ef793da295bf7651ae9940814))
### Features
- Enhance realtimevc ([`81551ce`](https://github.com/voicepaw/so-vits-svc-fork/commit/81551ce9c6fb7924d184c3c5a4cf9035168b28d2))
## v1.0.2 (2023-03-21)
### Bug fixes
- Update dependency scipy to v1.10.1 ([`e0253bf`](https://github.com/voicepaw/so-vits-svc-fork/commit/e0253bf1e655f86be605395a18f343763d975101))
## v1.0.1 (2023-03-20)
### Documentation
- Add throwawayaccount01 as a contributor for bug ([`15e31fa`](https://github.com/voicepaw/so-vits-svc-fork/commit/15e31fa806249d45235918fa62a48a86c43538cb))
- Add blueamulet as a contributor for ideas ([`a3bcb2b`](https://github.com/voicepaw/so-vits-svc-fork/commit/a3bcb2be2992c98bcc2485082c19009c74cb3194))
### Performance improvements
- Do dummy inference before running vc ([`4066c43`](https://github.com/voicepaw/so-vits-svc-fork/commit/4066c4334b107062d2daa7c9dc00600a56c6e553))
## v1.0.0 (2023-03-20)
### Bug fixes
- Fix default dataset path ([`ac47fed`](https://github.com/voicepaw/so-vits-svc-fork/commit/ac47fede2581d375c2be9c28102961f19f5a9aa1))
## v0.8.2 (2023-03-20)
### Bug fixes
- Fix compute_f0_crepe returning wrong length ([`afb42b0`](https://github.com/voicepaw/so-vits-svc-fork/commit/afb42b019ccd133876a2c55cf01007950a733d8c))
## v0.8.1 (2023-03-20)
### Bug fixes
- Update dependency librosa to v0.10.0 ([`8e92f71`](https://github.com/voicepaw/so-vits-svc-fork/commit/8e92f71b2820628f0f8583e6bc455d8f753f4302))
## v0.8.0 (2023-03-20)
### Features
- Add more f0 calculation methods ([`6b3b20d`](https://github.com/voicepaw/so-vits-svc-fork/commit/6b3b20dfd609d81cb1184b7c8e8865a58f8d45f9))
## v0.7.1 (2023-03-20)
### Bug fixes
- Update dependency gradio to v3.22.1 ([`f09fc23`](https://github.com/voicepaw/so-vits-svc-fork/commit/f09fc23ca82519cc095509d4d4760561424a17ec))
### Features
- Allow nested dataset ([`0433151`](https://github.com/voicepaw/so-vits-svc-fork/commit/0433151d94c4da8e84a0183bdd47f1e08ea3c462))
## v0.6.3 (2023-03-20)
### Bug fixes
- Update dependency torch to v1.13.1 ([`8826d68`](https://github.com/voicepaw/so-vits-svc-fork/commit/8826d6870e223e7969baa069bf12235e0deec0b7))
- Update dependency torchaudio to v0.13.1 ([`989f5d9`](https://github.com/voicepaw/so-vits-svc-fork/commit/989f5d903b47ba9b0ea1d0fe37cbfe76edf0a811))
### Documentation
- Update notes about vram caps ([`0a245f4`](https://github.com/voicepaw/so-vits-svc-fork/commit/0a245f4ee69bd0d4371836367becf0fe409431e2))
## v0.6.2 (2023-03-19)
### Documentation
- Add garrettconway as a contributor for bug ([`31d9671`](https://github.com/voicepaw/so-vits-svc-fork/commit/31d9671207143fd06b8db148802d1e27874151ce))
- Launch tensorboard ([`52229ba`](https://github.com/voicepaw/so-vits-svc-fork/commit/52229ba0fe9458e37b45287c0a716c7cd36adbd6))
- Add 34j as a contributor for example, infra, and 6 more ([`1b90378`](https://github.com/voicepaw/so-vits-svc-fork/commit/1b903783b4b89f2f5a4fc2e1b47f3eade0c0402f))
- Add garrettconway as a contributor for code ([`716813f`](https://github.com/voicepaw/so-vits-svc-fork/commit/716813fbff85ab4609d8ec3f374b78c6551877e5))
### Bug fixes
- Use hubert preprocess force_rebuild argument ([`87cf807`](https://github.com/voicepaw/so-vits-svc-fork/commit/87cf807496248e2c7b859069f81aa040e86aec59))
## v0.6.1 (2023-03-19)
### Performance improvements
- Better performance ([`668c8e1`](https://github.com/voicepaw/so-vits-svc-fork/commit/668c8e1f18cefb0ebd2fb2f1d6572ce4d37d1102))
## v0.6.0 (2023-03-18)
### Features
- Configurable input and output devices ([`a822a60`](https://github.com/voicepaw/so-vits-svc-fork/commit/a822a6098d322ff37725eee19d17758f72a6db49))
### Documentation
- Fix notebook ([`427b4c1`](https://github.com/voicepaw/so-vits-svc-fork/commit/427b4c1c6e0482345b17fedb018f7a18db68ccc5))
- Update notebook ([`ae3e471`](https://github.com/voicepaw/so-vits-svc-fork/commit/ae3e4710aac41555f00ddcdfbcf5a5e925afb718))
## v0.5.0 (2023-03-18)
### Features
- Remember last directory (misc) ([`92558da`](https://github.com/voicepaw/so-vits-svc-fork/commit/92558da2f0e4eb24a8de412fb7e22dc3530b648a))
- Show defaults ([`3d298df`](https://github.com/voicepaw/so-vits-svc-fork/commit/3d298df91bdfca230959603da74331b5eef4d487))
### Bug fixes
- Fix option names ([`7ff34fe`](https://github.com/voicepaw/so-vits-svc-fork/commit/7ff34fe623dde6b0a684c45cf33dc54118f9a800))
### Documentation
- Update readme.md ([`b988101`](https://github.com/voicepaw/so-vits-svc-fork/commit/b98810194703b6bb0ede03a00c460eeecdab5131))
## v0.4.1 (2023-03-18)
### Bug fixes
- Call init_logger() ([`e6378f1`](https://github.com/voicepaw/so-vits-svc-fork/commit/e6378f12e747e618ff90ece1552d09c0d0714d41))
## v0.4.0 (2023-03-18)
### Features
- Enhance realtime algorythm ([`d789a12`](https://github.com/voicepaw/so-vits-svc-fork/commit/d789a12308784473ae5d09e0b73fa15bf7554de1))
## v0.3.0 (2023-03-17)
### Features
- Add gui ([`34aec2b`](https://github.com/voicepaw/so-vits-svc-fork/commit/34aec2b98ee4ef82ef488129b61a7952af5226a3))
### Documentation
- Update notebook ([`7b74606`](https://github.com/voicepaw/so-vits-svc-fork/commit/7b74606508cfb7e45224cbd76f3de9c43c8b4309))
## v0.2.1 (2023-03-17)
### Bug fixes
- Fix notebook ([`3ed00cc`](https://github.com/voicepaw/so-vits-svc-fork/commit/3ed00cc66d4f66e045f61fc14937cb9160eee556))
## v0.2.0 (2023-03-17)
### Features
- Realtime inference ([`4dea1ae`](https://github.com/voicepaw/so-vits-svc-fork/commit/4dea1ae51fe2e47a3f41556bdbe3fefd033d729a))
## v0.1.0 (2023-03-17)
### Features
- Main feat ([`faa990c`](https://github.com/voicepaw/so-vits-svc-fork/commit/faa990ce6411d8b4e8b3d2d48c4b532b76ff7800))
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
Contributions are welcome, and they are greatly appreciated! Every little helps, and credit will always be given.
You can contribute in many ways:
## Types of Contributions
### Report Bugs
Report bugs to [our issue page][gh-issues]. If you are reporting a bug, please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
### Fix Bugs
Look through the GitHub issues for bugs. Anything tagged with "bug" and "help wanted" is open to whoever wants to implement it.
### Implement Features
Look through the GitHub issues for features. Anything tagged with "enhancement" and "help wanted" is open to whoever wants to implement it.
### Write Documentation
SoftVC VITS Singing Voice Conversion Fork could always use more documentation, whether as part of the official SoftVC VITS Singing Voice Conversion Fork docs, in docstrings, or even on the web in blog posts, articles, and such.
### Submit Feedback
The best way to send feedback [our issue page][gh-issues] on GitHub. If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome 😊
## Get Started!
Ready to contribute? Here's how to set yourself up for local development.
1. Fork the repo on GitHub.
2. Clone your fork locally:
```shell
$ git clone git@github.com:your_name_here/so-vits-svc-fork.git
```
3. Install the project dependencies with [uv](https://docs.astral.sh/uv/):
```shell
$ uv sync
```
4. Create a branch for local development:
```shell
$ git checkout -b name-of-your-bugfix-or-feature
```
Now you can make your changes locally.
5. When you're done making changes, check that your changes pass our tests:
```shell
$ uv run pytest
```
6. Linting is done through [pre-commit](https://pre-commit.com). Provided you have the tool installed globally, you can run them all as one-off:
```shell
$ pre-commit run -a
```
Or better, install the hooks once and have them run automatically each time you commit:
```shell
$ pre-commit install
```
7. Commit your changes and push your branch to GitHub:
```shell
$ git add .
$ git commit -m "feat(something): your detailed description of your changes"
$ git push origin name-of-your-bugfix-or-feature
```
Note: the commit message should follow [the conventional commits](https://www.conventionalcommits.org). We run [`commitlint` on CI](https://github.com/marketplace/actions/commit-linter) to validate it, and if you've installed pre-commit hooks at the previous step, the message will be checked at commit time.
8. Submit a pull request through the GitHub website or using the GitHub CLI (if you have it installed):
```shell
$ gh pr create --fill
```
## Pull Request Guidelines
We like to have the pull request open as soon as possible, that's a great place to discuss any piece of work, even unfinished. You can use draft pull request if it's still a work in progress. Here are a few guidelines to follow:
1. Include tests for feature or bug fixes.
2. Update the documentation for significant features.
3. Ensure tests are passing on CI.
## Tips
To run a subset of tests:
```shell
$ pytest tests
```
## Making a new release
The deployment should be automated and can be triggered from the Semantic Release workflow in GitHub. The next version will be based on [the commit logs](https://python-semantic-release.readthedocs.io/en/latest/commit-log-parsing.html#commit-log-parsing). This is done by [python-semantic-release](https://python-semantic-release.readthedocs.io/en/latest/index.html) via a GitHub action.
[gh-issues]: https://github.com/voicepaw/so-vits-svc-fork/issues
================================================
FILE: Dockerfile
================================================
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime@sha256:82e0d379a5dedd6303c89eda57bcc434c40be11f249ddfadfd5673b84351e806
RUN ["apt", "update"]
RUN ["apt", "install", "-y", "build-essential"]
RUN ["pip", "install", "-U", "pip", "setuptools", "wheel"]
RUN ["pip", "install", "-U", "so-vits-svc-fork"]
ENTRYPOINT [ "svcg" ]
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 34j and contributors
Copyright (c) 2021 Jingyi Li
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# SoftVC VITS Singing Voice Conversion Fork
[简体中文](README_zh_CN.md)
<p align="center">
<a href="https://github.com/voicepaw/so-vits-svc-fork/actions/workflows/ci.yml?query=branch%3Amain">
<img src="https://img.shields.io/github/actions/workflow/status/voicepaw/so-vits-svc-fork/ci.yml?branch=main&label=CI&logo=github&style=flat-square" alt="CI Status" >
</a>
<a href="https://so-vits-svc-fork.readthedocs.io">
<img src="https://img.shields.io/readthedocs/so-vits-svc-fork.svg?logo=read-the-docs&logoColor=fff&style=flat-square" alt="Documentation Status">
</a>
<a href="https://codecov.io/gh/voicepaw/so-vits-svc-fork">
<img src="https://img.shields.io/codecov/c/github/voicepaw/so-vits-svc-fork.svg?logo=codecov&logoColor=fff&style=flat-square" alt="Test coverage percentage">
</a>
</p>
<p align="center">
<a href="https://github.com/astral-sh/uv">
<img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json" alt="uv">
</a>
<a href="https://github.com/astral-sh/ruff">
<img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
</a>
<a href="https://github.com/pre-commit/pre-commit">
<img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
</a>
</p>
<p align="center">
<a href="https://pypi.org/project/so-vits-svc-fork/">
<img src="https://img.shields.io/pypi/v/so-vits-svc-fork.svg?logo=python&logoColor=fff&style=flat-square" alt="PyPI Version">
</a>
<img src="https://img.shields.io/pypi/pyversions/so-vits-svc-fork.svg?style=flat-square&logo=python&logoColor=fff" alt="Supported Python versions">
<img src="https://img.shields.io/pypi/l/so-vits-svc-fork.svg?style=flat-square" alt="License">
</p>
A fork of [`so-vits-svc`](https://github.com/svc-develop-team/so-vits-svc) with **realtime support** and **greatly improved interface**. Based on branch `4.0` (v1) (or `4.1`) and the models are compatible. `4.1` models are not supported. Other models are also not supported.
## No Longer Maintained
### Reasons
- Within a year, the technology has evolved enormously and there are many better alternatives
- Was hoping to create a more Modular, easy-to-install repository, but didn't have the skills, time, money to do so
- PySimpleGUI is no longer LGPL
- Using Typer is getting more popular than directly using Click
### Alternatives
Always beware of the very few influencers who are **quite overly surprised** about any new project/technology. You need to take every social networking post with semi-doubt.
The voice changer boom that occurred in 2023 has come to an end, and many developers, not just those in this repository, have been not very active for a while.
There are too many alternatives to list here but:
- RVC family: [IAHispano/Applio](https://github.com/IAHispano/Applio) (MIT) (actively maintained), [fumiama's RVC](https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI) (AGPL) and [original RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) (MIT) (no longer maintained)
- [VCClient](https://github.com/w-okada/voice-changer) (MIT etc.) offers web-based GUI for real-time conversion but not quite actively maintained.
- [fish-diffusion](https://github.com/fishaudio/fish-diffusion/commits/main/) tried to be quite modular but not actively maintained.
- [yxlllc/DDSP\-SVC](https://github.com/yxlllc/DDSP-SVC) - new releases are issued occasionally. [yxlllc/ReFlow\-VAE\-SVC](https://github.com/yxlllc/ReFlow-VAE-SVC)
- [coqui\-ai/TTS](https://github.com/coqui-ai/TTS) was for TTS but was partially modular. However, it is not maintained anymore, unfortunately.
Elsewhere, several start-ups have improved and marketed voice changers (probably for profit).
> Updates to this repository have been limited to maintenance since Spring 2023.
> ~~It is difficult to narrow the list of alternatives here, but please consider trying other projects if you are looking for a voice changer with even better performance (especially in terms of latency other than quality).~~ > ~~However, this project may be ideal for those who want to try out voice conversion for the moment (because it is easy to install).~~
## Features not available in the original repo
- **Realtime voice conversion** (enhanced in v1.1.0)
- Partially integrates [`QuickVC`](https://github.com/quickvc/QuickVC-VoiceConversion)
- Fixed misuse of [`ContentVec`](https://github.com/auspicious3000/contentvec) in the original repository.[^c]
- More accurate pitch estimation using [`CREPE`](https://github.com/marl/crepe/).
- GUI and unified CLI available
- ~2x faster training
- Ready to use just by installing with `pip`.
- Automatically download pretrained models. No need to install `fairseq`.
- Code completely formatted with black, isort, autoflake etc.
[^c]: [#206](https://github.com/voicepaw/so-vits-svc-fork/issues/206)
## Installation
### Option 1. One click easy installation
<a href="https://github.com/voicepaw/so-vits-svc-fork/releases/download/v1.3.2/install.bat" download>
<img src="https://img.shields.io/badge/.bat-download-blue?style=flat-square&logo=windows" alt="Download .bat">
</a>
This BAT file will automatically perform the steps described below.
### Option 2. Manual installation (using pipx, experimental)
#### 1. Installing pipx
Windows (development version required due to [pypa/pipx#940](https://github.com/pypa/pipx/issues/940)):
```shell
py -3 -m pip install --user git+https://github.com/pypa/pipx.git
py -3 -m pipx ensurepath
```
Linux/MacOS:
```shell
python -m pip install --user pipx
python -m pipx ensurepath
```
#### 2. Installing so-vits-svc-fork
```shell
pipx install so-vits-svc-fork --python=3.11
pipx inject so-vits-svc-fork torch torchaudio --pip-args="--upgrade" --index-url=https://download.pytorch.org/whl/cu121 # https://download.pytorch.org/whl/nightly/cu121
```
### Option 3. Manual installation
<details>
<summary>Creating a virtual environment</summary>
Windows:
```shell
py -3.11 -m venv venv
venv\Scripts\activate
```
Linux/MacOS:
```shell
python3.11 -m venv venv
source venv/bin/activate
```
Anaconda:
```shell
conda create -n so-vits-svc-fork python=3.11 pip
conda activate so-vits-svc-fork
```
Installing without creating a virtual environment may cause a `PermissionError` if Python is installed in Program Files, etc.
</details>
Install this via pip (or your favourite package manager that uses pip):
```shell
python -m pip install -U pip setuptools wheel
pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu121 # https://download.pytorch.org/whl/nightly/cu121
pip install -U so-vits-svc-fork
```
<details>
<summary>Notes</summary>
- If no GPU is available or using MacOS, simply remove `pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu121`. MPS is probably supported.
- If you are using an AMD GPU on Linux, replace `--index-url https://download.pytorch.org/whl/cu121` with `--index-url https://download.pytorch.org/whl/nightly/rocm5.7`. AMD GPUs are not supported on Windows ([#120](https://github.com/voicepaw/so-vits-svc-fork/issues/120)).
</details>
### Update
Please update this package regularly to get the latest features and bug fixes.
```shell
pip install -U so-vits-svc-fork
# pipx upgrade so-vits-svc-fork
```
## Usage
### Inference
#### GUI

GUI launches with the following command:
```shell
svcg
```
#### CLI
- Realtime (from microphone)
```shell
svc vc
```
- File
```shell
svc infer source.wav
```
Pretrained models are available on [Hugging Face](https://huggingface.co/models?search=so-vits-svc) or [CIVITAI](https://civitai.com/tag/so-vits-svc-fork).
#### Notes
- If using WSL, please note that WSL requires additional setup to handle audio and the GUI will not work without finding an audio device.
- In real-time inference, if there is noise on the inputs, the HuBERT model will react to those as well. Consider using realtime noise reduction applications such as [RTX Voice](https://www.nvidia.com/en-us/geforce/guides/nvidia-rtx-voice-setup-guide/) in this case.
- Models other than for 4.0v1 or this repository are not supported.
- GPU inference requires at least 4 GB of VRAM. If it does not work, try CPU inference as it is fast enough. [^r-inference]
[^r-inference]: [#469](https://github.com/voicepaw/so-vits-svc-fork/issues/469)
### Training
#### Before training
- If your dataset has BGM, please remove the BGM using software such as [Ultimate Vocal Remover](https://ultimatevocalremover.com/). `3_HP-Vocal-UVR.pth` or `UVR-MDX-NET Main` is recommended. [^1]
- If your dataset is a long audio file with a single speaker, use `svc pre-split` to split the dataset into multiple files (using `librosa`).
- If your dataset is a long audio file with multiple speakers, use `svc pre-sd` to split the dataset into multiple files (using `pyannote.audio`). Further manual classification may be necessary due to accuracy issues. If speakers speak with a variety of speech styles, set --min-speakers larger than the actual number of speakers. Due to unresolved dependencies, please install `pyannote.audio` manually: `pip install pyannote-audio`.
- To manually classify audio files, `svc pre-classify` is available. Up and down arrow keys can be used to change the playback speed.
[^1]: https://ytpmv.info/how-to-use-uvr/
#### Cloud
[](https://colab.research.google.com/github/voicepaw/so-vits-svc-fork/blob/main/notebooks/so-vits-svc-fork-4.0.ipynb)
[](https://console.paperspace.com/github/voicepaw/so-vits-svc-fork-paperspace/blob/main/so-vits-svc-fork-4.0-paperspace.ipynb)
[-9VJN74I-blue?style=flat-square&logo=paperspace>)](https://www.paperspace.com/?r=9VJN74I)[^p]
If you do not have access to a GPU with more than 10 GB of VRAM, the free plan of Google Colab is recommended for light users and the Pro/Growth plan of Paperspace is recommended for heavy users. Conversely, if you have access to a high-end GPU, the use of cloud services is not recommended.
[^p]: If you register a referral code and then add a payment method, you may save about $5 on your first month's monthly billing. Note that both referral rewards are Paperspace credits and not cash. It was a tough decision but inserted because debugging and training the initial model requires a large amount of computing power and the developer is a student.
#### Local
Place your dataset like `dataset_raw/{speaker_id}/**/{wav_file}.{any_format}` (subfolders and non-ASCII filenames are acceptable) and run:
```shell
svc pre-resample
svc pre-config
svc pre-hubert
svc train -t
```
#### Notes
- Dataset audio duration per file should be <~ 10s.
- Need at least 4GB of VRAM. [^r-training]
- It is recommended to increase the `batch_size` as much as possible in `config.json` before the `train` command to match the VRAM capacity. Setting `batch_size` to `auto-{init_batch_size}-{max_n_trials}` (or simply `auto`) will automatically increase `batch_size` until OOM error occurs, but may not be useful in some cases.
- To use `CREPE`, replace `svc pre-hubert` with `svc pre-hubert -fm crepe`.
- To use `ContentVec` correctly, replace `svc pre-config` with `-t so-vits-svc-4.0v1`. Training may take slightly longer because some weights are reset due to reusing legacy initial generator weights.
- To use `MS-iSTFT Decoder`, replace `svc pre-config` with `svc pre-config -t quickvc`.
- Silence removal and volume normalization are automatically performed (as in the upstream repo) and are not required.
- If you have trained on a large, copyright-free dataset, consider releasing it as an initial model.
- For further details (e.g. parameters, etc.), you can see the [Wiki](https://github.com/voicepaw/so-vits-svc-fork/wiki) or [Discussions](https://github.com/voicepaw/so-vits-svc-fork/discussions).
[^r-training]: [#456](https://github.com/voicepaw/so-vits-svc-fork/issues/456)
### Further help
For more details, run `svc -h` or `svc <subcommand> -h`.
```shell
> svc -h
Usage: svc [OPTIONS] COMMAND [ARGS]...
so-vits-svc allows any folder structure for training data.
However, the following folder structure is recommended.
When training: dataset_raw/{speaker_name}/**/{wav_name}.{any_format}
When inference: configs/44k/config.json, logs/44k/G_XXXX.pth
If the folder structure is followed, you DO NOT NEED TO SPECIFY model path, config path, etc.
(The latest model will be automatically loaded.)
To train a model, run pre-resample, pre-config, pre-hubert, train.
To infer a model, run infer.
Options:
-h, --help Show this message and exit.
Commands:
clean Clean up files, only useful if you are using the default file structure
infer Inference
onnx Export model to onnx (currently not working)
pre-classify Classify multiple audio files into multiple files
pre-config Preprocessing part 2: config
pre-hubert Preprocessing part 3: hubert If the HuBERT model is not found, it will be...
pre-resample Preprocessing part 1: resample
pre-sd Speech diarization using pyannote.audio
pre-split Split audio files into multiple files
train Train model If D_0.pth or G_0.pth not found, automatically download from hub.
train-cluster Train k-means clustering
vc Realtime inference from microphone
```
#### External Links
[Video Tutorial](https://www.youtube.com/watch?v=tZn0lcGO5OQ)
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- prettier-ignore-start -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/34j"><img src="https://avatars.githubusercontent.com/u/55338215?v=4?s=80" width="80px;" alt="34j"/><br /><sub><b>34j</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=34j" title="Code">💻</a> <a href="#ideas-34j" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=34j" title="Documentation">📖</a> <a href="#example-34j" title="Examples">💡</a> <a href="#infra-34j" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-34j" title="Maintenance">🚧</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/pulls?q=is%3Apr+reviewed-by%3A34j" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=34j" title="Tests">⚠️</a> <a href="#tutorial-34j" title="Tutorials">✅</a> <a href="#promotion-34j" title="Promotion">📣</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3A34j" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GarrettConway"><img src="https://avatars.githubusercontent.com/u/22782004?v=4?s=80" width="80px;" alt="GarrettConway"/><br /><sub><b>GarrettConway</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=GarrettConway" title="Code">💻</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AGarrettConway" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=GarrettConway" title="Documentation">📖</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/pulls?q=is%3Apr+reviewed-by%3AGarrettConway" title="Reviewed Pull Requests">👀</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/BlueAmulet"><img src="https://avatars.githubusercontent.com/u/43395286?v=4?s=80" width="80px;" alt="BlueAmulet"/><br /><sub><b>BlueAmulet</b></sub></a><br /><a href="#ideas-BlueAmulet" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-BlueAmulet" title="Answering Questions">💬</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=BlueAmulet" title="Code">💻</a> <a href="#maintenance-BlueAmulet" title="Maintenance">🚧</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ThrowawayAccount01"><img src="https://avatars.githubusercontent.com/u/125531852?v=4?s=80" width="80px;" alt="ThrowawayAccount01"/><br /><sub><b>ThrowawayAccount01</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AThrowawayAccount01" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MashiroSA"><img src="https://avatars.githubusercontent.com/u/40637516?v=4?s=80" width="80px;" alt="緋"/><br /><sub><b>緋</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=MashiroSA" title="Documentation">📖</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AMashiroSA" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Lordmau5"><img src="https://avatars.githubusercontent.com/u/1345036?v=4?s=80" width="80px;" alt="Lordmau5"/><br /><sub><b>Lordmau5</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ALordmau5" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Lordmau5" title="Code">💻</a> <a href="#ideas-Lordmau5" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-Lordmau5" title="Maintenance">🚧</a> <a href="#question-Lordmau5" title="Answering Questions">💬</a> <a href="#userTesting-Lordmau5" title="User Testing">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DL909"><img src="https://avatars.githubusercontent.com/u/71912115?v=4?s=80" width="80px;" alt="DL909"/><br /><sub><b>DL909</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ADL909" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Satisfy256"><img src="https://avatars.githubusercontent.com/u/101394399?v=4?s=80" width="80px;" alt="Satisfy256"/><br /><sub><b>Satisfy256</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ASatisfy256" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pierluigizagaria"><img src="https://avatars.githubusercontent.com/u/57801386?v=4?s=80" width="80px;" alt="Pierluigi Zagaria"/><br /><sub><b>Pierluigi Zagaria</b></sub></a><br /><a href="#userTesting-pierluigizagaria" title="User Testing">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ruckusmattster"><img src="https://avatars.githubusercontent.com/u/77196088?v=4?s=80" width="80px;" alt="ruckusmattster"/><br /><sub><b>ruckusmattster</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aruckusmattster" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Desuka-art"><img src="https://avatars.githubusercontent.com/u/111822082?v=4?s=80" width="80px;" alt="Desuka-art"/><br /><sub><b>Desuka-art</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ADesuka-art" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/heyfixit"><img src="https://avatars.githubusercontent.com/u/41658450?v=4?s=80" width="80px;" alt="heyfixit"/><br /><sub><b>heyfixit</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=heyfixit" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.youtube.com/c/NerdyRodent"><img src="https://avatars.githubusercontent.com/u/74688049?v=4?s=80" width="80px;" alt="Nerdy Rodent"/><br /><sub><b>Nerdy Rodent</b></sub></a><br /><a href="#video-nerdyrodent" title="Videos">📹</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xieyumc"><img src="https://avatars.githubusercontent.com/u/47858007?v=4?s=80" width="80px;" alt="谢宇"/><br /><sub><b>谢宇</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=xieyumc" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ColdCawfee"><img src="https://avatars.githubusercontent.com/u/79474598?v=4?s=80" width="80px;" alt="ColdCawfee"/><br /><sub><b>ColdCawfee</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AColdCawfee" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sbersier"><img src="https://avatars.githubusercontent.com/u/34165937?v=4?s=80" width="80px;" alt="sbersier"/><br /><sub><b>sbersier</b></sub></a><br /><a href="#ideas-sbersier" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-sbersier" title="User Testing">📓</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Asbersier" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Meldoner"><img src="https://avatars.githubusercontent.com/u/43951115?v=4?s=80" width="80px;" alt="Meldoner"/><br /><sub><b>Meldoner</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AMeldoner" title="Bug reports">🐛</a> <a href="#ideas-Meldoner" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Meldoner" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mmodeusher"><img src="https://avatars.githubusercontent.com/u/46575920?v=4?s=80" width="80px;" alt="mmodeusher"/><br /><sub><b>mmodeusher</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Ammodeusher" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AlonDan"><img src="https://avatars.githubusercontent.com/u/21152334?v=4?s=80" width="80px;" alt="AlonDan"/><br /><sub><b>AlonDan</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AAlonDan" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Likkkez"><img src="https://avatars.githubusercontent.com/u/44336181?v=4?s=80" width="80px;" alt="Likkkez"/><br /><sub><b>Likkkez</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ALikkkez" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DuctTapeGames"><img src="https://avatars.githubusercontent.com/u/84365142?v=4?s=80" width="80px;" alt="Duct Tape Games"/><br /><sub><b>Duct Tape Games</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ADuctTapeGames" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://tec.hxlxz.com/"><img src="https://avatars.githubusercontent.com/u/6624983?v=4?s=80" width="80px;" alt="Xianglong He"/><br /><sub><b>Xianglong He</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Ahxl9654" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/75aosu"><img src="https://avatars.githubusercontent.com/u/79185331?v=4?s=80" width="80px;" alt="75aosu"/><br /><sub><b>75aosu</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3A75aosu" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tonyco82"><img src="https://avatars.githubusercontent.com/u/56610534?v=4?s=80" width="80px;" alt="tonyco82"/><br /><sub><b>tonyco82</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Atonyco82" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yxlllc"><img src="https://avatars.githubusercontent.com/u/33565655?v=4?s=80" width="80px;" alt="yxlllc"/><br /><sub><b>yxlllc</b></sub></a><br /><a href="#ideas-yxlllc" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=yxlllc" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/outhipped"><img src="https://avatars.githubusercontent.com/u/116147475?v=4?s=80" width="80px;" alt="outhipped"/><br /><sub><b>outhipped</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aouthipped" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/escoolioinglesias"><img src="https://avatars.githubusercontent.com/u/73505402?v=4?s=80" width="80px;" alt="escoolioinglesias"/><br /><sub><b>escoolioinglesias</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aescoolioinglesias" title="Bug reports">🐛</a> <a href="#userTesting-escoolioinglesias" title="User Testing">📓</a> <a href="#video-escoolioinglesias" title="Videos">📹</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Blacksingh"><img src="https://avatars.githubusercontent.com/u/130872856?v=4?s=80" width="80px;" alt="Blacksingh"/><br /><sub><b>Blacksingh</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ABlacksingh" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://tybantarnusa.com"><img src="https://avatars.githubusercontent.com/u/9532857?v=4?s=80" width="80px;" alt="Mgs. M. Thoyib Antarnusa"/><br /><sub><b>Mgs. M. Thoyib Antarnusa</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Atybantarnusa" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ZeroHackz"><img src="https://avatars.githubusercontent.com/u/15729496?v=4?s=80" width="80px;" alt="Exosfeer"/><br /><sub><b>Exosfeer</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AZeroHackz" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=ZeroHackz" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/guranon"><img src="https://avatars.githubusercontent.com/u/130421189?v=4?s=80" width="80px;" alt="guranon"/><br /><sub><b>guranon</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aguranon" title="Bug reports">🐛</a> <a href="#ideas-guranon" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=guranon" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/alexanderkoumis"><img src="https://avatars.githubusercontent.com/u/5108856?v=4?s=80" width="80px;" alt="Alexander Koumis"/><br /><sub><b>Alexander Koumis</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=alexanderkoumis" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/acekagami"><img src="https://avatars.githubusercontent.com/u/127201056?v=4?s=80" width="80px;" alt="acekagami"/><br /><sub><b>acekagami</b></sub></a><br /><a href="#translation-acekagami" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Highupech"><img src="https://avatars.githubusercontent.com/u/114140670?v=4?s=80" width="80px;" alt="Highupech"/><br /><sub><b>Highupech</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AHighupech" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Scorpi"><img src="https://avatars.githubusercontent.com/u/969654?v=4?s=80" width="80px;" alt="Scorpi"/><br /><sub><b>Scorpi</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Scorpi" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://maximxlss.github.io"><img src="https://avatars.githubusercontent.com/u/29152154?v=4?s=80" width="80px;" alt="Maximxls"/><br /><sub><b>Maximxls</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=maximxlss" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Star3Lord"><img src="https://avatars.githubusercontent.com/u/57606931?v=4?s=80" width="80px;" alt="Star3Lord"/><br /><sub><b>Star3Lord</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AStar3Lord" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Star3Lord" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Ph0rk0z"><img src="https://avatars.githubusercontent.com/u/59298527?v=4?s=80" width="80px;" alt="Forkoz"/><br /><sub><b>Forkoz</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3APh0rk0z" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Ph0rk0z" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Zerui18"><img src="https://avatars.githubusercontent.com/u/34794550?v=4?s=80" width="80px;" alt="Zerui Chen"/><br /><sub><b>Zerui Chen</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Zerui18" title="Code">💻</a> <a href="#ideas-Zerui18" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.meimadix.com"><img src="https://avatars.githubusercontent.com/u/653972?v=4?s=80" width="80px;" alt="Roee Shenberg"/><br /><sub><b>Roee Shenberg</b></sub></a><br /><a href="#userTesting-shenberg" title="User Testing">📓</a> <a href="#ideas-shenberg" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=shenberg" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ShinyJustyZ"><img src="https://avatars.githubusercontent.com/u/65282440?v=4?s=80" width="80px;" alt="Justas"/><br /><sub><b>Justas</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AShinyJustyZ" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=ShinyJustyZ" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://onako2.github.io/"><img src="https://avatars.githubusercontent.com/u/79749977?v=4?s=80" width="80px;" alt="Onako2"/><br /><sub><b>Onako2</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Onako2" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/4ll0w3v1l"><img src="https://avatars.githubusercontent.com/u/53517147?v=4?s=80" width="80px;" alt="4ll0w3v1l"/><br /><sub><b>4ll0w3v1l</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=4ll0w3v1l" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SamuelSwartzberg"><img src="https://avatars.githubusercontent.com/u/16353439?v=4?s=80" width="80px;" alt="j5y0V6b"/><br /><sub><b>j5y0V6b</b></sub></a><br /><a href="#security-SamuelSwartzberg" title="Security">🛡️</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marcellocirelli"><img src="https://avatars.githubusercontent.com/u/51972090?v=4?s=80" width="80px;" alt="marcellocirelli"/><br /><sub><b>marcellocirelli</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Amarcellocirelli" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Priyanshu-hawk"><img src="https://avatars.githubusercontent.com/u/76026651?v=4?s=80" width="80px;" alt="Priyanshu Patel"/><br /><sub><b>Priyanshu Patel</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Priyanshu-hawk" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/annagorshunova"><img src="https://avatars.githubusercontent.com/u/5199204?v=4?s=80" width="80px;" alt="Anna Gorshunova"/><br /><sub><b>Anna Gorshunova</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aannagorshunova" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=annagorshunova" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<!-- prettier-ignore-end -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
## Credits
[](https://github.com/copier-org/copier)
This package was created with
[Copier](https://copier.readthedocs.io/) and the
[browniebroke/pypackage-template](https://github.com/browniebroke/pypackage-template)
project template.
================================================
FILE: README_zh_CN.md
================================================
# SoftVC VITS Singing Voice Conversion
<p align="center">
<a href="https://github.com/34j/so-vits-svc-fork/actions/workflows/ci.yml?query=branch%3Amain">
<img src="https://img.shields.io/github/actions/workflow/status/34j/so-vits-svc-fork/ci.yml?branch=main&label=CI&logo=github&style=flat-square" alt="CI Status" >
</a>
<a href="https://so-vits-svc-fork.readthedocs.io">
<img src="https://img.shields.io/readthedocs/so-vits-svc-fork.svg?logo=read-the-docs&logoColor=fff&style=flat-square" alt="Documentation Status">
</a>
<a href="https://codecov.io/gh/34j/so-vits-svc-fork">
<img src="https://img.shields.io/codecov/c/github/34j/so-vits-svc-fork.svg?logo=codecov&logoColor=fff&style=flat-square" alt="Test coverage percentage">
</a>
</p>
<p align="center">
<a href="https://python-poetry.org/">
<img src="https://img.shields.io/badge/packaging-poetry-299bd7?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJJSURBVHgBfZLPa1NBEMe/s7tNXoxW1KJQKaUHkXhQvHgW6UHQQ09CBS/6V3hKc/AP8CqCrUcpmop3Cx48eDB4yEECjVQrlZb80CRN8t6OM/teagVxYZi38+Yz853dJbzoMV3MM8cJUcLMSUKIE8AzQ2PieZzFxEJOHMOgMQQ+dUgSAckNXhapU/NMhDSWLs1B24A8sO1xrN4NECkcAC9ASkiIJc6k5TRiUDPhnyMMdhKc+Zx19l6SgyeW76BEONY9exVQMzKExGKwwPsCzza7KGSSWRWEQhyEaDXp6ZHEr416ygbiKYOd7TEWvvcQIeusHYMJGhTwF9y7sGnSwaWyFAiyoxzqW0PM/RjghPxF2pWReAowTEXnDh0xgcLs8l2YQmOrj3N7ByiqEoH0cARs4u78WgAVkoEDIDoOi3AkcLOHU60RIg5wC4ZuTC7FaHKQm8Hq1fQuSOBvX/sodmNJSB5geaF5CPIkUeecdMxieoRO5jz9bheL6/tXjrwCyX/UYBUcjCaWHljx1xiX6z9xEjkYAzbGVnB8pvLmyXm9ep+W8CmsSHQQY77Zx1zboxAV0w7ybMhQmfqdmmw3nEp1I0Z+FGO6M8LZdoyZnuzzBdjISicKRnpxzI9fPb+0oYXsNdyi+d3h9bm9MWYHFtPeIZfLwzmFDKy1ai3p+PDls1Llz4yyFpferxjnyjJDSEy9CaCx5m2cJPerq6Xm34eTrZt3PqxYO1XOwDYZrFlH1fWnpU38Y9HRze3lj0vOujZcXKuuXm3jP+s3KbZVra7y2EAAAAAASUVORK5CYII=" alt="Poetry">
</a>
<a href="https://github.com/ambv/black">
<img src="https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square" alt="black">
</a>
<a href="https://github.com/pre-commit/pre-commit">
<img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
</a>
</p>
<p align="center">
<a href="https://pypi.org/project/so-vits-svc-fork/">
<img src="https://img.shields.io/pypi/v/so-vits-svc-fork.svg?logo=python&logoColor=fff&style=flat-square" alt="PyPI Version">
</a>
<img src="https://img.shields.io/pypi/pyversions/so-vits-svc-fork.svg?style=flat-square&logo=python&logoColor=fff" alt="Supported Python versions">
<img src="https://img.shields.io/pypi/l/so-vits-svc-fork.svg?style=flat-square" alt="License">
</p>
基于 [`so-vits-svc4.0(V1)`](https://github.com/svc-develop-team/so-vits-svc)的一个分支,支持实时推理和图形化推理界面,且兼容其模型。
## 新功能
- **实时语音转换** (增强版本 v1.1.0)
- 与[`QuickVC`](https://github.com/quickvc/QuickVC-VoiceConversion)相结合
- 修复了原始版本中对 [`ContentVec`](https://github.com/auspicious3000/contentvec) 的误用[^c]
- 使用 CREPE 进行更准确的音高推测
- 图形化界面和统一命令行界面
- 相比之前双倍的训练速度
- 只需使用 `pip` 安装即可使用,不需要安装 `fairseq`
- 自动下载预训练模型和 HuBERT 模型
- 使用 black、isort、autoflake 等完全格式化的代码
[^c]: [#206](https://github.com/34j/so-vits-svc-fork/issues/206)
## 安装教程
### 可以使用 bat 一键安装
<a href="https://github.com/xieyumc/so-vits-svc-fork-cn/releases/download/install/install-cn.bat" download>
<img src="https://img.shields.io/badge/.bat-download-blue?style=flat-square&logo=windows" alt="Download .bat">
</a>
### 本 bat 汉化基于英文版,对原版进行了一些本地工作和优化,如安装过程有问题,可以尝试安装原版
<a href="https://github.com/34j/so-vits-svc-fork/releases/download/v1.3.2/install.bat" download>
<img src="https://img.shields.io/badge/.bat-download-blue?style=flat-square&logo=windows" alt="Download .bat">
</a>
### 手动安装
<details>
<summary>创建一个虚拟环境</summary>
Windows:
```shell
py -3.10 -m venv venv
venv\Scripts\activate
```
Linux/MacOS:
```shell
python3.10 -m venv venv
source venv/bin/activate
```
Anaconda:
```shell
conda create -n so-vits-svc-fork python=3.10 pip
conda activate so-vits-svc-fork
```
如果 Python 安装在 Program Files,在安装时未创造虚拟环境可能会导致`PermissionError`
</details>
### 安装
通过 pip 安装 (或者通过包管理器使用 pip 安装):
```shell
python -m pip install -U pip setuptools wheel
pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -U so-vits-svc-fork
```
- 如果没有可用 GPU 或使用 MacOS, 不需要执行 `pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu118`. MPS 可能已经安装了.
- 如果在 Linux 下使用 AMD GPU, 请使用此命令 `--index-url https://download.pytorch.org/whl/rocm5.4.2`
替换掉 `--index-url https://download.pytorch.org/whl/cu118` . Windows 下不支持 AMD GPUs (#120).
### 更新
请经常更新以获取最新功能和修复错误:
```shell
pip install -U so-vits-svc-fork
```
## 使用教程
### 推理
#### 图形化界面

请使用以下命令运行图形化界面:
```shell
svcg
```
#### 命令行界面
- 实时转换 (输入源为麦克风)
```shell
svc vc
```
- 从文件转换
```shell
svc infer source.wav
```
[预训练模型](https://huggingface.co/models?search=so-vits-svc-4.0) 可以在 HuggingFace 获得。
#### 注意
- 如果使用 WSL, 请注意 WSL 需要额外设置来处理音频,如果 GUI 找不到音频设备将不能正常工作。
- 在实时语音转换中, 如果输入源有杂音, HuBERT
模型依然会把杂音进行推理.可以考虑使用实时噪音减弱程序比如 [RTX Voice](https://www.nvidia.com/en-us/geforce/guides/nvidia-rtx-voice-setup-guide/)
来解决.
### 训练
#### 预处理
- 如果数据集有 BGM,请用例如[Ultimate Vocal Remover](https://ultimatevocalremover.com/)等软件去除 BGM.
推荐使用`3_HP-Vocal-UVR.pth` 或者 `UVR-MDX-NET Main` . [^1]
- 如果数据集是包含单个歌手的长音频文件, 使用 `svc pre-split` 将数据集拆分为多个文件 (使用 `librosa`).
- 如果数据集是包含多个歌手的长音频文件, 使用 `svc pre-sd` 将数据集拆分为多个文件 (使用 `pyannote.audio`)
。为了提高准确率,可能需要手动进行分类。如果歌手的声线多样,请把 --min-speakers 设置为大于实际说话者数量. 如果出现依赖未安装,
请通过 `pip install pyannote-audio`来安装 `pyannote.audio`。
[^1]: https://ytpmv.info/how-to-use-uvr/
#### 云端
[](https://colab.research.google.com/github/34j/so-vits-svc-fork/blob/main/notebooks/so-vits-svc-fork-4.0.ipynb)
[](https://console.paperspace.com/github/34j/so-vits-svc-fork-paperspace/blob/main/so-vits-svc-fork-4.0-paperspace.ipynb)
[-9VJN74I-blue?style=flat-square&logo=paperspace>)](https://www.paperspace.com/?r=9VJN74I)[^p]
如果你无法获取 10GB 显存以上的显卡,对于轻量用户,推荐使用 Google Colab 的免费方案;而重度用户,则建议使用 Paperspace 的 Pro/Growth Plan。当然,如果你有高端的显卡,就没必要使用云服务了。
[^p]: If you register a referral code and then add a payment method, you may save about $5 on your first month's monthly billing. Note that both referral rewards are Paperspace credits and not cash. It was a tough decision but inserted because debugging and training the initial model requires a large amount of computing power and the developer is a student.
#### 本地
将数据集处理成 `dataset_raw/{speaker_id}/**/{wav_file}.{any_format}` 的格式(可以使用子文件夹和非 ASCII 文件名)然后运行:
```shell
svc pre-resample
svc pre-config
svc pre-hubert
svc train -t
```
#### 注意
- 数据集的每个文件应该小于 10s,不然显存会爆。
- 建议在执行 `train` 命令之前提高 `config.json` 中的 `batch_size` 以匹配显存容量。 将`batch_size`设为`auto-{init_batch_size}-{max_n_trials}`(或者只需设为`auto`)就会自动提高`batch_size`,直到爆显存为止(不过自动调高 batch_size 有概率失效)
- 如果想要 f0 的推理方式为 `CREPE`, 用 `svc pre-hubert -fm crepe` 替换 `svc pre-hubert`.
- 若想正确使用`ContentVec`,用 `-t so-vits-svc-4.0v1`替换`svc pre-config`。由于复用 generator weights,一些 weights 会被重置而导致训练时间稍微延长.
- 若要使用`MS-iSTFT Decoder`,用 `svc pre-config -t quickvc`替换 `svc pre-config`.
- 在原始仓库中,会自动移除静音和进行音量平衡,且这个操作并不是必须要处理的。
- 倘若你已经大规模训练了一个免费公开版权的数据集,可以考虑将其作为底模发布。
- 对于更多细节(比如参数等),详见[Wiki](https://github.com/34j/so-vits-svc-fork/wiki) 或 [Discussions](https://github.com/34j/so-vits-svc-fork/discussions).
### 帮助
更多命令, 运行 `svc -h` 或者 `svc <subcommand> -h`
```shell
> svc -h
用法: svc [OPTIONS] COMMAND [ARGS]...
so-vits-svc 允许任何文件夹结构用于训练数据
但是, 建议使用以下文件夹结构
训练: dataset_raw/{speaker_name}/**/{wav_name}.{any_format}
推理: configs/44k/config.json, logs/44k/G_XXXX.pth
如果遵循文件夹结构,则无需指定模型路径,配置路径等,将自动加载最新模型
若要要训练模型, 运行 pre-resample, pre-config, pre-hubert, train.
若要要推理模型, 运行 infer.
可选:
-h, --help 显示信息并退出
命令:
clean 清理文件,仅在使用默认文件结构时有用
infer 推理
onnx 导出模型到onnx
pre-config 预处理第 2 部分: config
pre-hubert 预处理第 3 部分: 如果没有找到 HuBERT 模型,则会...
pre-resample 预处理第 1 部分: resample
pre-sd Speech diarization 使用 pyannote.audio
pre-split 将音频文件拆分为多个文件
train 训练模型 如果 D_0.pth 或 G_0.pth 没有找到,自动从集线器下载.
train-cluster 训练 k-means 聚类模型
vc 麦克风实时推理
```
#### 补充链接
[视频教程](https://www.youtube.com/watch?v=tZn0lcGO5OQ)
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- prettier-ignore-start -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/34j"><img src="https://avatars.githubusercontent.com/u/55338215?v=4?s=80" width="80px;" alt="34j"/><br /><sub><b>34j</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=34j" title="Code">💻</a> <a href="#ideas-34j" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=34j" title="Documentation">📖</a> <a href="#example-34j" title="Examples">💡</a> <a href="#infra-34j" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-34j" title="Maintenance">🚧</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/pulls?q=is%3Apr+reviewed-by%3A34j" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=34j" title="Tests">⚠️</a> <a href="#tutorial-34j" title="Tutorials">✅</a> <a href="#promotion-34j" title="Promotion">📣</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3A34j" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GarrettConway"><img src="https://avatars.githubusercontent.com/u/22782004?v=4?s=80" width="80px;" alt="GarrettConway"/><br /><sub><b>GarrettConway</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=GarrettConway" title="Code">💻</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AGarrettConway" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=GarrettConway" title="Documentation">📖</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/pulls?q=is%3Apr+reviewed-by%3AGarrettConway" title="Reviewed Pull Requests">👀</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/BlueAmulet"><img src="https://avatars.githubusercontent.com/u/43395286?v=4?s=80" width="80px;" alt="BlueAmulet"/><br /><sub><b>BlueAmulet</b></sub></a><br /><a href="#ideas-BlueAmulet" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-BlueAmulet" title="Answering Questions">💬</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=BlueAmulet" title="Code">💻</a> <a href="#maintenance-BlueAmulet" title="Maintenance">🚧</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ThrowawayAccount01"><img src="https://avatars.githubusercontent.com/u/125531852?v=4?s=80" width="80px;" alt="ThrowawayAccount01"/><br /><sub><b>ThrowawayAccount01</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AThrowawayAccount01" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MashiroSA"><img src="https://avatars.githubusercontent.com/u/40637516?v=4?s=80" width="80px;" alt="緋"/><br /><sub><b>緋</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=MashiroSA" title="Documentation">📖</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AMashiroSA" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Lordmau5"><img src="https://avatars.githubusercontent.com/u/1345036?v=4?s=80" width="80px;" alt="Lordmau5"/><br /><sub><b>Lordmau5</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ALordmau5" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=Lordmau5" title="Code">💻</a> <a href="#ideas-Lordmau5" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-Lordmau5" title="Maintenance">🚧</a> <a href="#question-Lordmau5" title="Answering Questions">💬</a> <a href="#userTesting-Lordmau5" title="User Testing">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DL909"><img src="https://avatars.githubusercontent.com/u/71912115?v=4?s=80" width="80px;" alt="DL909"/><br /><sub><b>DL909</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ADL909" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Satisfy256"><img src="https://avatars.githubusercontent.com/u/101394399?v=4?s=80" width="80px;" alt="Satisfy256"/><br /><sub><b>Satisfy256</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ASatisfy256" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pierluigizagaria"><img src="https://avatars.githubusercontent.com/u/57801386?v=4?s=80" width="80px;" alt="Pierluigi Zagaria"/><br /><sub><b>Pierluigi Zagaria</b></sub></a><br /><a href="#userTesting-pierluigizagaria" title="User Testing">📓</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ruckusmattster"><img src="https://avatars.githubusercontent.com/u/77196088?v=4?s=80" width="80px;" alt="ruckusmattster"/><br /><sub><b>ruckusmattster</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aruckusmattster" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Desuka-art"><img src="https://avatars.githubusercontent.com/u/111822082?v=4?s=80" width="80px;" alt="Desuka-art"/><br /><sub><b>Desuka-art</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ADesuka-art" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/heyfixit"><img src="https://avatars.githubusercontent.com/u/41658450?v=4?s=80" width="80px;" alt="heyfixit"/><br /><sub><b>heyfixit</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=heyfixit" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.youtube.com/c/NerdyRodent"><img src="https://avatars.githubusercontent.com/u/74688049?v=4?s=80" width="80px;" alt="Nerdy Rodent"/><br /><sub><b>Nerdy Rodent</b></sub></a><br /><a href="#video-nerdyrodent" title="Videos">📹</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xieyumc"><img src="https://avatars.githubusercontent.com/u/47858007?v=4?s=80" width="80px;" alt="谢宇"/><br /><sub><b>谢宇</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=xieyumc" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ColdCawfee"><img src="https://avatars.githubusercontent.com/u/79474598?v=4?s=80" width="80px;" alt="ColdCawfee"/><br /><sub><b>ColdCawfee</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AColdCawfee" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sbersier"><img src="https://avatars.githubusercontent.com/u/34165937?v=4?s=80" width="80px;" alt="sbersier"/><br /><sub><b>sbersier</b></sub></a><br /><a href="#ideas-sbersier" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-sbersier" title="User Testing">📓</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Asbersier" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Meldoner"><img src="https://avatars.githubusercontent.com/u/43951115?v=4?s=80" width="80px;" alt="Meldoner"/><br /><sub><b>Meldoner</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AMeldoner" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mmodeusher"><img src="https://avatars.githubusercontent.com/u/46575920?v=4?s=80" width="80px;" alt="mmodeusher"/><br /><sub><b>mmodeusher</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Ammodeusher" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AlonDan"><img src="https://avatars.githubusercontent.com/u/21152334?v=4?s=80" width="80px;" alt="AlonDan"/><br /><sub><b>AlonDan</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AAlonDan" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Likkkez"><img src="https://avatars.githubusercontent.com/u/44336181?v=4?s=80" width="80px;" alt="Likkkez"/><br /><sub><b>Likkkez</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ALikkkez" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DuctTapeGames"><img src="https://avatars.githubusercontent.com/u/84365142?v=4?s=80" width="80px;" alt="Duct Tape Games"/><br /><sub><b>Duct Tape Games</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ADuctTapeGames" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://tec.hxlxz.com/"><img src="https://avatars.githubusercontent.com/u/6624983?v=4?s=80" width="80px;" alt="Xianglong He"/><br /><sub><b>Xianglong He</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Ahxl9654" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/75aosu"><img src="https://avatars.githubusercontent.com/u/79185331?v=4?s=80" width="80px;" alt="75aosu"/><br /><sub><b>75aosu</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3A75aosu" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tonyco82"><img src="https://avatars.githubusercontent.com/u/56610534?v=4?s=80" width="80px;" alt="tonyco82"/><br /><sub><b>tonyco82</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Atonyco82" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yxlllc"><img src="https://avatars.githubusercontent.com/u/33565655?v=4?s=80" width="80px;" alt="yxlllc"/><br /><sub><b>yxlllc</b></sub></a><br /><a href="#ideas-yxlllc" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=yxlllc" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/outhipped"><img src="https://avatars.githubusercontent.com/u/116147475?v=4?s=80" width="80px;" alt="outhipped"/><br /><sub><b>outhipped</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aouthipped" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/escoolioinglesias"><img src="https://avatars.githubusercontent.com/u/73505402?v=4?s=80" width="80px;" alt="escoolioinglesias"/><br /><sub><b>escoolioinglesias</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aescoolioinglesias" title="Bug reports">🐛</a> <a href="#userTesting-escoolioinglesias" title="User Testing">📓</a> <a href="#video-escoolioinglesias" title="Videos">📹</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Blacksingh"><img src="https://avatars.githubusercontent.com/u/130872856?v=4?s=80" width="80px;" alt="Blacksingh"/><br /><sub><b>Blacksingh</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3ABlacksingh" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://tybantarnusa.com"><img src="https://avatars.githubusercontent.com/u/9532857?v=4?s=80" width="80px;" alt="Mgs. M. Thoyib Antarnusa"/><br /><sub><b>Mgs. M. Thoyib Antarnusa</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Atybantarnusa" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ZeroHackz"><img src="https://avatars.githubusercontent.com/u/15729496?v=4?s=80" width="80px;" alt="Exosfeer"/><br /><sub><b>Exosfeer</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3AZeroHackz" title="Bug reports">🐛</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=ZeroHackz" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/guranon"><img src="https://avatars.githubusercontent.com/u/130421189?v=4?s=80" width="80px;" alt="guranon"/><br /><sub><b>guranon</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/issues?q=author%3Aguranon" title="Bug reports">🐛</a> <a href="#ideas-guranon" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=guranon" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/alexanderkoumis"><img src="https://avatars.githubusercontent.com/u/5108856?v=4?s=80" width="80px;" alt="Alexander Koumis"/><br /><sub><b>Alexander Koumis</b></sub></a><br /><a href="https://github.com/voicepaw/so-vits-svc-fork/commits?author=alexanderkoumis" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<!-- prettier-ignore-end -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
================================================
FILE: commitlint.config.js
================================================
module.exports = {
extends: ["@commitlint/config-conventional"],
rules: {
"header-max-length": [0, "always", Infinity],
"body-max-line-length": [0, "always", Infinity],
"footer-max-line-length": [0, "always", Infinity],
},
};
================================================
FILE: commitlint.config.mjs
================================================
export default {
extends: ["@commitlint/config-conventional"],
rules: {
"header-max-length": [0, "always", Infinity],
"body-max-line-length": [0, "always", Infinity],
"footer-max-line-length": [0, "always", Infinity],
},
};
================================================
FILE: docs/Makefile
================================================
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build
.PHONY: help livehtml Makefile
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
# Build, watch and serve docs with live reload
livehtml:
sphinx-autobuild -b html -c . $(SOURCEDIR) $(BUILDDIR)/html
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
================================================
FILE: docs/_static/.gitkeep
================================================
================================================
FILE: docs/changelog.md
================================================
(changelog)=
```{include} ../CHANGELOG.md
```
================================================
FILE: docs/conf.py
================================================
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
from pathlib import Path
from typing import Any
from sphinx.application import Sphinx
from sphinx.ext import apidoc
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = "SoftVC VITS Singing Voice Conversion Fork"
copyright = "2023, 34j"
author = "34j"
release = "4.2.30"
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
"myst_parser",
"sphinx.ext.napoleon",
"sphinx.ext.autodoc",
"sphinx.ext.viewcode",
]
napoleon_google_docstring = False
# The suffix of source filenames.
source_suffix = [
".rst",
".md",
]
# Add any paths that contain templates here, relative to this directory.
templates_path = [
"_templates",
]
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = [
"_build",
"Thumbs.db",
".DS_Store",
]
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "furo"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
# -- Automatically run sphinx-apidoc -----------------------------------------
def run_apidoc(_: Any) -> None:
"""Run sphinx-apidoc."""
docs_path = Path(__file__).parent
module_path = docs_path.parent / "src" / "so_vits_svc_fork"
apidoc.main(
[
"--force",
"--module-first",
"-o",
docs_path.as_posix(),
module_path.as_posix(),
]
)
def setup(app: Sphinx) -> None:
"""Setup sphinx."""
app.connect("builder-inited", run_apidoc)
================================================
FILE: docs/contributing.md
================================================
(contributing)=
```{include} ../CONTRIBUTING.md
```
================================================
FILE: docs/index.md
================================================
# Welcome to SoftVC VITS Singing Voice Conversion Fork documentation!
```{toctree}
:caption: Installation & Usage
:maxdepth: 2
installation
usage
```
```{toctree}
:caption: Project Info
:maxdepth: 2
changelog
contributing
```
```{toctree}
:caption: API Reference
:maxdepth: 2
so_vits_svc_fork
```
```{include} ../README.md
```
================================================
FILE: docs/installation.md
================================================
(installation)=
# Installation
The package is published on [PyPI](https://pypi.org/project/so-vits-svc-fork/) and can be installed with `pip` (or any equivalent):
```bash
pip install so-vits-svc-fork
```
Next, see the {ref}`section about usage <usage>` to see how to use it.
================================================
FILE: docs/make.bat
================================================
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)
if "%1" == "" goto help
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd
================================================
FILE: docs/usage.md
================================================
(usage)=
# Usage
Assuming that you've followed the {ref}`installations steps <installation>`, you're now ready to use this package.
Start by importing it:
```python
import so_vits_svc_fork
```
TODO: Document usage
================================================
FILE: easy-installation/install-cn.bat
================================================
@echo off
echo batӢİ棬ԭһЩعŻ簲װ⣬Գװԭ
echo.
echo.
echo Python 汾 3.10...
echo.
py -3.10 --version >nul 2>&1
if %errorlevel%==0 (
echo Python 3.10 Ѿװ
echo.
) else (
echo Python 3.10 δװʼ...
echo.
curl https://www.python.org/ftp/python/3.10.10/python-3.10.10-amd64.exe -o python-3.10.10-amd64.exe
echo װ Python 3.10...
echo.
python-3.10.10-amd64.exe /quiet InstallAllUsers=1 PrependPath=1
echo װ...
echo.
del python-3.10.10-amd64.exe
)
echo.
echo GPU...
echo.
nvidia-smi >nul 2>&1
if %errorlevel%==0 (
echo ҵGPU
echo.
) else (
echo δҵfound
echo.
)
nvidia-smi >nul 2>&1
if %errorlevel%==0 (
echo.
echo CUDA...
echo.
if %errorlevel%==0 (
echo CUDA Ѿװ
echo.
) else (
echo δCUDAֶװCUDAװб
echo https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Windows
echo.
echo ѾȷװCUDAdzǿƼִУرձװCUDA
echo.
Pause
)
echo cuDNN...
if exist "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin\cudnn64_8.dll" (
echo cuDNN Ѿװ
echo.
) else (
echo δcuDNNֶװCUDAװб
echo https://developer.nvidia.com/cudnn (https://developer.nvidia.com/downloads/compute/cudnn/secure/8.8.1/local_installers/11.8/cudnn-windows-x86_64-8.8.1.3_cuda11-archive.zip/)
echo.
echo ѾȷװcuDNNdzǿƼִУرձװCUDA
echo.
Pause
)
)
echo.
echo ڴҪһʱ䣬ĵȴ...
echo.
py -3.10 -m venv venv
echo.
echo pip wheel...
echo.
venv\Scripts\python.exe -m pip install --upgrade pip wheel
echo.
nvidia-smi >nul 2>&1
if %errorlevel%==0 (
echo װ PyTorch GPU汾...
echo.
venv\Scripts\pip.exe install torch torchvision torchaudio --index-url https://mirror.sjtu.edu.cn/pytorch-wheels
echo װ PyTorch CPU汾...
echo.
venv\Scripts\pip.exe install torch torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider
)
echo.
echo ϰǷɹװȷɹװʼװso-vits-svc-fork
echo.
Pause
echo װ so-vits-svc-fork...
echo.
venv\Scripts\pip.exe install so-vits-svc-fork
echo.
echo so-vits-svc-fork ͼλ...
echo.
venv\Scripts\svcg.exe
Pause
================================================
FILE: easy-installation/install.bat
================================================
@echo off
echo You can rerun this script to update the installation.
echo Moving to AppData\Roaming\so-vits-svc-fork...
mkdir "%APPDATA%\so-vits-svc-fork" >nul 2>&1
cd "%APPDATA%\so-vits-svc-fork"
echo Checking for Python 3.10...
py -3.10 --version >nul 2>&1
if %errorlevel%==0 (
echo Python 3.10 is already installed.
) else (
echo Python 3.10 is not installed. Downloading installer...
curl https://www.python.org/ftp/python/3.10.10/python-3.10.10-amd64.exe -o python-3.10.10-amd64.exe
echo Installing Python 3.10...
python-3.10.10-amd64.exe /quiet InstallAllUsers=1 PrependPath=1
echo Cleaning up installer...
del python-3.10.10-amd64.exe
)
echo Creating virtual environment...
py -3.10 -m venv venv
echo Updating pip and wheel...
venv\Scripts\python.exe -m pip install --upgrade pip wheel
nvidia-smi >nul 2>&1
if %errorlevel%==0 (
echo Installing PyTorch with GPU support...
venv\Scripts\pip.exe install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
) else (
echo Installing PyTorch without GPU support...
venv\Scripts\pip.exe install torch torchaudio
)
echo Installing so-vits-svc-fork...
venv\Scripts\pip.exe install so-vits-svc-fork
rem echo Creating shortcut...
rem powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%USDRPROFILE%\Desktop\so-vits-svc-fork.lnk');$s.TargetPath='%APPDATA%\so-vits-svc-fork\venv\Scripts\svcg.exe';$s.Save()"
echo Creating shortcut to the start menu...
powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%APPDATA%\Microsoft\Windows\Start Menu\Programs\so-vits-svc-fork.lnk');$s.TargetPath='%APPDATA%\so-vits-svc-fork\venv\Scripts\svcg.exe';$s.Save()"
echo Launching so-vits-svc-fork GUI...
venv\Scripts\svcg.exe
================================================
FILE: flake.nix
================================================
{
description = "A flake providing a dev shell for Numba with CUDA without installing Numba via nix. Also supports PyTorch yet being minimal for Numba with CUDA.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs =
{ self, nixpkgs }:
let
system = "x86_64-linux"; # Adjust if needed
pkgs = import nixpkgs {
system = system;
config.allowUnfree = true;
};
cudatookit-with-cudart-to-lib64 = pkgs.symlinkJoin {
name = "cudatoolkit";
paths = with pkgs.cudaPackages; [
cudatoolkit
(pkgs.lib.getStatic cuda_cudart)
];
postBuild = ''
ln -s $out/lib $out/lib64
'';
};
in
{
devShells.${system}.default = pkgs.mkShell {
shellHook = ''
# Required for both PyTorch and Numba to find CUDA
export CUDA_PATH=${cudatookit-with-cudart-to-lib64}
# Required for both PyTorch and Numba, adds necessary paths for dynamic linking
export LD_LIBRARY_PATH=${
pkgs.lib.makeLibraryPath [
"/run/opengl-driver" # Needed to find libGL.so, required by both PyTorch and Numba
]
}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${
pkgs.lib.makeLibraryPath [
pkgs.graphviz
]
}:$LIBRARY_PATH
export C_INCLUDE_PATH=${
pkgs.lib.makeIncludePath [
pkgs.graphviz
]
}:$C_INCLUDE_PATH
'';
};
};
}
================================================
FILE: notebooks/so-vits-svc-fork-4.0.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Before training\n",
"\n",
"This program saves the last 3 generations of models to Google Drive. Since 1 generation of models is >1GB, you should have at least 3GB of free space in Google Drive. If you do not have such free space, it is recommended to create another Google Account."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Installation"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Check GPU\n",
"!nvidia-smi"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Mount Google Drive\n",
"from google.colab import drive\n",
"\n",
"drive.mount(\"/content/drive\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Install dependencies\n",
"# @markdown pip may fail to resolve dependencies and raise ERROR, but it can be ignored.\n",
"!python -m pip install -U pip wheel\n",
"%pip install -U ipython\n",
"\n",
"# @markdown Branch (for development)\n",
"BRANCH = \"none\" # @param {\"type\": \"string\"}\n",
"if BRANCH == \"none\":\n",
" %pip install -U so-vits-svc-fork\n",
"else:\n",
" %pip install -U git+https://github.com/34j/so-vits-svc-fork.git@{BRANCH}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Make dataset directory\n",
"!mkdir -p \"dataset_raw\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Copy your dataset\n",
"# @markdown **We assume that your dataset is in your Google Drive's `so-vits-svc-fork/dataset/(speaker_name)` directory.**\n",
"DATASET_NAME = \"kiritan\" # @param {type: \"string\"}\n",
"!cp -R /content/drive/MyDrive/so-vits-svc-fork/dataset/{DATASET_NAME}/ -t \"dataset_raw/\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Download dataset (Tsukuyomi-chan JVS)\n",
"# @markdown You can download this dataset if you don't have your own dataset.\n",
"# @markdown Make sure you agree to the license when using this dataset.\n",
"# @markdown https://tyc.rei-yumesaki.net/material/corpus/#toc6\n",
"# !wget -N https://tyc.rei-yumesaki.net/files/voice/tyc-corpus1.zip\n",
"# !unzip -O sjis tyc-corpus1.zip\n",
"# !mv \"/content/つくよみちゃんコーパス Vol.1 声優統計コーパス(JVSコーパス準拠)/おまけ:WAV(+12dB増幅&高音域削減)/WAV(+12dB増幅&高音域削減)\" \"dataset_raw/tsukuyomi\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Automatic preprocessing\n",
"!svc pre-resample"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!svc pre-config"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"F0_METHOD = \"dio\" # @param [\"crepe\", \"crepe-tiny\", \"parselmouth\", \"dio\", \"harvest\"]\n",
"!svc pre-hubert -fm {F0_METHOD}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Train\n",
"%load_ext tensorboard\n",
"%tensorboard --logdir drive/MyDrive/so-vits-svc-fork/logs/44k"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!svc train --model-path drive/MyDrive/so-vits-svc-fork/logs/44k"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training Cluster model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!svc train-cluster --output-path drive/MyDrive/so-vits-svc-fork/logs/44k/kmeans.pt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Inference"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Get the author's voice as a source\n",
"import random\n",
"\n",
"NAME = str(random.randint(1, 49))\n",
"TYPE = \"fsd50k\" # @param [\"\", \"digit\", \"dog\", \"fsd50k\"]\n",
"CUSTOM_FILEPATH = \"\" # @param {type: \"string\"}\n",
"if CUSTOM_FILEPATH != \"\":\n",
" NAME = CUSTOM_FILEPATH\n",
"else:\n",
" # it is extremely difficult to find a voice that can download from the internet directly\n",
" if TYPE == \"dog\":\n",
" !wget -N f\"https://huggingface.co/datasets/437aewuh/dog-dataset/resolve/main/dogs/dogs_{NAME:.0000}.wav\" -O {NAME}.wav\n",
" elif TYPE == \"digit\":\n",
" # george, jackson, lucas, nicolas, ...\n",
" !wget -N f\"https://github.com/Jakobovski/free-spoken-digit-dataset/raw/master/recordings/0_george_{NAME}.wav\" -O {NAME}.wav\n",
" elif TYPE == \"fsd50k\":\n",
" !wget -N f\"https://huggingface.co/datasets/Fhrozen/FSD50k/blob/main/clips/dev/{10000+int(NAME)}.wav\" -O {NAME}.wav\n",
" else:\n",
" !wget -N f\"https://zunko.jp/sozai/utau/voice_{\"kiritan\" if NAME < 25 else \"itako\"}{NAME % 5 + 1}.wav\" -O {NAME}.wav\n",
"from IPython.display import Audio, display\n",
"\n",
"display(Audio(f\"{NAME}.wav\"))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title Use trained model\n",
"# @markdown **Put your .wav file in `so-vits-svc-fork/audio` directory**\n",
"from IPython.display import Audio, display\n",
"\n",
"!svc infer drive/MyDrive/so-vits-svc-fork/audio/{NAME}.wav -m drive/MyDrive/so-vits-svc-fork/logs/44k/ -c drive/MyDrive/so-vits-svc-fork/logs/44k/config.json\n",
"display(Audio(f\"drive/MyDrive/so-vits-svc-fork/audio/{NAME}.out.wav\", autoplay=True))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"##@title Use trained model (with cluster)\n",
"!svc infer {NAME}.wav -s speaker -r 0.1 -m drive/MyDrive/so-vits-svc-fork/logs/44k/ -c drive/MyDrive/so-vits-svc-fork/logs/44k/config.json -k drive/MyDrive/so-vits-svc-fork/logs/44k/kmeans.pt\n",
"display(Audio(f\"{NAME}.out.wav\", autoplay=True))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pretrained models"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title https://huggingface.co/TachibanaKimika/so-vits-svc-4.0-models/tree/main\n",
"!wget -N \"https://huggingface.co/TachibanaKimika/so-vits-svc-4.0-models/resolve/main/riri/G_riri_220.pth\"\n",
"!wget -N \"https://huggingface.co/TachibanaKimika/so-vits-svc-4.0-models/resolve/main/riri/config.json\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!svc infer {NAME}.wav -c config.json -m G_riri_220.pth\n",
"display(Audio(f\"{NAME}.out.wav\", autoplay=True))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# @title https://huggingface.co/therealvul/so-vits-svc-4.0/tree/main\n",
"!wget -N \"https://huggingface.co/therealvul/so-vits-svc-4.0/resolve/main/Pinkie%20(speaking%20sep)/G_166400.pth\"\n",
"!wget -N \"https://huggingface.co/therealvul/so-vits-svc-4.0/resolve/main/Pinkie%20(speaking%20sep)/config.json\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!svc infer {NAME}.wav --speaker \"Pinkie {neutral}\" -c config.json -m G_166400.pth\n",
"display(Audio(f\"{NAME}.out.wav\", autoplay=True))"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"provenance": []
},
"gpuClass": "standard",
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
================================================
FILE: pyproject.toml
================================================
[build-system]
build-backend = "setuptools.build_meta"
requires = [ "setuptools" ]
[project]
name = "so-vits-svc-fork"
version = "4.2.30"
description = "A fork of so-vits-svc."
readme = "README.md"
license = { text = "MIT" }
authors = [
{ name = "34j", email = "34j.95a2p@simplelogin.com" },
]
requires-python = ">=3.9"
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :
gitextract_fwmtssbt/
├── .all-contributorsrc
├── .codespellrc
├── .copier-answers.yml
├── .dockerignore
├── .editorconfig
├── .flake8
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug-report.yml
│ │ ├── 1-bug_report.yml
│ │ ├── 2-feature-request.yml
│ │ └── config.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── labels.toml
│ └── workflows/
│ ├── ci.yml
│ ├── hacktoberfest.yml
│ ├── issue-manager.yml
│ ├── labels.yml
│ ├── poetry-upgrade.yml
│ └── upgrader.yml
├── .gitignore
├── .gitpod.yml
├── .pre-commit-config.yaml
├── .readthedocs.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── README_zh_CN.md
├── commitlint.config.js
├── commitlint.config.mjs
├── docs/
│ ├── Makefile
│ ├── _static/
│ │ └── .gitkeep
│ ├── changelog.md
│ ├── conf.py
│ ├── contributing.md
│ ├── index.md
│ ├── installation.md
│ ├── make.bat
│ └── usage.md
├── easy-installation/
│ ├── install-cn.bat
│ └── install.bat
├── flake.nix
├── notebooks/
│ └── so-vits-svc-fork-4.0.ipynb
├── pyproject.toml
├── renovate.json
├── setup.py
├── src/
│ └── so_vits_svc_fork/
│ ├── __init__.py
│ ├── __main__.py
│ ├── cluster/
│ │ ├── __init__.py
│ │ └── train_cluster.py
│ ├── dataset.py
│ ├── default_gui_presets.json
│ ├── f0.py
│ ├── gui.py
│ ├── hparams.py
│ ├── inference/
│ │ ├── __init__.py
│ │ ├── core.py
│ │ └── main.py
│ ├── logger.py
│ ├── modules/
│ │ ├── __init__.py
│ │ ├── attentions.py
│ │ ├── commons.py
│ │ ├── decoders/
│ │ │ ├── __init__.py
│ │ │ ├── f0.py
│ │ │ ├── hifigan/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _models.py
│ │ │ │ └── _utils.py
│ │ │ └── mb_istft/
│ │ │ ├── __init__.py
│ │ │ ├── _generators.py
│ │ │ ├── _loss.py
│ │ │ ├── _pqmf.py
│ │ │ ├── _stft.py
│ │ │ └── _stft_loss.py
│ │ ├── descriminators.py
│ │ ├── encoders.py
│ │ ├── flows.py
│ │ ├── losses.py
│ │ ├── mel_processing.py
│ │ ├── modules.py
│ │ └── synthesizers.py
│ ├── preprocessing/
│ │ ├── __init__.py
│ │ ├── config_templates/
│ │ │ ├── __init__.py
│ │ │ ├── quickvc.json
│ │ │ ├── so-vits-svc-4.0v1-legacy.json
│ │ │ └── so-vits-svc-4.0v1.json
│ │ ├── preprocess_classify.py
│ │ ├── preprocess_flist_config.py
│ │ ├── preprocess_hubert_f0.py
│ │ ├── preprocess_resample.py
│ │ ├── preprocess_speaker_diarization.py
│ │ ├── preprocess_split.py
│ │ └── preprocess_utils.py
│ ├── py.typed
│ ├── train.py
│ └── utils.py
├── templates/
│ └── CHANGELOG.md.j2
└── tests/
├── __init__.py
└── test_main.py
SYMBOL INDEX (321 symbols across 38 files)
FILE: docs/conf.py
function run_apidoc (line 71) | def run_apidoc(_: Any) -> None:
function setup (line 87) | def setup(app: Sphinx) -> None:
FILE: src/so_vits_svc_fork/__main__.py
class RichHelpFormatter (line 22) | class RichHelpFormatter(click.HelpFormatter):
method __init__ (line 23) | def __init__(
function patch_wrap_text (line 34) | def patch_wrap_text():
function cli (line 62) | def cli():
function train (line 105) | def train(
function gui (line 135) | def gui():
function infer (line 227) | def infer(
function vc (line 380) | def vc(
function pre_resample (line 480) | def pre_resample(
function pre_config (line 537) | def pre_config(
function pre_hubert (line 594) | def pre_hubert(
function pre_sd (line 644) | def pre_sd(
function pre_split (line 715) | def pre_split(
function pre_classify (line 762) | def pre_classify(
function clean (line 780) | def clean():
function onnx (line 824) | def onnx(input_path: Path, output_path: Path, config_path: Path, device:...
function train_cluster (line 866) | def train_cluster(
FILE: src/so_vits_svc_fork/cluster/__init__.py
function get_cluster_model (line 10) | def get_cluster_model(ckpt_path: Path | str):
function check_speaker (line 23) | def check_speaker(model: Any, speaker: Any):
function get_cluster_result (line 28) | def get_cluster_result(model: Any, x: Any, speaker: Any):
function get_cluster_center_result (line 37) | def get_cluster_center_result(model: Any, x: Any, speaker: Any):
function get_center (line 44) | def get_center(model: Any, x: Any, speaker: Any):
FILE: src/so_vits_svc_fork/cluster/train_cluster.py
function train_cluster (line 18) | def train_cluster(
function main (line 92) | def main(
FILE: src/so_vits_svc_fork/dataset.py
class TextAudioDataset (line 15) | class TextAudioDataset(Dataset):
method __init__ (line 16) | def __init__(self, hps: HParams, is_validation: bool = False):
method __getitem__ (line 26) | def __getitem__(self, index: int) -> dict[str, torch.Tensor]:
method __len__ (line 46) | def __len__(self) -> int:
function _pad_stack (line 50) | def _pad_stack(array: Sequence[torch.Tensor]) -> torch.Tensor:
class TextAudioCollate (line 57) | class TextAudioCollate(nn.Module):
method forward (line 58) | def forward(self, batch: Sequence[dict[str, torch.Tensor]]) -> tuple[t...
FILE: src/so_vits_svc_fork/f0.py
function normalize_f0 (line 18) | def normalize_f0(f0: FloatTensor, x_mask: FloatTensor, uv: FloatTensor, ...
function interpolate_f0 (line 35) | def interpolate_f0(
function compute_f0_parselmouth (line 72) | def compute_f0_parselmouth(
function _resize_f0 (line 105) | def _resize_f0(x: ndarray[Any, dtype[float32]], target_len: int) -> ndar...
function compute_f0_pyworld (line 117) | def compute_f0_pyworld(
function compute_f0_crepe (line 150) | def compute_f0_crepe(
function compute_f0 (line 184) | def compute_f0(
function f0_to_coarse (line 210) | def f0_to_coarse(f0: torch.Tensor | float):
FILE: src/so_vits_svc_fork/gui.py
function play_audio (line 25) | def play_audio(path: Path | str):
function load_presets (line 32) | def load_presets() -> dict:
function add_preset (line 40) | def add_preset(name: str, preset: dict) -> dict:
function delete_preset (line 48) | def delete_preset(name: str) -> dict:
function get_output_path (line 59) | def get_output_path(input_path: Path) -> Path:
function get_supported_file_types (line 71) | def get_supported_file_types() -> tuple[tuple[str, str], ...]:
function get_supported_file_types_concat (line 83) | def get_supported_file_types_concat() -> tuple[tuple[str, str], ...]:
function validate_output_file_type (line 87) | def validate_output_file_type(output_path: Path) -> bool:
function get_devices (line 100) | def get_devices(
function after_inference (line 118) | def after_inference(window: sg.Window, path: Path, auto_play: bool, outp...
function main (line 129) | def main():
FILE: src/so_vits_svc_fork/hparams.py
class HParams (line 6) | class HParams:
method __init__ (line 7) | def __init__(self, **kwargs: Any) -> None:
method keys (line 13) | def keys(self):
method items (line 16) | def items(self):
method values (line 19) | def values(self):
method get (line 22) | def get(self, key: str, default: Any = None):
method __len__ (line 25) | def __len__(self):
method __getitem__ (line 28) | def __getitem__(self, key):
method __setitem__ (line 31) | def __setitem__(self, key, value):
method __contains__ (line 34) | def __contains__(self, key):
method __repr__ (line 37) | def __repr__(self):
FILE: src/so_vits_svc_fork/inference/core.py
function pad_array (line 25) | def pad_array(array_, target_length: int):
class Chunk (line 41) | class Chunk:
method duration (line 48) | def duration(self) -> float32:
method __repr__ (line 52) | def __repr__(self) -> str:
function split_silence (line 56) | def split_silence(
class Svc (line 92) | class Svc:
method __init__ (line 93) | def __init__(
method load_model (line 118) | def load_model(self):
method get_unit_f0 (line 131) | def get_unit_f0(
method infer (line 169) | def infer(
method infer_silence (line 219) | def infer_silence(
function sola_crossfade (line 296) | def sola_crossfade(
class Crossfader (line 327) | class Crossfader:
method __init__ (line 328) | def __init__(
method process (line 354) | def process(self, input_audio: ndarray[Any, dtype[float32]], *args, **...
method infer (line 418) | def infer(self, input_audio: ndarray[Any, dtype[float32]]) -> ndarray[...
class RealtimeVC (line 422) | class RealtimeVC(Crossfader):
method __init__ (line 423) | def __init__(
method process (line 440) | def process(
method infer (line 448) | def infer(
class RealtimeVC2 (line 498) | class RealtimeVC2:
method __init__ (line 501) | def __init__(self, svc_model: Svc) -> None:
method process (line 506) | def process(
FILE: src/so_vits_svc_fork/inference/main.py
function infer (line 21) | def infer(
function realtime (line 108) | def realtime(
FILE: src/so_vits_svc_fork/logger.py
function init_logger (line 11) | def init_logger() -> None:
function is_notebook (line 33) | def is_notebook():
FILE: src/so_vits_svc_fork/modules/attentions.py
class FFT (line 11) | class FFT(nn.Module):
method __init__ (line 12) | def __init__(
method forward (line 63) | def forward(self, x, x_mask):
class Encoder (line 82) | class Encoder(nn.Module):
method __init__ (line 83) | def __init__(
method forward (line 130) | def forward(self, x, x_mask):
class Decoder (line 145) | class Decoder(nn.Module):
method __init__ (line 146) | def __init__(
method forward (line 201) | def forward(self, x, x_mask, h, h_mask):
class MultiHeadAttention (line 225) | class MultiHeadAttention(nn.Module):
method __init__ (line 226) | def __init__(
method forward (line 273) | def forward(self, x, c, attn_mask=None):
method attention (line 283) | def attention(self, query, key, value, mask=None):
method _matmul_with_relative_values (line 316) | def _matmul_with_relative_values(self, x, y):
method _matmul_with_relative_keys (line 325) | def _matmul_with_relative_keys(self, x, y):
method _get_relative_embeddings (line 334) | def _get_relative_embeddings(self, relative_embeddings, length):
method _relative_position_to_absolute_position (line 350) | def _relative_position_to_absolute_position(self, x):
method _absolute_position_to_relative_position (line 367) | def _absolute_position_to_relative_position(self, x):
method _attention_bias_proximal (line 381) | def _attention_bias_proximal(self, length):
class FFN (line 397) | class FFN(nn.Module):
method __init__ (line 398) | def __init__(
method forward (line 426) | def forward(self, x, x_mask):
method _causal_padding (line 436) | def _causal_padding(self, x):
method _same_padding (line 445) | def _same_padding(self, x):
FILE: src/so_vits_svc_fork/modules/commons.py
function slice_segments (line 8) | def slice_segments(x: Tensor, starts: Tensor, length: int) -> Tensor:
function rand_slice_segments_with_pitch (line 22) | def rand_slice_segments_with_pitch(x: Tensor, f0: Tensor, x_lengths: Ten...
function slice_2d_segments (line 34) | def slice_2d_segments(x: Tensor, starts: Tensor, length: int) -> Tensor:
function slice_1d_segments (line 42) | def slice_1d_segments(x: Tensor, starts: Tensor, length: int) -> Tensor:
function _slice_segments_v3 (line 50) | def _slice_segments_v3(x: Tensor, starts: Tensor, length: int) -> Tensor:
function init_weights (line 61) | def init_weights(m, mean=0.0, std=0.01):
function get_padding (line 67) | def get_padding(kernel_size, dilation=1):
function convert_pad_shape (line 71) | def convert_pad_shape(pad_shape):
function subsequent_mask (line 77) | def subsequent_mask(length):
function fused_add_tanh_sigmoid_multiply (line 83) | def fused_add_tanh_sigmoid_multiply(input_a, input_b, n_channels):
function sequence_mask (line 92) | def sequence_mask(length, max_length=None):
function clip_grad_value_ (line 99) | def clip_grad_value_(parameters, clip_value, norm_type=2):
FILE: src/so_vits_svc_fork/modules/decoders/f0.py
class F0Decoder (line 7) | class F0Decoder(nn.Module):
method __init__ (line 8) | def __init__(
method forward (line 35) | def forward(self, x, norm_f0, x_mask, spk_emb=None):
FILE: src/so_vits_svc_fork/modules/decoders/hifigan/_models.py
function padDiff (line 18) | def padDiff(x):
class SineGen (line 22) | class SineGen(torch.nn.Module):
method __init__ (line 39) | def __init__(
method _f02uv (line 57) | def _f02uv(self, f0):
method _f02sine (line 62) | def _f02sine(self, f0_values):
method forward (line 120) | def forward(self, f0):
class SourceModuleHnNSF (line 156) | class SourceModuleHnNSF(torch.nn.Module):
method __init__ (line 175) | def __init__(
method forward (line 195) | def forward(self, x):
class NSFHifiGANGenerator (line 211) | class NSFHifiGANGenerator(torch.nn.Module):
method __init__ (line 212) | def __init__(self, h):
method forward (line 261) | def forward(self, x, f0, g=None):
method remove_weight_norm (line 290) | def remove_weight_norm(self):
FILE: src/so_vits_svc_fork/modules/decoders/hifigan/_utils.py
function init_weights (line 8) | def init_weights(m, mean=0.0, std=0.01):
function get_padding (line 14) | def get_padding(kernel_size, dilation=1):
FILE: src/so_vits_svc_fork/modules/decoders/mb_istft/_generators.py
class iSTFT_Generator (line 15) | class iSTFT_Generator(torch.nn.Module):
method __init__ (line 16) | def __init__(
method forward (line 70) | def forward(self, x, g=None):
method remove_weight_norm (line 90) | def remove_weight_norm(self):
class Multiband_iSTFT_Generator (line 100) | class Multiband_iSTFT_Generator(torch.nn.Module):
method __init__ (line 101) | def __init__(
method forward (line 155) | def forward(self, x, g=None):
method remove_weight_norm (line 210) | def remove_weight_norm(self):
class Multistream_iSTFT_Generator (line 218) | class Multistream_iSTFT_Generator(torch.nn.Module):
method __init__ (line 219) | def __init__(
method forward (line 280) | def forward(self, x, g=None):
method remove_weight_norm (line 341) | def remove_weight_norm(self):
FILE: src/so_vits_svc_fork/modules/decoders/mb_istft/_loss.py
function subband_stft_loss (line 4) | def subband_stft_loss(h, y_mb, y_hat_mb):
FILE: src/so_vits_svc_fork/modules/decoders/mb_istft/_pqmf.py
function design_prototype_filter (line 12) | def design_prototype_filter(taps=62, cutoff_ratio=0.15, beta=9.0):
class PQMF (line 46) | class PQMF(torch.nn.Module):
method __init__ (line 54) | def __init__(self, device, subbands=8, taps=62, cutoff_ratio=0.15, bet...
method analysis (line 97) | def analysis(self, x):
method synthesis (line 111) | def synthesis(self, x):
FILE: src/so_vits_svc_fork/modules/decoders/mb_istft/_stft.py
function window_sumsquare (line 36) | def window_sumsquare(
class STFT (line 90) | class STFT(torch.nn.Module):
method __init__ (line 93) | def __init__(self, filter_length=800, hop_length=200, win_length=800, ...
method transform (line 123) | def transform(self, input_data):
method inverse (line 154) | def inverse(self, magnitude, phase):
method forward (line 187) | def forward(self, input_data):
class TorchSTFT (line 193) | class TorchSTFT(torch.nn.Module):
method __init__ (line 194) | def __init__(self, filter_length=800, hop_length=200, win_length=800, ...
method transform (line 201) | def transform(self, input_data):
method inverse (line 213) | def inverse(self, magnitude, phase):
method forward (line 224) | def forward(self, input_data):
FILE: src/so_vits_svc_fork/modules/decoders/mb_istft/_stft_loss.py
function stft (line 10) | def stft(x, fft_size, hop_size, win_length, window):
class SpectralConvergengeLoss (line 33) | class SpectralConvergengeLoss(torch.nn.Module):
method __init__ (line 36) | def __init__(self):
method forward (line 40) | def forward(self, x_mag, y_mag):
class LogSTFTMagnitudeLoss (line 55) | class LogSTFTMagnitudeLoss(torch.nn.Module):
method __init__ (line 58) | def __init__(self):
method forward (line 62) | def forward(self, x_mag, y_mag):
class STFTLoss (line 77) | class STFTLoss(torch.nn.Module):
method __init__ (line 80) | def __init__(self, fft_size=1024, shift_size=120, win_length=600, wind...
method forward (line 90) | def forward(self, x, y):
class MultiResolutionSTFTLoss (line 111) | class MultiResolutionSTFTLoss(torch.nn.Module):
method __init__ (line 114) | def __init__(
method forward (line 137) | def forward(self, x, y):
FILE: src/so_vits_svc_fork/modules/descriminators.py
class DiscriminatorP (line 11) | class DiscriminatorP(torch.nn.Module):
method __init__ (line 12) | def __init__(self, period, kernel_size=5, stride=3, use_spectral_norm=...
method forward (line 68) | def forward(self, x):
class DiscriminatorS (line 90) | class DiscriminatorS(torch.nn.Module):
method __init__ (line 91) | def __init__(self, use_spectral_norm=False):
method forward (line 106) | def forward(self, x):
class MultiPeriodDiscriminator (line 120) | class MultiPeriodDiscriminator(torch.nn.Module):
method __init__ (line 121) | def __init__(self, use_spectral_norm=False):
method forward (line 129) | def forward(self, y, y_hat):
class MultiScaleDiscriminator (line 145) | class MultiScaleDiscriminator(torch.nn.Module):
method __init__ (line 146) | def __init__(self):
method forward (line 157) | def forward(self, y, y_hat):
FILE: src/so_vits_svc_fork/modules/encoders.py
class SpeakerEncoder (line 9) | class SpeakerEncoder(torch.nn.Module):
method __init__ (line 10) | def __init__(
method forward (line 22) | def forward(self, mels):
method compute_partial_slices (line 28) | def compute_partial_slices(self, total_frames, partial_frames, partial...
method embed_utterance (line 36) | def embed_utterance(self, mel, partial_frames=128, partial_hop=64):
class Encoder (line 57) | class Encoder(nn.Module):
method __init__ (line 58) | def __init__(
method forward (line 87) | def forward(self, x, x_lengths, g=None):
class TextEncoder (line 98) | class TextEncoder(nn.Module):
method __init__ (line 99) | def __init__(
method forward (line 121) | def forward(self, x, x_mask, f0=None, noice_scale=1):
FILE: src/so_vits_svc_fork/modules/flows.py
class ResidualCouplingBlock (line 6) | class ResidualCouplingBlock(nn.Module):
method __init__ (line 7) | def __init__(
method forward (line 41) | def forward(self, x, x_mask, g=None, reverse=False):
FILE: src/so_vits_svc_fork/modules/losses.py
function feature_loss (line 4) | def feature_loss(fmap_r, fmap_g):
function discriminator_loss (line 15) | def discriminator_loss(disc_real_outputs, disc_generated_outputs):
function generator_loss (line 31) | def generator_loss(disc_outputs):
function kl_loss (line 43) | def kl_loss(z_p, logs_q, m_p, logs_p, z_mask):
FILE: src/so_vits_svc_fork/modules/mel_processing.py
function dynamic_range_compression_torch (line 60) | def dynamic_range_compression_torch(x, C=1, clip_val=1e-5):
function dynamic_range_decompression_torch (line 69) | def dynamic_range_decompression_torch(x, C=1):
function spectral_normalize_torch (line 78) | def spectral_normalize_torch(magnitudes):
function spectral_de_normalize_torch (line 83) | def spectral_de_normalize_torch(magnitudes):
function spectrogram_torch (line 92) | def spectrogram_torch(y, hps, center=False):
function spec_to_mel_torch (line 130) | def spec_to_mel_torch(spec, hps):
function mel_spectrogram_torch (line 147) | def mel_spectrogram_torch(y, hps, center=False):
FILE: src/so_vits_svc_fork/modules/modules.py
class LayerNorm (line 13) | class LayerNorm(nn.Module):
method __init__ (line 14) | def __init__(self, channels, eps=1e-5):
method forward (line 22) | def forward(self, x):
class ConvReluNorm (line 28) | class ConvReluNorm(nn.Module):
method __init__ (line 29) | def __init__(
method forward (line 66) | def forward(self, x, x_mask):
class DDSConv (line 76) | class DDSConv(nn.Module):
method __init__ (line 81) | def __init__(self, channels, kernel_size, n_layers, p_dropout=0.0):
method forward (line 110) | def forward(self, x, x_mask, g=None):
class WN (line 125) | class WN(torch.nn.Module):
method __init__ (line 126) | def __init__(
method forward (line 175) | def forward(self, x, x_mask, g=None, **kwargs):
method remove_weight_norm (line 202) | def remove_weight_norm(self):
class ResBlock1 (line 211) | class ResBlock1(torch.nn.Module):
method __init__ (line 212) | def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5)):
method forward (line 286) | def forward(self, x, x_mask=None):
method remove_weight_norm (line 301) | def remove_weight_norm(self):
class ResBlock2 (line 308) | class ResBlock2(torch.nn.Module):
method __init__ (line 309) | def __init__(self, channels, kernel_size=3, dilation=(1, 3)):
method forward (line 337) | def forward(self, x, x_mask=None):
method remove_weight_norm (line 348) | def remove_weight_norm(self):
class Log (line 353) | class Log(nn.Module):
method forward (line 354) | def forward(self, x, x_mask, reverse=False, **kwargs):
class Flip (line 364) | class Flip(nn.Module):
method forward (line 365) | def forward(self, x, *args, reverse=False, **kwargs):
class ElementwiseAffine (line 374) | class ElementwiseAffine(nn.Module):
method __init__ (line 375) | def __init__(self, channels):
method forward (line 381) | def forward(self, x, x_mask, reverse=False, **kwargs):
class ResidualCouplingLayer (line 392) | class ResidualCouplingLayer(nn.Module):
method __init__ (line 393) | def __init__(
method forward (line 427) | def forward(self, x, x_mask, g=None, reverse=False):
FILE: src/so_vits_svc_fork/modules/synthesizers.py
class SynthesizerTrn (line 25) | class SynthesizerTrn(nn.Module):
method __init__ (line 30) | def __init__(
method forward (line 165) | def forward(self, c, f0, uv, spec, g=None, c_lengths=None, spec_length...
method infer (line 202) | def infer(self, c, f0, uv, g=None, noice_scale=0.35, predict_f0=False):
FILE: src/so_vits_svc_fork/preprocessing/preprocess_classify.py
function preprocess_classify (line 16) | def preprocess_classify(input_dir: Path | str, output_dir: Path | str, c...
FILE: src/so_vits_svc_fork/preprocessing/preprocess_flist_config.py
function preprocess_config (line 17) | def preprocess_config(
FILE: src/so_vits_svc_fork/preprocessing/preprocess_hubert_f0.py
function _process_one (line 30) | def _process_one(
function _process_batch (line 108) | def _process_batch(filepaths: Iterable[Path], pbar_position: int, **kwar...
function preprocess_hubert_f0 (line 120) | def preprocess_hubert_f0(
FILE: src/so_vits_svc_fork/preprocessing/preprocess_resample.py
function _get_unique_filename (line 27) | def _get_unique_filename(path: Path, existing_paths: Iterable[Path]) -> ...
function is_relative_to (line 39) | def is_relative_to(path: Path, *other):
function _preprocess_one (line 51) | def _preprocess_one(
function preprocess_resample (line 92) | def preprocess_resample(
FILE: src/so_vits_svc_fork/preprocessing/preprocess_speaker_diarization.py
function _process_one (line 18) | def _process_one(
function preprocess_speaker_diarization (line 57) | def preprocess_speaker_diarization(
FILE: src/so_vits_svc_fork/preprocessing/preprocess_split.py
function _process_one (line 15) | def _process_one(
function preprocess_split (line 48) | def preprocess_split(
FILE: src/so_vits_svc_fork/preprocessing/preprocess_utils.py
function check_hubert_min_duration (line 4) | def check_hubert_min_duration(audio: ndarray, sr: int) -> bool:
FILE: src/so_vits_svc_fork/train.py
class VCDataModule (line 38) | class VCDataModule(pl.LightningDataModule):
method __init__ (line 41) | def __init__(self, hparams: Any):
method train_dataloader (line 53) | def train_dataloader(self):
method val_dataloader (line 62) | def val_dataloader(self):
function train (line 70) | def train(config_path: Path | str, model_path: Path | str, reset_optimiz...
class VitsLightning (line 139) | class VitsLightning(pl.LightningModule):
method __init__ (line 140) | def __init__(self, reset_optimizer: bool = False, **hparams: Any):
method on_train_start (line 172) | def on_train_start(self) -> None:
method on_train_end (line 250) | def on_train_end(self) -> None:
method save_checkpoints (line 253) | def save_checkpoints(self, adjust=1):
method set_current_epoch (line 287) | def set_current_epoch(self, epoch: int):
method set_global_step (line 293) | def set_global_step(self, global_step: int):
method set_total_batch_idx (line 299) | def set_total_batch_idx(self, total_batch_idx: int):
method total_batch_idx (line 306) | def total_batch_idx(self) -> int:
method load (line 309) | def load(self, reset_optimizer: bool = False):
method configure_optimizers (line 334) | def configure_optimizers(self):
method log_image_dict (line 337) | def log_image_dict(self, image_dict: dict[str, Any], dataformats: str ...
method log_audio_dict (line 348) | def log_audio_dict(self, audio_dict: dict[str, Any]) -> None:
method log_dict_ (line 361) | def log_dict_(self, log_dict: dict[str, Any], **kwargs) -> None:
method log_ (line 371) | def log_(self, key: str, value: Any, **kwargs) -> None:
method training_step (line 374) | def training_step(self, batch: dict[str, torch.Tensor], batch_idx: int...
method validation_step (line 496) | def validation_step(self, batch, batch_idx):
method on_validation_end (line 513) | def on_validation_end(self) -> None:
FILE: src/so_vits_svc_fork/utils.py
function get_optimal_device (line 34) | def get_optimal_device(index: int = 0) -> torch.device:
function download_file (line 51) | def download_file(
function ensure_pretrained_model (line 110) | def ensure_pretrained_model(folder_path: Path | str, type_: str | dict[s...
class HubertModelWithFinalProj (line 153) | class HubertModelWithFinalProj(HubertModel):
method __init__ (line 154) | def __init__(self, config):
function remove_weight_norm_if_exists (line 163) | def remove_weight_norm_if_exists(module, name: str = "weight"):
function get_hubert_model (line 185) | def get_hubert_model(device: str | torch.device, final_proj: bool = True...
function get_content (line 198) | def get_content(
function _substitute_if_same_shape (line 225) | def _substitute_if_same_shape(to_: dict[str, Any], from_: dict[str, Any]...
function safe_load (line 252) | def safe_load(model: torch.nn.Module, state_dict: dict[str, Any]) -> None:
function load_checkpoint (line 258) | def load_checkpoint(
function save_checkpoint (line 288) | def save_checkpoint(
function clean_checkpoints (line 312) | def clean_checkpoints(path_to_models: Path | str, n_ckpts_to_keep: int =...
function latest_checkpoint_path (line 353) | def latest_checkpoint_path(dir_path: Path | str, regex: str = "G_*.pth")...
function plot_spectrogram_to_numpy (line 362) | def plot_spectrogram_to_numpy(spectrogram: ndarray) -> ndarray:
function get_backup_hparams (line 378) | def get_backup_hparams(config_path: Path, model_path: Path, init: bool =...
function get_hparams (line 396) | def get_hparams(config_path: Path | str) -> HParams:
function repeat_expand_2d (line 402) | def repeat_expand_2d(content: torch.Tensor, target_len: int) -> torch.Te...
function plot_data_to_numpy (line 411) | def plot_data_to_numpy(x: ndarray, y: ndarray) -> ndarray:
function get_gpu_memory (line 425) | def get_gpu_memory(type_: Literal["total", "free", "used"]) -> Sequence[...
function get_total_gpu_memory (line 435) | def get_total_gpu_memory(type_: Literal["total", "free", "used"]) -> int...
FILE: tests/test_main.py
class TestMain (line 10) | class TestMain(TestCase):
method test_import (line 11) | def test_import(self):
method test_infer (line 22) | def test_infer(self):
method test_preprocess (line 29) | def test_preprocess(self):
method test_train (line 57) | def test_train(self):
Condensed preview — 100 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (503K chars).
[
{
"path": ".all-contributorsrc",
"chars": 11527,
"preview": "{\n \"projectName\": \"so-vits-svc-fork\",\n \"projectOwner\": \"voicepaw\",\n \"repoType\": \"github\",\n \"repoHost\": \"https://gith"
},
{
"path": ".codespellrc",
"chars": 47,
"preview": "[codespell]\nignore-words-list = socio-economic\n"
},
{
"path": ".copier-answers.yml",
"chars": 539,
"preview": "# Changes here will be overwritten by Copier\n_commit: 2e4f7d0\n_src_path: gh:34j/pypackage-template\ncopyright_year: '2023"
},
{
"path": ".dockerignore",
"chars": 22,
"preview": "# Ignore everything\n*\n"
},
{
"path": ".editorconfig",
"chars": 292,
"preview": "# http://editorconfig.org\n\nroot = true\n\n[*]\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\ninsert_"
},
{
"path": ".flake8",
"chars": 107,
"preview": "[flake8]\nexclude = docs\nmax-line-length = 88\nignore = E203, E501, E741, E402, E712, W503, E731, E711, E226\n"
},
{
"path": ".github/CODE_OF_CONDUCT.md",
"chars": 5168,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
},
{
"path": ".github/FUNDING.yml",
"chars": 21,
"preview": "github: [\"voicepaw\"]\n"
},
{
"path": ".github/ISSUE_TEMPLATE/1-bug-report.yml",
"chars": 1896,
"preview": "name: Bug report\ndescription: Create a report to help us improve\nlabels: [bug]\nbody:\n - type: textarea\n id: descript"
},
{
"path": ".github/ISSUE_TEMPLATE/1-bug_report.yml",
"chars": 1777,
"preview": "name: Bug report\ndescription: Create a report to help us improve\nlabels: [bug]\nbody:\n - type: textarea\n id: descript"
},
{
"path": ".github/ISSUE_TEMPLATE/2-feature-request.yml",
"chars": 1931,
"preview": "name: Feature request\ndescription: Suggest an idea for this project\nlabels: [enhancement]\nbody:\n - type: textarea\n i"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 395,
"preview": "# Disabling blank issues to ensure all necessary information is provided\n# Users should use the provided templates for s"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1848,
"preview": "<!--\n 😀 Wonderful! Thank you for opening a pull request.\n\n By submitting this pull request, you agree to follow our ["
},
{
"path": ".github/labels.toml",
"chars": 1981,
"preview": "[breaking]\ncolor = \"ffcc00\"\nname = \"breaking\"\ndescription = \"Breaking change.\"\n\n[bug]\ncolor = \"d73a4a\"\nname = \"bug\"\ndesc"
},
{
"path": ".github/workflows/ci.yml",
"chars": 3635,
"preview": "name: CI\n\non:\n push:\n branches:\n - main\n pull_request:\n\nconcurrency:\n group: ${{ github.head_ref || github.ru"
},
{
"path": ".github/workflows/hacktoberfest.yml",
"chars": 391,
"preview": "name: Hacktoberfest\n\non:\n schedule:\n # Run every day in October\n - cron: \"0 0 * 10 *\"\n # Run on the 1st of Nov"
},
{
"path": ".github/workflows/issue-manager.yml",
"chars": 779,
"preview": "name: Issue Manager\n\non:\n schedule:\n - cron: \"0 0 * * *\"\n issue_comment:\n types:\n - created\n issues:\n t"
},
{
"path": ".github/workflows/labels.yml",
"chars": 588,
"preview": "name: Sync Github labels\n\non:\n push:\n branches:\n - main\n paths:\n - \".github/**\"\n\njobs:\n labels:\n ru"
},
{
"path": ".github/workflows/poetry-upgrade.yml",
"chars": 268,
"preview": "name: Upgrader\n\non:\n workflow_dispatch:\n schedule:\n - cron: \"29 23 16 * *\"\n\njobs:\n upgrade:\n uses: browniebroke"
},
{
"path": ".github/workflows/upgrader.yml",
"chars": 271,
"preview": "name: Upgrader\n\non:\n workflow_dispatch:\n schedule:\n - cron: \"15 11 3 1-9,11-12 *\"\n\njobs:\n upgrade:\n uses: brown"
},
{
"path": ".gitignore",
"chars": 2443,
"preview": "# Created by .ignore support plugin (hsz.mobi)\n### Python template\n# Byte-compiled / optimized / DLL files\n__pycache__/\n"
},
{
"path": ".gitpod.yml",
"chars": 187,
"preview": "tasks:\n - command: |\n pip install uv\n PIP_USER=false uv sync\n - command: |\n pip install pre-commit\n "
},
{
"path": ".pre-commit-config.yaml",
"chars": 1651,
"preview": "# See https://pre-commit.com for more information\n# See https://pre-commit.com/hooks.html for more hooks\nexclude: \"CHANG"
},
{
"path": ".readthedocs.yml",
"chars": 581,
"preview": "# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details\n\n# Requir"
},
{
"path": "CHANGELOG.md",
"chars": 61963,
"preview": "# Changelog\n\n## v4.2.30 (2026-02-02)\n\n### Bug fixes\n\n- Fix `.json` files not included ([`922beed`](https://github.com/vo"
},
{
"path": "CONTRIBUTING.md",
"chars": 3910,
"preview": "# Contributing\n\nContributions are welcome, and they are greatly appreciated! Every little helps, and credit will always "
},
{
"path": "Dockerfile",
"chars": 323,
"preview": "FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime@sha256:82e0d379a5dedd6303c89eda57bcc434c40be11f249ddfadfd5673b84351e8"
},
{
"path": "LICENSE",
"chars": 12463,
"preview": "MIT License\n\nCopyright (c) 2023 34j and contributors\nCopyright (c) 2021 Jingyi Li\n\nPermission is hereby granted, free of"
},
{
"path": "README.md",
"chars": 34361,
"preview": "# SoftVC VITS Singing Voice Conversion Fork\n\n[简体中文](README_zh_CN.md)\n\n<p align=\"center\">\n <a href=\"https://github.com/v"
},
{
"path": "README_zh_CN.md",
"chars": 22766,
"preview": "# SoftVC VITS Singing Voice Conversion\n\n<p align=\"center\">\n <a href=\"https://github.com/34j/so-vits-svc-fork/actions/wo"
},
{
"path": "commitlint.config.js",
"chars": 244,
"preview": "module.exports = {\n extends: [\"@commitlint/config-conventional\"],\n rules: {\n \"header-max-length\": [0, \"always\", Inf"
},
{
"path": "commitlint.config.mjs",
"chars": 242,
"preview": "export default {\n extends: [\"@commitlint/config-conventional\"],\n rules: {\n \"header-max-length\": [0, \"always\", Infin"
},
{
"path": "docs/Makefile",
"chars": 762,
"preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the "
},
{
"path": "docs/_static/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "docs/changelog.md",
"chars": 48,
"preview": "(changelog)=\n\n```{include} ../CHANGELOG.md\n\n```\n"
},
{
"path": "docs/conf.py",
"chars": 2551,
"preview": "# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a selection of the most common op"
},
{
"path": "docs/contributing.md",
"chars": 54,
"preview": "(contributing)=\n\n```{include} ../CONTRIBUTING.md\n\n```\n"
},
{
"path": "docs/index.md",
"chars": 335,
"preview": "# Welcome to SoftVC VITS Singing Voice Conversion Fork documentation!\n\n```{toctree}\n:caption: Installation & Usage\n:maxd"
},
{
"path": "docs/installation.md",
"chars": 279,
"preview": "(installation)=\n\n# Installation\n\nThe package is published on [PyPI](https://pypi.org/project/so-vits-svc-fork/) and can "
},
{
"path": "docs/make.bat",
"chars": 765,
"preview": "@ECHO OFF\n\npushd %~dp0\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-bu"
},
{
"path": "docs/usage.md",
"chars": 219,
"preview": "(usage)=\n\n# Usage\n\nAssuming that you've followed the {ref}`installations steps <installation>`, you're now ready to use "
},
{
"path": "easy-installation/install-cn.bat",
"chars": 2101,
"preview": "@echo off\r\n\r\necho batӢİ棬ԭһЩعŻ簲װ⣬Գװԭ\r\necho.\r\n\r\necho.\r\necho Python 汾 3.10...\r\necho.\r\n\r\npy -3.10 --version >nul 2>&1\r\nif "
},
{
"path": "easy-installation/install.bat",
"chars": 1748,
"preview": "@echo off\n\necho You can rerun this script to update the installation.\n\necho Moving to AppData\\Roaming\\so-vits-svc-fork.."
},
{
"path": "flake.nix",
"chars": 1554,
"preview": "{\n description = \"A flake providing a dev shell for Numba with CUDA without installing Numba via nix. Also supports PyT"
},
{
"path": "notebooks/so-vits-svc-fork-4.0.ipynb",
"chars": 8692,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## Before training\\n\",\n \"\\n\",\n "
},
{
"path": "pyproject.toml",
"chars": 4645,
"preview": "[build-system]\nbuild-backend = \"setuptools.build_meta\"\nrequires = [ \"setuptools\" ]\n\n[project]\nname = \"so-vits-svc-fork\"\n"
},
{
"path": "renovate.json",
"chars": 271,
"preview": "{\n \"extends\": [\n \"config:best-practices\",\n \":pinOnlyDevDependencies\",\n \":automergeAll\",\n \":enablePreCommit\""
},
{
"path": "setup.py",
"chars": 242,
"preview": "#!/usr/bin/env python\n\n# This is a shim to allow GitHub to detect the package, build is done with uv\n# Taken from https:"
},
{
"path": "src/so_vits_svc_fork/__init__.py",
"chars": 71,
"preview": "__version__ = \"4.2.30\"\n\nfrom .logger import init_logger\n\ninit_logger()\n"
},
{
"path": "src/so_vits_svc_fork/__main__.py",
"chars": 24780,
"preview": "from __future__ import annotations\n\nimport os\nfrom logging import getLogger\nfrom multiprocessing import freeze_support\nf"
},
{
"path": "src/so_vits_svc_fork/cluster/__init__.py",
"chars": 1371,
"preview": "from __future__ import annotations\n\nfrom pathlib import Path\nfrom typing import Any\n\nimport torch\nfrom sklearn.cluster i"
},
{
"path": "src/so_vits_svc_fork/cluster/train_cluster.py",
"chars": 4613,
"preview": "from __future__ import annotations\n\nimport math\nfrom logging import getLogger\nfrom pathlib import Path\nfrom typing impor"
},
{
"path": "src/so_vits_svc_fork/dataset.py",
"chars": 2786,
"preview": "from __future__ import annotations\n\nfrom collections.abc import Sequence\nfrom pathlib import Path\nfrom random import Ran"
},
{
"path": "src/so_vits_svc_fork/default_gui_presets.json",
"chars": 2599,
"preview": "{\n \"Default VC (GPU, GTX 1060)\": {\n \"silence_threshold\": -35.0,\n \"transpose\": 12.0,\n \"auto_predict_f0\": false,"
},
{
"path": "src/so_vits_svc_fork/f0.py",
"chars": 7182,
"preview": "from __future__ import annotations\n\nfrom logging import getLogger\nfrom typing import Any, Literal\n\nimport numpy as np\nim"
},
{
"path": "src/so_vits_svc_fork/gui.py",
"chars": 29312,
"preview": "from __future__ import annotations\n\nimport json\nimport multiprocessing\nimport os\nfrom copy import copy\nfrom logging impo"
},
{
"path": "src/so_vits_svc_fork/hparams.py",
"chars": 872,
"preview": "from __future__ import annotations\n\nfrom typing import Any\n\n\nclass HParams:\n def __init__(self, **kwargs: Any) -> Non"
},
{
"path": "src/so_vits_svc_fork/inference/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "src/so_vits_svc_fork/inference/core.py",
"chars": 23616,
"preview": "from __future__ import annotations\n\nfrom collections.abc import Iterable\nfrom copy import deepcopy\nfrom logging import g"
},
{
"path": "src/so_vits_svc_fork/inference/main.py",
"chars": 9187,
"preview": "from __future__ import annotations\n\nfrom collections.abc import Sequence\nfrom logging import getLogger\nfrom pathlib impo"
},
{
"path": "src/so_vits_svc_fork/logger.py",
"chars": 1169,
"preview": "import os\nimport sys\nfrom logging import DEBUG, INFO, StreamHandler, basicConfig, captureWarnings, getLogger\nfrom pathli"
},
{
"path": "src/so_vits_svc_fork/modules/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "src/so_vits_svc_fork/modules/attentions.py",
"chars": 16108,
"preview": "import math\n\nimport torch\nfrom torch import nn\nfrom torch.nn import functional as F\n\nfrom so_vits_svc_fork.modules impor"
},
{
"path": "src/so_vits_svc_fork/modules/commons.py",
"chars": 4477,
"preview": "from __future__ import annotations\n\nimport torch\nimport torch.nn.functional as F\nfrom torch import Tensor\n\n\ndef slice_se"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "src/so_vits_svc_fork/modules/decoders/f0.py",
"chars": 1441,
"preview": "import torch\nfrom torch import nn\n\nfrom so_vits_svc_fork.modules import attentions as attentions\n\n\nclass F0Decoder(nn.Mo"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/hifigan/__init__.py",
"chars": 76,
"preview": "from ._models import NSFHifiGANGenerator\n\n__all__ = [\"NSFHifiGANGenerator\"]\n"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/hifigan/_models.py",
"chars": 11432,
"preview": "from logging import getLogger\n\nimport numpy as np\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfro"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/hifigan/_utils.py",
"chars": 340,
"preview": "from logging import getLogger\n\n# matplotlib.use(\"Agg\")\n\nLOG = getLogger(__name__)\n\n\ndef init_weights(m, mean=0.0, std=0."
},
{
"path": "src/so_vits_svc_fork/modules/decoders/mb_istft/__init__.py",
"chars": 318,
"preview": "from ._generators import (\n Multiband_iSTFT_Generator,\n Multistream_iSTFT_Generator,\n iSTFT_Generator,\n)\nfrom ."
},
{
"path": "src/so_vits_svc_fork/modules/decoders/mb_istft/_generators.py",
"chars": 12115,
"preview": "import math\n\nimport torch\nfrom torch import nn\nfrom torch.nn import Conv1d, ConvTranspose1d\nfrom torch.nn import functio"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/mb_istft/_loss.py",
"chars": 405,
"preview": "from ._stft_loss import MultiResolutionSTFTLoss\n\n\ndef subband_stft_loss(h, y_mb, y_hat_mb):\n sub_stft_loss = MultiRes"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/mb_istft/_pqmf.py",
"chars": 4477,
"preview": "# Copyright 2020 Tomoki Hayashi\n# MIT License (https://opensource.org/licenses/MIT)\n\n\"\"\"Pseudo QMF modules.\"\"\"\n\nimport "
},
{
"path": "src/so_vits_svc_fork/modules/decoders/mb_istft/_stft.py",
"chars": 8729,
"preview": "\"\"\"\nBSD 3-Clause License\nCopyright (c) 2017, Prem Seetharaman\nAll rights reserved.\n* Redistribution and use in source an"
},
{
"path": "src/so_vits_svc_fork/modules/decoders/mb_istft/_stft_loss.py",
"chars": 4896,
"preview": "# Copyright 2019 Tomoki Hayashi\n# MIT License (https://opensource.org/licenses/MIT)\n\n\"\"\"STFT-based Loss modules.\"\"\"\n\nim"
},
{
"path": "src/so_vits_svc_fork/modules/descriminators.py",
"chars": 5560,
"preview": "import torch\nfrom torch import nn\nfrom torch.nn import AvgPool1d, Conv1d, Conv2d\nfrom torch.nn import functional as F\nfr"
},
{
"path": "src/so_vits_svc_fork/modules/encoders.py",
"chars": 4304,
"preview": "import torch\nfrom torch import nn\n\nfrom so_vits_svc_fork.modules import attentions as attentions\nfrom so_vits_svc_fork.m"
},
{
"path": "src/so_vits_svc_fork/modules/flows.py",
"chars": 1390,
"preview": "from torch import nn\n\nfrom so_vits_svc_fork.modules import modules as modules\n\n\nclass ResidualCouplingBlock(nn.Module):\n"
},
{
"path": "src/so_vits_svc_fork/modules/losses.py",
"chars": 1405,
"preview": "import torch\n\n\ndef feature_loss(fmap_r, fmap_g):\n loss = 0\n for dr, dg in zip(fmap_r, fmap_g):\n for rl, gl "
},
{
"path": "src/so_vits_svc_fork/modules/mel_processing.py",
"chars": 5623,
"preview": "\"\"\"\nfrom logging import getLogger\n\nimport torch\nimport torch.utils.data\nimport torchaudio\n\nLOG = getLogger(__name__)\n\n\nf"
},
{
"path": "src/so_vits_svc_fork/modules/modules.py",
"chars": 14353,
"preview": "import torch\nfrom torch import nn\nfrom torch.nn import Conv1d\nfrom torch.nn import functional as F\nfrom torch.nn.utils i"
},
{
"path": "src/so_vits_svc_fork/modules/synthesizers.py",
"chars": 8065,
"preview": "import warnings\nfrom collections.abc import Sequence\nfrom logging import getLogger\nfrom typing import Any, Literal\n\nimpo"
},
{
"path": "src/so_vits_svc_fork/preprocessing/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "src/so_vits_svc_fork/preprocessing/config_templates/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "src/so_vits_svc_fork/preprocessing/config_templates/quickvc.json",
"chars": 2051,
"preview": "{\n \"train\": {\n \"log_interval\": 100,\n \"eval_interval\": 200,\n \"seed\": 1234,\n \"epochs\": 10000,\n \"learning_r"
},
{
"path": "src/so_vits_svc_fork/preprocessing/config_templates/so-vits-svc-4.0v1-legacy.json",
"chars": 1705,
"preview": "{\n \"train\": {\n \"log_interval\": 200,\n \"eval_interval\": 800,\n \"seed\": 1234,\n \"epochs\": 10000,\n \"learning_r"
},
{
"path": "src/so_vits_svc_fork/preprocessing/config_templates/so-vits-svc-4.0v1.json",
"chars": 1862,
"preview": "{\n \"train\": {\n \"log_interval\": 100,\n \"eval_interval\": 200,\n \"seed\": 1234,\n \"epochs\": 10000,\n \"learning_r"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_classify.py",
"chars": 2941,
"preview": "from __future__ import annotations\n\nfrom logging import getLogger\nfrom pathlib import Path\n\nimport keyboard\nimport libro"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_flist_config.py",
"chars": 2520,
"preview": "from __future__ import annotations\n\nimport json\nimport os\nfrom copy import deepcopy\nfrom logging import getLogger\nfrom p"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_hubert_f0.py",
"chars": 4651,
"preview": "from __future__ import annotations\n\nfrom collections.abc import Iterable\nfrom logging import getLogger\nfrom pathlib impo"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_resample.py",
"chars": 4438,
"preview": "from __future__ import annotations\n\nimport warnings\nfrom collections.abc import Iterable\nfrom logging import getLogger\nf"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_speaker_diarization.py",
"chars": 2962,
"preview": "from __future__ import annotations\n\nfrom collections import defaultdict\nfrom logging import getLogger\nfrom pathlib impor"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_split.py",
"chars": 2148,
"preview": "from __future__ import annotations\n\nfrom logging import getLogger\nfrom pathlib import Path\n\nimport librosa\nimport soundf"
},
{
"path": "src/so_vits_svc_fork/preprocessing/preprocess_utils.py",
"chars": 126,
"preview": "from numpy import ndarray\n\n\ndef check_hubert_min_duration(audio: ndarray, sr: int) -> bool:\n return len(audio) / sr >"
},
{
"path": "src/so_vits_svc_fork/py.typed",
"chars": 0,
"preview": ""
},
{
"path": "src/so_vits_svc_fork/train.py",
"chars": 20593,
"preview": "from __future__ import annotations\n\nimport os\nimport warnings\nfrom logging import getLogger\nfrom multiprocessing import "
},
{
"path": "src/so_vits_svc_fork/utils.py",
"chars": 15172,
"preview": "from __future__ import annotations\n\nimport json\nimport os\nimport re\nimport subprocess\nimport warnings\nfrom collections.a"
},
{
"path": "templates/CHANGELOG.md.j2",
"chars": 635,
"preview": "# Changelog\n\n{%- for version, release in context.history.released.items() %}\n\n## {{ version.as_tag() }} ({{ release.tagg"
},
{
"path": "tests/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "tests/test_main.py",
"chars": 2400,
"preview": "import json\nimport os\nfrom pathlib import Path\nfrom unittest import SkipTest, TestCase\n\nIS_CI = os.environ.get(\"GITHUB_A"
}
]
About this extraction
This page contains the full source code of the voicepaw/so-vits-svc-fork GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 100 files (465.0 KB), approximately 136.4k tokens, and a symbol index with 321 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.