Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Bug report
description: Something is broken in VoiceForge
title: "[bug] "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
**Do not attach:** private voice samples, generated impersonation audio, API tokens,
unredacted databases, copyrighted datasets, model weights you cannot redistribute,
or consent evidence containing personal data.
- type: textarea
id: summary
attributes:
label: Summary
description: What went wrong?
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: Minimal steps without private audio. Prefer the synthetic fixture path if relevant.
validations:
required: true
- type: dropdown
id: engine
attributes:
label: Engine (if applicable)
options:
- openvoice-v2
- f5-tts
- xtts-v2
- chatterbox
- qwen3-tts
- rvc
- fish-speech
- cosyvoice-3
- indextts-2
- n/a (API / Studio / Docker)
- type: input
id: version
attributes:
label: VoiceForge version / commit
placeholder: e.g. 0.3.0 or git SHA
- type: dropdown
id: hardware
attributes:
label: Hardware path
options:
- CPU Docker
- GPU Docker
- Local Python
- Modal / cloud GPU
- Other
- type: textarea
id: logs
attributes:
label: Logs (redacted)
description: Paste relevant log lines with secrets removed.
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I did not upload private voice samples, tokens, or personal data
required: true
- label: I read RESPONSIBLE_USE.md and SECURITY.md where relevant
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Security report
url: https://github.com/mohitkale/voiceforge/blob/main/SECURITY.md
about: Report vulnerabilities privately — do not open a public issue with secrets or voice samples.
- name: Responsible use
url: https://github.com/mohitkale/voiceforge/blob/main/RESPONSIBLE_USE.md
about: Read before filing issues about cloning, consent, or misuse.
94 changes: 94 additions & 0 deletions .github/ISSUE_TEMPLATE/engine_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Engine request
description: Propose adding a new cloning / TTS engine adapter
title: "[engine] "
labels: ["engine"]
body:
- type: markdown
attributes:
value: |
Adapters are not “supported” merely because code exists. Include licence and hardware facts.
Do not attach model weights, private samples, or tokens.
- type: input
id: repo
attributes:
label: Engine repository / homepage
validations:
required: true
- type: textarea
id: impl_license
attributes:
label: Implementation licence
description: Licence of the engine software / library.
validations:
required: true
- type: textarea
id: model_license
attributes:
label: Model-weight licence
description: Include commercial-use restrictions if any.
validations:
required: true
- type: textarea
id: hardware
attributes:
label: Hardware requirements
description: CPU viability, GPU/VRAM needs, disk size.
validations:
required: true
- type: dropdown
id: commercial
attributes:
label: Commercial-use status (as you understand it)
options:
- Permissive / generally allowed (confirm upstream)
- Non-commercial / research only
- Unclear — needs review
- Forbidden for our intended use
validations:
required: true
- type: textarea
id: install
attributes:
label: Installation method
description: pip, git, Docker sidecar, isolated venv, etc.
validations:
required: true
- type: textarea
id: api
attributes:
label: API or Python interface
description: How VoiceForge would call clone + synth.
validations:
required: true
- type: textarea
id: test_model
attributes:
label: Test model availability
description: Can CI use a tiny fixture? Any redistribution limits?
- type: dropdown
id: isolation
attributes:
label: Isolation required?
options:
- No (fits main venv)
- Yes (isolated worker venv)
- Yes (HTTP sidecar)
- Unknown
- type: textarea
id: languages
attributes:
label: Expected language support
- type: textarea
id: benchmarks
attributes:
label: Source of any quality/speed claims
description: Links only — do not invent numbers.
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I have not attached model weights, private audio, or API tokens
required: true
- label: I understand VoiceForge will document this engine’s licence separately from MIT app code
required: true
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Feature request
description: Suggest an improvement to VoiceForge
title: "[feature] "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
For new speech engines, use the **Engine request** template instead.
- type: textarea
id: problem
attributes:
label: Problem
description: What user problem does this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
description: Describe the change without attaching private audio or tokens.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: This request does not require shipping third-party voice samples or secrets
required: true
47 changes: 47 additions & 0 deletions .github/ISSUE_TEMPLATE/model_licensing.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Model licensing clarification
description: Flag unclear or incorrect engine/model licence documentation
title: "[licensing] "
labels: ["licensing"]
body:
- type: markdown
attributes:
value: |
Help keep NOTICE.md / docs/ENGINE_LICENSING.md accurate. This is not legal advice.
Do not paste copyrighted datasets or redistributable-restricted weights into the issue.
- type: dropdown
id: engine
attributes:
label: Engine
options:
- openvoice-v2
- f5-tts
- xtts-v2
- chatterbox
- qwen3-tts
- rvc
- fish-speech
- cosyvoice-3
- indextts-2
- other / multiple
validations:
required: true
- type: textarea
id: issue
attributes:
label: What is inaccurate or unclear?
validations:
required: true
- type: textarea
id: sources
attributes:
label: Upstream sources
description: Links to model cards, licence files, or NOTICE entries.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I did not upload model weights or private audio
required: true
20 changes: 20 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Summary

<!-- What does this PR change and why? -->

## Checklist

- [ ] I did **not** commit private voice samples, API tokens, `.env`, unredacted DBs, or restricted model weights
- [ ] Docs/licence claims match [NOTICE.md](../NOTICE.md) / [docs/ENGINE_LICENSING.md](../docs/ENGINE_LICENSING.md)
- [ ] Responsible-use / consent language is not overstated
- [ ] `ruff check app/ scripts/ tests/` passes
- [ ] `pytest tests/ -q` passes
- [ ] New engines include readiness + licence notes (if applicable)

## Test plan

<!-- How did you verify? CPU/GPU? Which engines? -->

## Related issues

<!-- Fixes #... -->
47 changes: 47 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Changelog

All notable changes to this project are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/).

## [Unreleased]

### Added

- Open-source launch documentation: responsible use, consent, engines matrix,
licensing matrix, first-clone guide, self-hosting, Reel Studio notes,
watermarking docs, demo capture process, contributor/community templates.
- Makefile helpers: `start-cpu`, `start-gpu`, `stop`, `logs`, `smoke-openvoice`.
- Studio consent checkbox; Studio loads engines/voices without a token when the
API is open (localhost); default engine highlight for `openvoice-v2`.
- Authentic Studio screenshot and engine-comparison diagram under `docs/assets/`.

### Fixed

- CI Ruff failures (`S110` / import order) in ASR and Chatterbox paths.

## [0.3.0] — 2026-07-10

### Added

- Additional clone engines (Chatterbox, Qwen3-TTS, Fish Speech sidecar,
CosyVoice 3, IndexTTS2).
- Studio web UI with in-browser recording.
- Modal deploy path and deployment guides.
- SVG architecture / clone-flow diagrams.

## [0.2.0] — earlier

### Added

- GitHub CI, structured logging, `/v1/metrics`, optional synth watermark,
OpenAPI polish, NOTICE.md / SECURITY.md.
- RVC high-fidelity worker, F5-TTS, OpenVoice V2, Docker model pre-download,
CPU e2e smoke tests.

## [0.1.0] — earlier

### Added

- Initial FastAPI service, XTTS-v2 cloning, secured API, Docker CPU/GPU images.
38 changes: 38 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Contributor Covenant Code of Conduct

## Our pledge

We pledge to make participation in VoiceForge a harassment-free experience for
everyone, regardless of age, body size, disability, ethnicity, sex
characteristics, gender identity and expression, experience level, education,
socio-economic status, nationality, personal appearance, race, religion, or
sexual identity and orientation.

## Our standards

Examples of behaviour that contributes to a positive environment:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints
- Accepting constructive criticism gracefully
- Focusing on what is best for the community

Examples of unacceptable behaviour:

- Harassment, trolling, or personal attacks
- Publishing others’ private information without permission
- Sharing non-consensual or deceptive voice clones targeting real people
- Uploading private voice samples, API tokens, or personal data in issues/PRs

## Enforcement

Project maintainers may remove, edit, or reject contributions that violate this
Code of Conduct, and may ban contributors for behaviours they deem inappropriate.

Report concerns privately to the repository maintainer (see SECURITY.md for
security-sensitive reports).

## Attribution

Adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
version 2.1.
38 changes: 38 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Contributing

Thanks for helping improve VoiceForge.

## Before you start

1. Read [RESPONSIBLE_USE.md](RESPONSIBLE_USE.md) and [docs/CONSENT.md](docs/CONSENT.md).
2. Read [docs/ENGINE_LICENSING.md](docs/ENGINE_LICENSING.md) — do not imply all
models are commercially usable.
3. Do not commit voice samples of real people, API tokens, `.env`, or `data/`.

## Development setup

```bash
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check app tests scripts
```

ML engines are optional for unit tests (a `FakeEngine` covers API layers).

## Pull requests

- Keep changes focused; prefer docs/engine adapters in separate PRs when large.
- Run `ruff check app/ scripts/ tests/` and `pytest tests/ -q` before pushing.
- Do not add telemetry, cloud TTS vendors, or analytics.
- New engines: implement `CloneEngine`, register in `app/engines/registry.py`,
document readiness and licences (use the engine-request issue template).

## Code of conduct

See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).

## Security

See [SECURITY.md](SECURITY.md). Report vulnerabilities privately — never attach
private audio or tokens to public issues.
Loading
Loading