chore: point every repo reference at github.com/debpalash/VoiceStudio (#1394)
The repository was renamed. 724 references across 59 files now point at the new URL — README badges, docs, install guides, the updater's releases API call, CONTRIBUTING, the Colab link and the probe harness. GitHub redirects the old URLs, so nothing was broken in the meantime. Deliberately NOT renamed, because each breaks something on a user's machine: the Tauri bundle identifier (the path to every existing user's data), /usr/lib/omnivoice-studio and the compose container names, and the published Docker image paths. The image path needed a code change to STAY still: docker.yml derived it from github.repository, so the next build would have published to ghcr.io/debpalash/voicestudio while Docker Hub, a hardcoded literal, stayed put — everyone pulling the documented GHCR path would have kept receiving the last pre-rename image forever. It is now pinned, with a test that fails if it ever derives from the repo name again. Also makes the probe's repo-name assertion shape-based: it hardcoded the old name and failed on every PR after the rename while the code it tests worked perfectly.
This commit is contained in:
@@ -14,7 +14,7 @@ Generate audio locally via the OmniVoice Studio MCP server. Tools: `generate_spe
|
||||
The MCP tools all hit `$OMNIVOICE_API_URL` (default `http://localhost:3900`). If the backend is down, every tool returns a connection error. Install + boot:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git "$OMNIVOICE_HOME"
|
||||
git clone https://github.com/debpalash/VoiceStudio.git "$OMNIVOICE_HOME"
|
||||
cd "$OMNIVOICE_HOME"
|
||||
uv sync
|
||||
VIRTUAL_ENV="$(pwd)/.venv" uv pip install 'mcp[cli]'
|
||||
@@ -166,4 +166,4 @@ The MCP server does not expose the dubbing endpoint. The full transcribe → tra
|
||||
|
||||
Backend Swagger / OpenAPI: `http://127.0.0.1:3900/docs` (when backend is up).
|
||||
|
||||
Upstream: github.com/debpalash/OmniVoice-Studio — FSL-1.1-ALv2 (free for personal/internal/non-commercial; auto-converts to Apache-2.0 two years after each release).
|
||||
Upstream: github.com/debpalash/VoiceStudio — FSL-1.1-ALv2 (free for personal/internal/non-commercial; auto-converts to Apache-2.0 two years after each release).
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
## Install
|
||||
|
||||
```bash
|
||||
# Pick any location. The scripts in this skill default to ~/OmniVoice-Studio if
|
||||
# Pick any location. The scripts in this skill default to ~/VoiceStudio if
|
||||
# $OMNIVOICE_HOME is unset.
|
||||
export OMNIVOICE_HOME="${HOME}/OmniVoice-Studio"
|
||||
export OMNIVOICE_HOME="${HOME}/VoiceStudio"
|
||||
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git "$OMNIVOICE_HOME"
|
||||
git clone https://github.com/debpalash/VoiceStudio.git "$OMNIVOICE_HOME"
|
||||
cd "$OMNIVOICE_HOME"
|
||||
uv sync # ~1.6 GB venv on darwin arm64
|
||||
VIRTUAL_ENV="$(pwd)/.venv" uv pip install 'mcp[cli]' # SDK not in their lockfile yet
|
||||
@@ -37,7 +37,7 @@ Drop into your MCP client config (Claude Desktop, Claude Code at `~/.claude.json
|
||||
|
||||
Restart the MCP client. The server only starts at client launch — in-session edits do not hot-reload.
|
||||
|
||||
> **Note (mcp SDK ≥ 1.10):** If you see `TypeError: FastMCP.__init__() got an unexpected keyword argument 'version'`, your `OmniVoice-Studio` checkout is older than [debpalash/OmniVoice-Studio#112](https://github.com/debpalash/OmniVoice-Studio/pull/112). Either `git pull` once that PR lands, or apply the 3-line patch manually: replace `version="…", description=(…)` with `instructions=(…)` in `backend/mcp_server.py`.
|
||||
> **Note (mcp SDK ≥ 1.10):** If you see `TypeError: FastMCP.__init__() got an unexpected keyword argument 'version'`, your `VoiceStudio` checkout is older than [debpalash/VoiceStudio#112](https://github.com/debpalash/VoiceStudio/pull/112). Either `git pull` once that PR lands, or apply the 3-line patch manually: replace `version="…", description=(…)` with `instructions=(…)` in `backend/mcp_server.py`.
|
||||
|
||||
## Backend Lifecycle
|
||||
|
||||
@@ -73,7 +73,7 @@ Cached on subsequent boots.
|
||||
|
||||
| Var | Default | Purpose |
|
||||
|---|---|---|
|
||||
| `OMNIVOICE_HOME` | `~/OmniVoice-Studio` | Where the OmniVoice Studio repo is cloned (used by scripts in this skill) |
|
||||
| `OMNIVOICE_HOME` | `~/VoiceStudio` | Where the OmniVoice Studio repo is cloned (used by scripts in this skill) |
|
||||
| `OMNIVOICE_API_URL` | `http://localhost:3900` | MCP server's target backend URL |
|
||||
| `OMNIVOICE_TTS_BACKEND` | `omnivoice` | Switch engine: `cosyvoice`, `mlx-audio`, `voxcpm2`, `moss-tts-nano`, `kittentts` |
|
||||
| `HF_TOKEN` | (none) | Only needed for gated pyannote diarization models — basic TTS does not require one |
|
||||
@@ -84,7 +84,7 @@ Cached on subsequent boots.
|
||||
|---|---|---|
|
||||
| MCP tool returns connection error | Backend not running | `scripts/start-backend.sh` |
|
||||
| `address already in use` | Stale uvicorn on 3900 | `lsof -nP -iTCP:3900 -sTCP:LISTEN` → `kill -TERM <pid>` |
|
||||
| `FastMCP.__init__() got unexpected keyword argument 'version'` | mcp SDK ≥ 1.10 dropped `version`/`description`, checkout pre-dates [#112](https://github.com/debpalash/OmniVoice-Studio/pull/112) | Update the checkout or apply the 3-line patch manually |
|
||||
| `FastMCP.__init__() got unexpected keyword argument 'version'` | mcp SDK ≥ 1.10 dropped `version`/`description`, checkout pre-dates [#112](https://github.com/debpalash/VoiceStudio/pull/112) | Update the checkout or apply the 3-line patch manually |
|
||||
| First call hangs 5-10 min | Model download from HuggingFace | Watch `~/.cache/huggingface/hub/models--k2-fsa--OmniVoice/` grow |
|
||||
| `/health` returns 500 | Alembic migration failed | Inspect `<data_dir>/crash_log.txt` |
|
||||
| Voice profile not found | `profile_id` invalid or profile not yet created | `list_voices` first to get valid IDs |
|
||||
|
||||
@@ -7,8 +7,8 @@ Thanks for your interest in improving OmniVoice Studio! This guide covers everyt
|
||||
| | |
|
||||
|---|---|
|
||||
| 💬 **Chat** | [Discord](https://discord.gg/bzQavDfVV9) |
|
||||
| 🐛 **Bugs** | [GitHub Issues](https://github.com/debpalash/OmniVoice-Studio/issues) |
|
||||
| 🏷️ **Good First Issues** | [Filtered list](https://github.com/debpalash/OmniVoice-Studio/labels/good%20first%20issue) |
|
||||
| 🐛 **Bugs** | [GitHub Issues](https://github.com/debpalash/VoiceStudio/issues) |
|
||||
| 🏷️ **Good First Issues** | [Filtered list](https://github.com/debpalash/VoiceStudio/labels/good%20first%20issue) |
|
||||
| 📋 **Roadmap** | [README → Roadmap](README.md#roadmap) |
|
||||
|
||||
---
|
||||
@@ -33,7 +33,7 @@ Read it before opening a proposal; the licence check in particular ends most of
|
||||
### Clone & Run
|
||||
|
||||
```bash
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git
|
||||
git clone https://github.com/debpalash/VoiceStudio.git
|
||||
cd OmniVoice-Studio
|
||||
bun install
|
||||
bun run dev
|
||||
@@ -102,7 +102,7 @@ OmniVoice-Studio/
|
||||
|
||||
### Bug Reports
|
||||
|
||||
Open an [issue](https://github.com/debpalash/OmniVoice-Studio/issues/new) with:
|
||||
Open an [issue](https://github.com/debpalash/VoiceStudio/issues/new) with:
|
||||
|
||||
1. **What happened** vs **what you expected**
|
||||
2. **Steps to reproduce**
|
||||
@@ -323,7 +323,7 @@ appreciated but not required.
|
||||
## Need Help?
|
||||
|
||||
- **Stuck on setup?** Ask in [Discord #help](https://discord.gg/bzQavDfVV9)
|
||||
- **Not sure where to start?** Check [good first issues](https://github.com/debpalash/OmniVoice-Studio/labels/good%20first%20issue)
|
||||
- **Want to discuss a big change?** Open a [discussion](https://github.com/debpalash/OmniVoice-Studio/discussions) or Discord thread before coding
|
||||
- **Not sure where to start?** Check [good first issues](https://github.com/debpalash/VoiceStudio/labels/good%20first%20issue)
|
||||
- **Want to discuss a big change?** Open a [discussion](https://github.com/debpalash/VoiceStudio/discussions) or Discord thread before coding
|
||||
|
||||
Thank you for contributing! 🎙️
|
||||
|
||||
+1
-1
@@ -4,6 +4,6 @@
|
||||
ko_fi: debpalash
|
||||
custom:
|
||||
- "https://paypal.me/palashCoder"
|
||||
- "https://github.com/debpalash/OmniVoice-Studio/blob/main/SPONSORS.md"
|
||||
- "https://github.com/debpalash/VoiceStudio/blob/main/SPONSORS.md"
|
||||
# github: [debpalash] # not available
|
||||
# open_collective: omnivoice-studio
|
||||
|
||||
@@ -17,7 +17,7 @@ body:
|
||||
attributes:
|
||||
label: Before filing
|
||||
options:
|
||||
- label: I searched [existing issues](https://github.com/debpalash/OmniVoice-Studio/issues?q=is%3Aissue) and this isn't a duplicate.
|
||||
- label: I searched [existing issues](https://github.com/debpalash/VoiceStudio/issues?q=is%3Aissue) and this isn't a duplicate.
|
||||
required: true
|
||||
- label: I'm on the latest release (or `main`) — older builds may already be fixed.
|
||||
required: false
|
||||
|
||||
@@ -4,8 +4,8 @@ contact_links:
|
||||
url: https://discord.gg/bzQavDfVV9
|
||||
about: Usage questions, setup help, and chat. Faster than an issue for "how do I…".
|
||||
- name: 🗣️ GitHub Discussions
|
||||
url: https://github.com/debpalash/OmniVoice-Studio/discussions
|
||||
url: https://github.com/debpalash/VoiceStudio/discussions
|
||||
about: Ideas, show-and-tell, and open-ended Q&A that isn't a bug or a specific feature ask.
|
||||
- name: 🔒 Security vulnerability
|
||||
url: https://github.com/debpalash/OmniVoice-Studio/security/policy
|
||||
url: https://github.com/debpalash/VoiceStudio/security/policy
|
||||
about: Please report security issues privately — do NOT open a public issue.
|
||||
|
||||
@@ -8,7 +8,7 @@ body:
|
||||
attributes:
|
||||
label: Before filing
|
||||
options:
|
||||
- label: I searched [existing issues](https://github.com/debpalash/OmniVoice-Studio/issues?q=is%3Aissue) and [discussions](https://github.com/debpalash/OmniVoice-Studio/discussions) for this idea.
|
||||
- label: I searched [existing issues](https://github.com/debpalash/VoiceStudio/issues?q=is%3Aissue) and [discussions](https://github.com/debpalash/VoiceStudio/discussions) for this idea.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: problem
|
||||
|
||||
@@ -9,7 +9,7 @@ body:
|
||||
Thanks for considering sponsoring **OmniVoice Studio** 💛
|
||||
|
||||
OmniVoice is free, local-first, and AGPL-3.0 — sponsorship keeps development going.
|
||||
See **[SPONSORS.md](https://github.com/debpalash/OmniVoice-Studio/blob/main/SPONSORS.md)** for tiers, placements, and logo guidelines.
|
||||
See **[SPONSORS.md](https://github.com/debpalash/VoiceStudio/blob/main/SPONSORS.md)** for tiers, placements, and logo guidelines.
|
||||
Prefer to just donate? [Ko-fi](https://ko-fi.com/debpalash) (recurring) or [PayPal](https://paypal.me/palashCoder) (one-time) — you don't need this form for that.
|
||||
- type: input
|
||||
id: name
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ download, and never run executables bundled with model archives.
|
||||
|
||||
Instead, report them privately via one of these channels:
|
||||
|
||||
1. **GitHub Security Advisories** (preferred) — [Report a vulnerability](https://github.com/debpalash/OmniVoice-Studio/security/advisories/new)
|
||||
1. **GitHub Security Advisories** (preferred) — [Report a vulnerability](https://github.com/debpalash/VoiceStudio/security/advisories/new)
|
||||
2. **Email** — Send details to **security@palash.dev**
|
||||
|
||||
### What to include
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
| Channel | Best for |
|
||||
|---|---|
|
||||
| [Discord](https://discord.gg/bzQavDfVV9) — `#help` | Setup problems, quick questions, sharing results |
|
||||
| [GitHub Issues](https://github.com/debpalash/OmniVoice-Studio/issues) | Bugs and feature requests — use the templates; attach the diagnostic bundle (Settings → About → "Save diagnostic bundle") |
|
||||
| [GitHub Discussions](https://github.com/debpalash/OmniVoice-Studio/discussions) | Design questions, ideas, show & tell |
|
||||
| [GitHub Issues](https://github.com/debpalash/VoiceStudio/issues) | Bugs and feature requests — use the templates; attach the diagnostic bundle (Settings → About → "Save diagnostic bundle") |
|
||||
| [GitHub Discussions](https://github.com/debpalash/VoiceStudio/discussions) | Design questions, ideas, show & tell |
|
||||
| Security issues | **Never a public issue** — see [SECURITY.md](SECURITY.md) for private reporting |
|
||||
|
||||
## Uninstalling / removing all data
|
||||
|
||||
@@ -48,7 +48,16 @@ permissions:
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
# PINNED, not ${{ github.repository }}. The repository was renamed to
|
||||
# `VoiceStudio`, and deriving the image path from it would have silently
|
||||
# moved published images to ghcr.io/debpalash/voicestudio — while Docker Hub
|
||||
# (a hardcoded literal below) stayed put. Everyone pulling the documented
|
||||
# GHCR path would have kept getting the last pre-rename image forever: no
|
||||
# error, no warning, just a channel that quietly stopped updating. A
|
||||
# published image path is a promise to users, not a mirror of the repo name.
|
||||
# Renaming it is a deliberate migration (publish to both, document the move,
|
||||
# then retire the old), not a side effect of renaming the repo.
|
||||
IMAGE_NAME: debpalash/omnivoice-studio
|
||||
DOCKERHUB_IMAGE: palashdeb/omnivoice-studio
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ The bundled TTS model package (`pyproject.toml`) is versioned independently.
|
||||
|
||||
### Changed
|
||||
|
||||
- The repository moved to github.com/debpalash/VoiceStudio. Every link in the app, docs and scripts now points there; GitHub redirects the old URLs, and the Docker image paths, the app bundle identifier and your data folder are all deliberately unchanged, so nothing on your machine needs to move. (#1394)
|
||||
- macOS floor raised to 13.3 (Ventura) — the frontend has required Safari 16.4 for some time, so macOS 12 was a promise the stack could not keep (#1268)
|
||||
|
||||
### Added
|
||||
@@ -1683,4 +1684,4 @@ Region selector, realtime download speed, retry buttons, recheck top-right, HF m
|
||||
|
||||
## Earlier releases
|
||||
|
||||
See [GitHub Releases](https://github.com/debpalash/OmniVoice-Studio/releases) for prior versions.
|
||||
See [GitHub Releases](https://github.com/debpalash/VoiceStudio/releases) for prior versions.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
**OmniVoice Studio**
|
||||
|
||||
OmniVoice Studio is an open-source, fully-local ElevenLabs alternative — a desktop app for voice cloning, voice design, video dubbing, and real-time dictation across 646 languages. It runs entirely on the user's machine (CUDA/MPS/ROCm/CPU auto-detect), with no API keys, no accounts, and no cloud dependencies. It's an active beta with a growing user base who hit it with real workloads (50-video batches, multi-engine setups, edge-OS platforms) and report friction in GitHub Issues and Discord. The current version lives in `frontend/package.json` (the single source of truth — see Versioning); the latest stable tag is on the [Releases page](https://github.com/debpalash/OmniVoice-Studio/releases/latest). With `AUTO_VERSION_BUMP` off (the current owner setting), `main` holds at the released version between releases.
|
||||
OmniVoice Studio is an open-source, fully-local ElevenLabs alternative — a desktop app for voice cloning, voice design, video dubbing, and real-time dictation across 646 languages. It runs entirely on the user's machine (CUDA/MPS/ROCm/CPU auto-detect), with no API keys, no accounts, and no cloud dependencies. It's an active beta with a growing user base who hit it with real workloads (50-video batches, multi-engine setups, edge-OS platforms) and report friction in GitHub Issues and Discord. The current version lives in `frontend/package.json` (the single source of truth — see Versioning); the latest stable tag is on the [Releases page](https://github.com/debpalash/VoiceStudio/releases/latest). With `AUTO_VERSION_BUMP` off (the current owner setting), `main` holds at the released version between releases.
|
||||
|
||||
**Core Value:** **A first-run that actually works.** A user who downloads the installer (or clones the repo) should reach a working voice-cloning or dubbing output without hitting a wall — and when something does go wrong, the error or docs should tell them exactly what to do.
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/stargazers"><img src="https://img.shields.io/github/stars/debpalash/OmniVoice-Studio?style=flat-square&color=f59e0b" alt="Stars" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases"><img src="https://img.shields.io/github/downloads/debpalash/OmniVoice-Studio/total?style=flat-square&color=8b5cf6&label=downloads" alt="Total downloads" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/github/v/release/debpalash/OmniVoice-Studio?style=flat-square&color=10b981" alt="Release" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/stargazers"><img src="https://img.shields.io/github/stars/debpalash/VoiceStudio?style=flat-square&color=f59e0b" alt="Stars" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases"><img src="https://img.shields.io/github/downloads/debpalash/VoiceStudio/total?style=flat-square&color=8b5cf6&label=downloads" alt="Total downloads" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/github/v/release/debpalash/VoiceStudio?style=flat-square&color=10b981" alt="Release" /></a>
|
||||
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue?style=flat-square" alt="License" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/issues"><img src="https://img.shields.io/github/issues/debpalash/OmniVoice-Studio?style=flat-square&color=ef4444" alt="Issues" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/issues"><img src="https://img.shields.io/github/issues/debpalash/VoiceStudio?style=flat-square&color=ef4444" alt="Issues" /></a>
|
||||
<a href="https://discord.gg/bzQavDfVV9"><img src="https://img.shields.io/badge/Discord-Join_Community-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord" /></a>
|
||||
<a href="https://x.com/idebpalash"><img src="https://img.shields.io/badge/X-Follow_for_updates-000000?style=flat-square&logo=x&logoColor=white" alt="Follow on X" /></a>
|
||||
<a href="https://ko-fi.com/debpalash"><img src="https://img.shields.io/badge/Ko--fi-Support_Us-FF5E5B?style=flat-square&logo=ko-fi&logoColor=white" alt="Ko-fi" /></a>
|
||||
@@ -30,11 +30,11 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/⬇_Download-macOS_·_Windows_·_Linux-10b981?style=for-the-badge" alt="Download the latest release" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/⬇_Download-macOS_·_Windows_·_Linux-10b981?style=for-the-badge" alt="Download the latest release" /></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://trendshift.io/repositories/28176?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-28176" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/28176/daily?language=Python" alt="debpalash%2FOmniVoice-Studio | Trendshift" width="250" height="55"/></a>
|
||||
<a href="https://trendshift.io/repositories/28176?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-28176" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/28176/daily?language=Python" alt="debpalash%2FVoiceStudio | Trendshift" width="250" height="55"/></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
> **Your voice is the most personal data you have. So why rent it back from a cloud?** Every mainstream voice tool ships your audio to someone else's server and bills you monthly for the privilege. OmniVoice Studio flips that: clone, design, dub, and dictate on your own hardware — 646 languages, no meter running, nothing leaving your machine.
|
||||
|
||||
> [!WARNING]
|
||||
> **Active beta.** Things may break between releases — for the newest fixes, run from source. Bug reports and PRs are very welcome: [open an issue](https://github.com/debpalash/OmniVoice-Studio/issues) or [join Discord](https://discord.gg/bzQavDfVV9).
|
||||
> **Active beta.** Things may break between releases — for the newest fixes, run from source. Bug reports and PRs are very welcome: [open an issue](https://github.com/debpalash/VoiceStudio/issues) or [join Discord](https://discord.gg/bzQavDfVV9).
|
||||
|
||||
<a id="screenshots"></a>
|
||||
|
||||
@@ -150,11 +150,11 @@ Three flagships, five more headliners, and a dozen under the fold.
|
||||
## ⚡ Quickstart
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/macOS-DMG_(Apple_Silicon)-000?style=for-the-badge&logo=apple&logoColor=white" alt="Download macOS DMG" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/Windows-MSI_(x64)-0078D4?style=for-the-badge&logo=windows&logoColor=white" alt="Download Windows MSI" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/Linux-AppImage_(x64)-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Download Linux AppImage" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/macOS-DMG_(Apple_Silicon)-000?style=for-the-badge&logo=apple&logoColor=white" alt="Download macOS DMG" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/Windows-MSI_(x64)-0078D4?style=for-the-badge&logo=windows&logoColor=white" alt="Download Windows MSI" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/Linux-AppImage_(x64)-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Download Linux AppImage" /></a>
|
||||
<br/>
|
||||
<sub><b>macOS:</b> first launch needs a one-time approval — right-click → <b>Open</b> (or System Settings → Privacy & Security → <b>"Open Anyway"</b> on macOS 15). No Terminal needed. <a href="docs/install/macos.md#gatekeeper-quarantine">Why?</a> · <b>Intel Macs:</b> local backend unsupported (<a href="https://github.com/debpalash/OmniVoice-Studio/issues/889">#889</a>) — <a href="docs/install/macos.md">details</a>.</sub>
|
||||
<sub><b>macOS:</b> first launch needs a one-time approval — right-click → <b>Open</b> (or System Settings → Privacy & Security → <b>"Open Anyway"</b> on macOS 15). No Terminal needed. <a href="docs/install/macos.md#gatekeeper-quarantine">Why?</a> · <b>Intel Macs:</b> local backend unsupported (<a href="https://github.com/debpalash/VoiceStudio/issues/889">#889</a>) — <a href="docs/install/macos.md">details</a>.</sub>
|
||||
</div>
|
||||
|
||||
**Install guide:** [🍎 macOS](docs/install/macos.md) · [🪟 Windows](docs/install/windows.md) · [🐧 Linux](docs/install/linux.md) · [🐳 Docker](docs/install/docker.md)
|
||||
@@ -221,7 +221,7 @@ Professional-grade voice AI, minus the subscription and the cloud.
|
||||
| **GPU** | Optional — CPU works | NVIDIA CUDA · Apple Silicon MPS · AMD ROCm (Linux only) |
|
||||
|
||||
> [!NOTE]
|
||||
> **A GPU is optional** — the whole pipeline runs on CPU (just slower), and on ≤8 GB VRAM, TTS auto-offloads to CPU. Caveats: **AMD ROCm** is Linux-only + opt-in ([Linux](docs/install/linux.md#amd-gpu-rocm)) — Windows AMD/Ryzen AI is CPU-only ([Windows](docs/install/windows.md#gpu-support)); **macOS Intel** can't run the local backend, so point it at a remote one ([#889](https://github.com/debpalash/OmniVoice-Studio/issues/889) · [macOS](docs/install/macos.md)).
|
||||
> **A GPU is optional** — the whole pipeline runs on CPU (just slower), and on ≤8 GB VRAM, TTS auto-offloads to CPU. Caveats: **AMD ROCm** is Linux-only + opt-in ([Linux](docs/install/linux.md#amd-gpu-rocm)) — Windows AMD/Ryzen AI is CPU-only ([Windows](docs/install/windows.md#gpu-support)); **macOS Intel** can't run the local backend, so point it at a remote one ([#889](https://github.com/debpalash/VoiceStudio/issues/889) · [macOS](docs/install/macos.md)).
|
||||
|
||||
<a id="tts-engines"></a>
|
||||
|
||||
@@ -381,7 +381,7 @@ Calling the backend from **another machine** (LAN, Tailscale, behind a proxy)? I
|
||||
|
||||
### 📓 Run on Google Colab
|
||||
|
||||
[](https://colab.research.google.com/github/debpalash/OmniVoice-Studio/blob/main/notebooks/OmniVoice_Studio_Colab.ipynb)
|
||||
[](https://colab.research.google.com/github/debpalash/VoiceStudio/blob/main/notebooks/OmniVoice_Studio_Colab.ipynb)
|
||||
|
||||
No local GPU? The [official notebook](notebooks/OmniVoice_Studio_Colab.ipynb) boots the full app — web UI included — on a free Colab T4, then walks the whole feature surface (TTS, cloning, design, transcription, dubbing, audiobook, watermarking, the OpenAI-compatible API) as a guided tour with inline playback. No tunnels, no API keys.
|
||||
|
||||
@@ -516,7 +516,7 @@ OmniVoice is **free** and **AGPL-3.0** — no paid tier, no SaaS revenue. Sponso
|
||||
Yes please — bug fixes, new TTS engine adapters, UI improvements, docs, translations. All of it.
|
||||
|
||||
- 📖 Read the **[Contributing Guide](.github/CONTRIBUTING.md)** for setup, code style, and PR workflow
|
||||
- 🐛 Browse [good first issues](https://github.com/debpalash/OmniVoice-Studio/labels/good%20first%20issue)
|
||||
- 🐛 Browse [good first issues](https://github.com/debpalash/VoiceStudio/labels/good%20first%20issue)
|
||||
- 💬 Join our [Discord](https://discord.gg/bzQavDfVV9) to discuss ideas or ask for help
|
||||
- 𝕏 Follow [@idebpalash](https://x.com/idebpalash) for updates and what's being built next
|
||||
|
||||
@@ -551,7 +551,7 @@ Because OmniVoice's cloning is <b>zero-shot</b>: your clip is a <i>prompt</i> th
|
||||
<details>
|
||||
<summary><b>Does it work on Apple Silicon (M1/M2/M3/M4)?</b></summary>
|
||||
<br/>
|
||||
Yes. MPS acceleration is auto-detected. MLX-optimized Whisper models are available for faster transcription on Apple hardware. <b>Intel Macs are not supported</b>: the app UI installs, but the local Python backend cannot run because PyTorch no longer ships Intel-Mac wheels (<a href="https://github.com/debpalash/OmniVoice-Studio/issues/889">#889</a>) — an Intel Mac can only be used with a remote backend.
|
||||
Yes. MPS acceleration is auto-detected. MLX-optimized Whisper models are available for faster transcription on Apple hardware. <b>Intel Macs are not supported</b>: the app UI installs, but the local Python backend cannot run because PyTorch no longer ships Intel-Mac wheels (<a href="https://github.com/debpalash/VoiceStudio/issues/889">#889</a>) — an Intel Mac can only be used with a remote backend.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
@@ -667,17 +667,17 @@ Like the local-first philosophy? It runs in the family — same maker, same rule
|
||||
<br/>
|
||||
|
||||
If you read this far, you're our kind of person.<br/>
|
||||
**[⭐ Star this repo](https://github.com/debpalash/OmniVoice-Studio)** so others can find it too.<br/>
|
||||
**[⭐ Star this repo](https://github.com/debpalash/VoiceStudio)** so others can find it too.<br/>
|
||||
**[💬 Join the Discord](https://discord.gg/bzQavDfVV9)** to share what you build.<br/>
|
||||
**[❤️ Support development](https://ko-fi.com/debpalash)** — fund the AI agent bills that keep OmniVoice shipping.
|
||||
|
||||
<br/>
|
||||
|
||||
<a href="https://star-history.com/#debpalash/OmniVoice-Studio&Date">
|
||||
<a href="https://star-history.com/#debpalash/VoiceStudio&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=debpalash/OmniVoice-Studio&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=debpalash/OmniVoice-Studio&type=Date" />
|
||||
<img alt="Star History" src="https://api.star-history.com/svg?repos=debpalash/OmniVoice-Studio&type=Date&theme=dark" width="600" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=debpalash/VoiceStudio&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=debpalash/VoiceStudio&type=Date" />
|
||||
<img alt="Star History" src="https://api.star-history.com/svg?repos=debpalash/VoiceStudio&type=Date&theme=dark" width="600" />
|
||||
</picture>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
+18
-18
@@ -19,17 +19,17 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/stargazers"><img src="https://img.shields.io/github/stars/debpalash/OmniVoice-Studio?style=flat-square&color=f59e0b" alt="Star 数" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/github/v/release/debpalash/OmniVoice-Studio?style=flat-square&color=10b981" alt="版本" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/stargazers"><img src="https://img.shields.io/github/stars/debpalash/VoiceStudio?style=flat-square&color=f59e0b" alt="Star 数" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/github/v/release/debpalash/VoiceStudio?style=flat-square&color=10b981" alt="版本" /></a>
|
||||
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue?style=flat-square" alt="许可证" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/issues"><img src="https://img.shields.io/github/issues/debpalash/OmniVoice-Studio?style=flat-square&color=ef4444" alt="Issues" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/issues"><img src="https://img.shields.io/github/issues/debpalash/VoiceStudio?style=flat-square&color=ef4444" alt="Issues" /></a>
|
||||
<a href="https://discord.gg/bzQavDfVV9"><img src="https://img.shields.io/badge/Discord-Join_Community-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord" /></a>
|
||||
<a href="https://ko-fi.com/debpalash"><img src="https://img.shields.io/badge/Ko--fi-Support_Us-FF5E5B?style=flat-square&logo=ko-fi&logoColor=white" alt="Ko-fi" /></a>
|
||||
<a href="https://paypal.me/palashCoder"><img src="https://img.shields.io/badge/PayPal-Donate-00457C?style=flat-square&logo=paypal&logoColor=white" alt="PayPal" /></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/⬇_Download-macOS_·_Windows_·_Linux-10b981?style=for-the-badge" alt="下载最新版本" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/⬇_Download-macOS_·_Windows_·_Linux-10b981?style=for-the-badge" alt="下载最新版本" /></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
> **你的声音是你最私密的数据。为什么还要按月付费,从云端把它租回来?** 每一款主流语音工具都会把你的音频送到别人的服务器上,并按月向你收费。OmniVoice Studio 反其道而行:克隆、设计、配音、听写,全部在你自己的硬件上完成——646 种语言,没有计费表在转,任何数据都不离开你的设备。
|
||||
|
||||
> [!WARNING]
|
||||
> **活跃 Beta 阶段。** 各版本之间可能出现故障——如需最新修复,请从源码运行。非常欢迎 Bug 报告和 PR:[提交 Issue](https://github.com/debpalash/OmniVoice-Studio/issues) 或 [加入 Discord](https://discord.gg/bzQavDfVV9)。
|
||||
> **活跃 Beta 阶段。** 各版本之间可能出现故障——如需最新修复,请从源码运行。非常欢迎 Bug 报告和 PR:[提交 Issue](https://github.com/debpalash/VoiceStudio/issues) 或 [加入 Discord](https://discord.gg/bzQavDfVV9)。
|
||||
|
||||
<a id="screenshots"></a>
|
||||
|
||||
@@ -161,11 +161,11 @@
|
||||
## ⚡ 快速开始
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/macOS-DMG_(Apple_Silicon)-000?style=for-the-badge&logo=apple&logoColor=white" alt="下载 macOS DMG" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/Windows-MSI_(x64)-0078D4?style=for-the-badge&logo=windows&logoColor=white" alt="下载 Windows MSI" /></a>
|
||||
<a href="https://github.com/debpalash/OmniVoice-Studio/releases/latest"><img src="https://img.shields.io/badge/Linux-AppImage_(x64)-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="下载 Linux AppImage" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/macOS-DMG_(Apple_Silicon)-000?style=for-the-badge&logo=apple&logoColor=white" alt="下载 macOS DMG" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/Windows-MSI_(x64)-0078D4?style=for-the-badge&logo=windows&logoColor=white" alt="下载 Windows MSI" /></a>
|
||||
<a href="https://github.com/debpalash/VoiceStudio/releases/latest"><img src="https://img.shields.io/badge/Linux-AppImage_(x64)-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="下载 Linux AppImage" /></a>
|
||||
<br/>
|
||||
<sub><b>macOS:</b>首次启动需要一次性批准——右键点击 → <b>打开</b>(macOS 15 上为 系统设置 → 隐私与安全性 → <b>“仍要打开”</b>)。无需终端。<a href="docs/install/macos.md#gatekeeper-quarantine">为什么?</a> · <b>Intel Mac:</b>不支持本地后端(<a href="https://github.com/debpalash/OmniVoice-Studio/issues/889">#889</a>)——<a href="docs/install/macos.md">详情</a>。</sub>
|
||||
<sub><b>macOS:</b>首次启动需要一次性批准——右键点击 → <b>打开</b>(macOS 15 上为 系统设置 → 隐私与安全性 → <b>“仍要打开”</b>)。无需终端。<a href="docs/install/macos.md#gatekeeper-quarantine">为什么?</a> · <b>Intel Mac:</b>不支持本地后端(<a href="https://github.com/debpalash/VoiceStudio/issues/889">#889</a>)——<a href="docs/install/macos.md">详情</a>。</sub>
|
||||
</div>
|
||||
|
||||
选择你的操作系统,按指南从头到尾操作:
|
||||
@@ -252,7 +252,7 @@ ElevenLabs 收费 **$5–$330/月**,并在他们的服务器上处理你的音
|
||||
> **AMD GPU:** ROCm 加速**仅限 Linux 且需手动开启**——在首次运行的设置界面选择 **“AMD GPU (ROCm)”**,或设置 `OMNIVOICE_TORCH_VARIANT=rocm`([docs/install/linux.md](docs/install/linux.md#amd-gpu-rocm))。在 **Docker/Podman** 中请改用专门的 ROCm 镜像:`ghcr.io/debpalash/omnivoice-studio:rocm`([docs/install/docker.md](docs/install/docker.md#pull-and-run-amd-gpu--rocm))。**在 Windows 上,AMD GPU(含 Ryzen AI 核显)只能以 CPU 运行**:PyTorch 没有 Windows 版 ROCm 轮子,因此 Windows 上的 GPU 加速仅限 NVIDIA/CUDA([docs/install/windows.md](docs/install/windows.md#gpu-support))。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **macOS Intel(x86_64)不支持本地后端:** 应用 UI 可以安装,但 Python 后端无法运行,因为 PyTorch 已不再发布 Intel Mac 轮子([#889](https://github.com/debpalash/OmniVoice-Studio/issues/889))。Intel Mac 用户仍可让 UI 指向另一台机器上的远程后端——参见 [docs/install/macos.md](docs/install/macos.md)。
|
||||
> **macOS Intel(x86_64)不支持本地后端:** 应用 UI 可以安装,但 Python 后端无法运行,因为 PyTorch 已不再发布 Intel Mac 轮子([#889](https://github.com/debpalash/VoiceStudio/issues/889))。Intel Mac 用户仍可让 UI 指向另一台机器上的远程后端——参见 [docs/install/macos.md](docs/install/macos.md)。
|
||||
|
||||
<a id="tts-engines"></a>
|
||||
|
||||
@@ -371,7 +371,7 @@ print(result.text)
|
||||
|
||||
### 📓 在 Google Colab 上运行
|
||||
|
||||
[](https://colab.research.google.com/github/debpalash/OmniVoice-Studio/blob/main/notebooks/OmniVoice_Studio_Colab.ipynb)
|
||||
[](https://colab.research.google.com/github/debpalash/VoiceStudio/blob/main/notebooks/OmniVoice_Studio_Colab.ipynb)
|
||||
|
||||
没有本地 GPU?官方笔记本([notebooks/OmniVoice_Studio_Colab.ipynb](notebooks/OmniVoice_Studio_Colab.ipynb))可在免费的 Colab T4 上启动完整应用(包含 Web 界面):在笔记本内直接构建前端,用 uv 安装后端(复用 Colab 预装的 CUDA PyTorch),并通过 Colab 内置端口代理打开界面。无需第三方隧道,也无需任何 API 密钥。随后还有一套覆盖全部主要功能的 API 导览,全部可在笔记本内直接播放:多语言 TTS、声音克隆与声音设计、已保存的声音档案、语音转写、AI 水印检测、OpenAI 兼容 API、多角色故事、带章节的 m4b 有声书,以及一个附带人声分离音轨的迷你视频配音。
|
||||
|
||||
@@ -510,7 +510,7 @@ OmniVoice **免费**且采用 **AGPL-3.0** 许可——没有付费版,没有
|
||||
非常欢迎——Bug 修复、新的 TTS 引擎适配器、UI 改进、文档、翻译。统统欢迎。
|
||||
|
||||
- 📖 阅读 **[贡献指南](.github/CONTRIBUTING.md)** 了解环境搭建、代码风格和 PR 工作流
|
||||
- 🐛 浏览 [good first issues](https://github.com/debpalash/OmniVoice-Studio/labels/good%20first%20issue)
|
||||
- 🐛 浏览 [good first issues](https://github.com/debpalash/VoiceStudio/labels/good%20first%20issue)
|
||||
- 💬 加入我们的 [Discord](https://discord.gg/bzQavDfVV9) 讨论想法或寻求帮助
|
||||
|
||||
---
|
||||
@@ -534,7 +534,7 @@ OmniVoice **免费**且采用 **AGPL-3.0** 许可——没有付费版,没有
|
||||
<details>
|
||||
<summary><b>能在 Apple Silicon(M1/M2/M3/M4)上运行吗?</b></summary>
|
||||
<br/>
|
||||
可以。MPS 加速会被自动检测。在 Apple 硬件上,MLX 优化的 Whisper 模型可提供更快的转录速度。<b>不支持 Intel Mac</b>:应用 UI 可以安装,但本地 Python 后端无法运行,因为 PyTorch 已不再发布 Intel Mac 轮子(<a href="https://github.com/debpalash/OmniVoice-Studio/issues/889">#889</a>)——Intel Mac 只能配合远程后端使用。
|
||||
可以。MPS 加速会被自动检测。在 Apple 硬件上,MLX 优化的 Whisper 模型可提供更快的转录速度。<b>不支持 Intel Mac</b>:应用 UI 可以安装,但本地 Python 后端无法运行,因为 PyTorch 已不再发布 Intel Mac 轮子(<a href="https://github.com/debpalash/VoiceStudio/issues/889">#889</a>)——Intel Mac 只能配合远程后端使用。
|
||||
</details>
|
||||
|
||||
<details>
|
||||
@@ -650,17 +650,17 @@ OmniVoice Studio 站在这些杰出开源工作的肩膀上:
|
||||
<br/>
|
||||
|
||||
如果你读到了这里,你就是我们的同路人。<br/>
|
||||
**[⭐ 给这个仓库点个 Star](https://github.com/debpalash/OmniVoice-Studio)**,让更多人能找到它。<br/>
|
||||
**[⭐ 给这个仓库点个 Star](https://github.com/debpalash/VoiceStudio)**,让更多人能找到它。<br/>
|
||||
**[💬 加入 Discord](https://discord.gg/bzQavDfVV9)**,分享你的作品。<br/>
|
||||
**[❤️ 支持开发](https://ko-fi.com/debpalash)**——资助让 OmniVoice 持续发布的 AI 智能体账单。
|
||||
|
||||
<br/>
|
||||
|
||||
<a href="https://star-history.com/#debpalash/OmniVoice-Studio&Date">
|
||||
<a href="https://star-history.com/#debpalash/VoiceStudio&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=debpalash/OmniVoice-Studio&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=debpalash/OmniVoice-Studio&type=Date" />
|
||||
<img alt="Star 历史" src="https://api.star-history.com/svg?repos=debpalash/OmniVoice-Studio&type=Date&theme=dark" width="600" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=debpalash/VoiceStudio&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=debpalash/VoiceStudio&type=Date" />
|
||||
<img alt="Star 历史" src="https://api.star-history.com/svg?repos=debpalash/VoiceStudio&type=Date&theme=dark" width="600" />
|
||||
</picture>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
+3
-3
@@ -41,7 +41,7 @@ Placements marked "as that page ships" (the in-app Sponsors page and the project
|
||||
|
||||
**1. Open a sponsorship inquiry (recommended).** This opens a short GitHub form (name/org, logo, tier, contact) so we can get you set up:
|
||||
|
||||
> **[→ Open a sponsorship inquiry](https://github.com/debpalash/OmniVoice-Studio/issues/new?template=sponsor.yml)**
|
||||
> **[→ Open a sponsorship inquiry](https://github.com/debpalash/VoiceStudio/issues/new?template=sponsor.yml)**
|
||||
|
||||
**2. Or start recurring support directly:**
|
||||
|
||||
@@ -70,7 +70,7 @@ To make your logo look sharp everywhere (README on GitHub, the in-app page, the
|
||||
|
||||
**How your logo gets added:**
|
||||
|
||||
- **Easiest:** attach the asset and link in your [sponsorship inquiry](https://github.com/debpalash/OmniVoice-Studio/issues/new?template=sponsor.yml) — the maintainer places it.
|
||||
- **Easiest:** attach the asset and link in your [sponsorship inquiry](https://github.com/debpalash/VoiceStudio/issues/new?template=sponsor.yml) — the maintainer places it.
|
||||
- **Or open a PR:** add your asset under `docs/sponsors/` and an entry to the tables in this file. Silver/Gold logos are also wired into the app's in-app Sponsors page (via the `sponsors.js` manifest) and the project website as those surfaces ship.
|
||||
|
||||
By sponsoring you confirm you have the right to use the submitted logo and grant OmniVoice permission to display it in the contexts above. We won't alter your logo beyond scaling, and we'll remove it promptly on request.
|
||||
@@ -115,5 +115,5 @@ OmniVoice stays local-first and fully functional with zero dollars spent. Sponso
|
||||
|
||||
<div align="center">
|
||||
<sub>Thank you for keeping local-first voice AI alive and free. ❤️</sub><br/>
|
||||
<sub>Questions? <a href="https://github.com/debpalash/OmniVoice-Studio/issues/new?template=sponsor.yml">Open an inquiry</a> · <a href="https://discord.gg/bzQavDfVV9">Discord</a></sub>
|
||||
<sub>Questions? <a href="https://github.com/debpalash/VoiceStudio/issues/new?template=sponsor.yml">Open an inquiry</a> · <a href="https://discord.gg/bzQavDfVV9">Discord</a></sub>
|
||||
</div>
|
||||
|
||||
+1
-1
@@ -475,7 +475,7 @@ def _run_alembic_upgrade() -> None:
|
||||
f"exactly as the failed migration left it). "
|
||||
f"{backup_note}. "
|
||||
"What to do: relaunch to retry; if it keeps failing, report it at "
|
||||
"https://github.com/debpalash/OmniVoice-Studio/issues (keep the backup file). "
|
||||
"https://github.com/debpalash/VoiceStudio/issues (keep the backup file). "
|
||||
"To roll back manually: quit the app, replace omnivoice.db with the backup "
|
||||
"file, and reinstall the previous version."
|
||||
)
|
||||
|
||||
@@ -94,7 +94,7 @@ def _resolve() -> str:
|
||||
return (
|
||||
_from_tauri()
|
||||
or _from_pyproject()
|
||||
or "https://github.com/debpalash/OmniVoice-Studio"
|
||||
or "https://github.com/debpalash/VoiceStudio"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ def _download(url: str, dest_path: str, expected_sha256: str,
|
||||
|
||||
if not url.startswith("https://"):
|
||||
raise ValueError("media-tools downloads must be https")
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "OmniVoice-Studio"})
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "VoiceStudio"})
|
||||
hasher = hashlib.sha256()
|
||||
done = 0
|
||||
with urllib.request.urlopen(req, timeout=_DOWNLOAD_TIMEOUT_S) as resp:
|
||||
@@ -528,7 +528,7 @@ def _fetch_pypi_ytdlp() -> tuple[str, str, str]:
|
||||
"""(version, wheel_url, sha256) of the latest yt-dlp wheel on PyPI."""
|
||||
import json
|
||||
import urllib.request
|
||||
req = urllib.request.Request(_PYPI_YTDLP_URL, headers={"User-Agent": "OmniVoice-Studio"})
|
||||
req = urllib.request.Request(_PYPI_YTDLP_URL, headers={"User-Agent": "VoiceStudio"})
|
||||
with urllib.request.urlopen(req, timeout=_DOWNLOAD_TIMEOUT_S) as resp:
|
||||
meta = json.load(resp)
|
||||
version = meta["info"]["version"]
|
||||
|
||||
@@ -6,13 +6,13 @@ cloning, and cinematic video dubbing — fully local, no API keys, no accounts.
|
||||
|
||||
[](https://hub.docker.com/r/palashdeb/omnivoice-studio)
|
||||
[](https://hub.docker.com/r/palashdeb/omnivoice-studio/tags)
|
||||
[](https://github.com/debpalash/OmniVoice-Studio)
|
||||
[](https://github.com/debpalash/OmniVoice-Studio/blob/main/LICENSE)
|
||||
[](https://github.com/debpalash/VoiceStudio)
|
||||
[](https://github.com/debpalash/VoiceStudio/blob/main/LICENSE)
|
||||
[](https://discord.gg/bzQavDfVV9)
|
||||
|
||||
[](https://trendshift.io/repositories/28176?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-28176)
|
||||
[](https://trendshift.io/repositories/28176?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-28176)
|
||||
|
||||

|
||||

|
||||
|
||||
OmniVoice runs entirely on your own hardware (CUDA / MPS / ROCm / CPU
|
||||
auto-detect) — nothing is sent to the cloud. This image is the **headless
|
||||
@@ -77,10 +77,10 @@ docker run -d --name omnivoice \
|
||||
Podman users: same two `--device` flags (Quadlet: `AddDevice=/dev/kfd` +
|
||||
`AddDevice=/dev/dri`). On RDNA3 consumer cards (RX 7900 XTX/XT), add
|
||||
`-e HSA_OVERRIDE_GFX_VERSION=11.0.0` if the GPU isn't detected — details in
|
||||
the [Docker install guide](https://github.com/debpalash/OmniVoice-Studio/blob/main/docs/install/docker.md).
|
||||
the [Docker install guide](https://github.com/debpalash/VoiceStudio/blob/main/docs/install/docker.md).
|
||||
|
||||
There's also a Compose file in the repo with `cpu` / `gpu` / `rocm` profiles
|
||||
— see the [Docker install guide](https://github.com/debpalash/OmniVoice-Studio/blob/main/docs/install/docker.md).
|
||||
— see the [Docker install guide](https://github.com/debpalash/VoiceStudio/blob/main/docs/install/docker.md).
|
||||
|
||||
---
|
||||
|
||||
@@ -100,7 +100,7 @@ There's also a Compose file in the repo with `cpu` / `gpu` / `rocm` profiles
|
||||
Preview builds always come from `main` and never version-sort below `:stable`,
|
||||
so upgrades flow naturally. The same images and tags
|
||||
are mirrored on GHCR at
|
||||
[`ghcr.io/debpalash/omnivoice-studio`](https://github.com/debpalash/OmniVoice-Studio/pkgs/container/omnivoice-studio).
|
||||
[`ghcr.io/debpalash/omnivoice-studio`](https://github.com/debpalash/VoiceStudio/pkgs/container/omnivoice-studio).
|
||||
|
||||
---
|
||||
|
||||
@@ -153,9 +153,9 @@ more), auto-detected and selectable in Settings.
|
||||
|
||||
## Links
|
||||
|
||||
- **Source & full install docs:** <https://github.com/debpalash/OmniVoice-Studio>
|
||||
- **Docker guide:** <https://github.com/debpalash/OmniVoice-Studio/blob/main/docs/install/docker.md>
|
||||
- **Troubleshooting:** <https://github.com/debpalash/OmniVoice-Studio/blob/main/docs/install/troubleshooting.md>
|
||||
- **Source & full install docs:** <https://github.com/debpalash/VoiceStudio>
|
||||
- **Docker guide:** <https://github.com/debpalash/VoiceStudio/blob/main/docs/install/docker.md>
|
||||
- **Troubleshooting:** <https://github.com/debpalash/VoiceStudio/blob/main/docs/install/troubleshooting.md>
|
||||
- **Community / support:** [Discord](https://discord.gg/bzQavDfVV9)
|
||||
|
||||
OmniVoice Studio is in active beta and licensed under AGPL-3.0.
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ The private key needs to live in **GitHub Actions Secrets** so CI can sign each
|
||||
```
|
||||
cat ~/.tauri/omnivoice-updater.key
|
||||
```
|
||||
2. GitHub → Settings → Secrets and variables → Actions → **New repository secret** (on `debpalash/OmniVoice-Studio`, which is where the updater endpoint points):
|
||||
2. GitHub → Settings → Secrets and variables → Actions → **New repository secret** (on `debpalash/VoiceStudio`, which is where the updater endpoint points):
|
||||
- Name: `TAURI_SIGNING_PRIVATE_KEY`
|
||||
- Value: paste the full contents (including the `untrusted comment:` header line)
|
||||
3. Add a second secret:
|
||||
@@ -30,7 +30,7 @@ No Apple Developer / Windows signing certs needed for v1. Apps ship unsigned; fi
|
||||
## 3. What the updater does
|
||||
|
||||
On every app launch, the webview:
|
||||
1. Fetches `https://github.com/debpalash/OmniVoice-Studio/releases/latest/download/latest.json`
|
||||
1. Fetches `https://github.com/debpalash/VoiceStudio/releases/latest/download/latest.json`
|
||||
2. Compares the version in `latest.json` to the running app's version (from `tauri.conf.json`)
|
||||
3. If newer, shows a native dialog: *"A new version (x.y.z) is available. Download and install now?"*
|
||||
4. If user accepts, downloads the signed update bundle, verifies the minisign signature against the embedded pubkey, replaces the app in place, relaunches.
|
||||
@@ -83,7 +83,7 @@ The `Desktop Release` workflow fires on tag push. It builds four targets in para
|
||||
Each runner signs the updater payload with the stored `TAURI_SIGNING_PRIVATE_KEY`, merges into a single `latest.json`, and attaches everything to the draft release.
|
||||
|
||||
Workflow runtime: **~20-40 minutes** (PyInstaller + four platform builds). Follow progress at:
|
||||
`https://github.com/debpalash/OmniVoice-Studio/actions`
|
||||
`https://github.com/debpalash/VoiceStudio/actions`
|
||||
|
||||
When it finishes, the draft release needs manual publishing — GitHub → Releases → **Edit** the draft → **Publish release**. Once published, existing clients detect the update on their next launch.
|
||||
|
||||
@@ -127,7 +127,7 @@ Two options:
|
||||
**Option A — dry run the manifest:**
|
||||
After a release is published, hit the updater URL manually:
|
||||
```
|
||||
curl -L https://github.com/debpalash/OmniVoice-Studio/releases/latest/download/latest.json | jq
|
||||
curl -L https://github.com/debpalash/VoiceStudio/releases/latest/download/latest.json | jq
|
||||
```
|
||||
You should see platform-keyed download URLs + minisign signatures. If that JSON looks right, clients will pick it up.
|
||||
|
||||
|
||||
@@ -928,7 +928,7 @@ content is in [positioning moves](#positioning-moves).*
|
||||
## Roadmap directions (community discussion #346)
|
||||
|
||||
*Researched 2026-06-12 (third pass, four research agents + five verification
|
||||
sub-agents). The maintainer's [discussion #346](https://github.com/debpalash/OmniVoice-Studio/discussions/346)
|
||||
sub-agents). The maintainer's [discussion #346](https://github.com/debpalash/VoiceStudio/discussions/346)
|
||||
announced a feature roadmap toward full ElevenLabs feature-parity. This section
|
||||
grounds each direction in the landscape: what exists, what's license-clean, what
|
||||
the honest constraints are, and a scope ladder per direction.*
|
||||
|
||||
@@ -43,7 +43,7 @@ apps, or pick a smaller variant (CosyVoice-300M without instruct).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **Issue [#55](https://github.com/debpalash/OmniVoice-Studio/issues/55):**
|
||||
- **Issue [#55](https://github.com/debpalash/VoiceStudio/issues/55):**
|
||||
CosyVoice install clashing with IndexTTS — fixed in v0.3+ via per-engine
|
||||
venvs.
|
||||
- For other errors, capture the splash-screen log (Settings → Logs → Backend)
|
||||
|
||||
@@ -4,7 +4,7 @@ For headless servers, dedicated GPUs, or "I want one command" deployments.
|
||||
The docker image bundles the backend; the UI is served over HTTP and you open
|
||||
it in a normal browser.
|
||||
|
||||
**Official images:** [`ghcr.io/debpalash/omnivoice-studio`](https://github.com/debpalash/OmniVoice-Studio/pkgs/container/omnivoice-studio)
|
||||
**Official images:** [`ghcr.io/debpalash/omnivoice-studio`](https://github.com/debpalash/VoiceStudio/pkgs/container/omnivoice-studio)
|
||||
and [`palashdeb/omnivoice-studio` on Docker Hub](https://hub.docker.com/r/palashdeb/omnivoice-studio) — same images, same tags.
|
||||
|
||||
> **Image ↔ version mapping**
|
||||
|
||||
@@ -48,7 +48,7 @@ Everything above, plus the toolchain:
|
||||
## Install (from source)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git
|
||||
git clone https://github.com/debpalash/VoiceStudio.git
|
||||
cd OmniVoice-Studio
|
||||
bun install
|
||||
bun run desktop-prod
|
||||
@@ -60,7 +60,7 @@ model weights (~2.4 GB). Subsequent launches start in seconds.
|
||||
## Install (AppImage)
|
||||
|
||||
Download the latest AppImage from the
|
||||
[Releases page](https://github.com/debpalash/OmniVoice-Studio/releases/latest),
|
||||
[Releases page](https://github.com/debpalash/VoiceStudio/releases/latest),
|
||||
make it executable, and run:
|
||||
|
||||
```bash
|
||||
@@ -170,15 +170,15 @@ older than ours and you'd rather keep the newer bundled one.)
|
||||
If you are on v0.4.0 or older, either update or build from source:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git
|
||||
git clone https://github.com/debpalash/VoiceStudio.git
|
||||
cd OmniVoice-Studio
|
||||
bun install
|
||||
bun run desktop-prod
|
||||
```
|
||||
|
||||
Tracking issues: [#62](https://github.com/debpalash/OmniVoice-Studio/issues/62),
|
||||
[#961](https://github.com/debpalash/OmniVoice-Studio/issues/961),
|
||||
[#1258](https://github.com/debpalash/OmniVoice-Studio/issues/1258).
|
||||
Tracking issues: [#62](https://github.com/debpalash/VoiceStudio/issues/62),
|
||||
[#961](https://github.com/debpalash/VoiceStudio/issues/961),
|
||||
[#1258](https://github.com/debpalash/VoiceStudio/issues/1258).
|
||||
|
||||
## AppImage: "No microphone found" while the raw binary records fine
|
||||
|
||||
@@ -234,7 +234,7 @@ If you set `XDG_CACHE_HOME`, the path follows it
|
||||
(`$XDG_CACHE_HOME/OmniVoice/gstreamer-registry.bin`); `~/.cache` is the default
|
||||
when it is unset.
|
||||
|
||||
Tracking issue: [#1333](https://github.com/debpalash/OmniVoice-Studio/issues/1333).
|
||||
Tracking issue: [#1333](https://github.com/debpalash/VoiceStudio/issues/1333).
|
||||
|
||||
## .deb ffprobe conflict
|
||||
|
||||
@@ -349,7 +349,7 @@ Notes:
|
||||
- ZLUDA (CUDA-on-ROCm translation) can work but is unsupported here — prefer a
|
||||
native ROCm wheel.
|
||||
|
||||
Tracking issue: [#124](https://github.com/debpalash/OmniVoice-Studio/issues/124).
|
||||
Tracking issue: [#124](https://github.com/debpalash/VoiceStudio/issues/124).
|
||||
|
||||
## Hugging Face token (optional but recommended)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ working OmniVoice Studio install on macOS (Apple Silicon).
|
||||
> (macOS x86_64) wheels after 2.2.x, and OmniVoice's dependencies require a
|
||||
> newer torch — so the first-run dependency install can never succeed, from
|
||||
> the DMG *or* from source
|
||||
> ([#889](https://github.com/debpalash/OmniVoice-Studio/issues/889)). The app
|
||||
> ([#889](https://github.com/debpalash/VoiceStudio/issues/889)). The app
|
||||
> detects this at first launch and tells you directly instead of failing with
|
||||
> a raw installer error. Your options on an Intel Mac: point the UI at a
|
||||
> remote backend running on another machine (**Settings → Sharing → Remote
|
||||
@@ -52,7 +52,7 @@ Optional but recommended:
|
||||
## Install (from source)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git
|
||||
git clone https://github.com/debpalash/VoiceStudio.git
|
||||
cd OmniVoice-Studio
|
||||
bun install
|
||||
bun run desktop-prod
|
||||
@@ -65,7 +65,7 @@ live progress for every step.
|
||||
## Install (pre-built `.app`)
|
||||
|
||||
Download the latest DMG from the
|
||||
[Releases page](https://github.com/debpalash/OmniVoice-Studio/releases/latest),
|
||||
[Releases page](https://github.com/debpalash/VoiceStudio/releases/latest),
|
||||
double-click to mount, drag **OmniVoice Studio.app** into `/Applications`.
|
||||
|
||||
Pick the DMG that matches your Mac (check **Apple menu → About This Mac → Chip/Processor**):
|
||||
@@ -73,7 +73,7 @@ Pick the DMG that matches your Mac (check **Apple menu → About This Mac → Ch
|
||||
| Mac | DMG to download |
|
||||
|-----|-----------------|
|
||||
| Apple Silicon (M1/M2/M3/M4…) | `OmniVoice.Studio_<version>_aarch64.dmg` |
|
||||
| Intel | `OmniVoice.Studio_<version>_x64.dmg` — **UI only**: the local backend cannot run on Intel ([#889](https://github.com/debpalash/OmniVoice-Studio/issues/889)) |
|
||||
| Intel | `OmniVoice.Studio_<version>_x64.dmg` — **UI only**: the local backend cannot run on Intel ([#889](https://github.com/debpalash/VoiceStudio/issues/889)) |
|
||||
|
||||
The architectures are **not** interchangeable: an Intel Mac cannot run the
|
||||
`aarch64` build (Rosetta 2 only translates the other direction — it lets Apple
|
||||
@@ -158,7 +158,7 @@ without the quarantine step.
|
||||
never regresses; pin `ASR_MODEL_PARAKEET_MLX` to force it).
|
||||
- **Intel Macs:** the local backend is **unsupported** — PyTorch no longer
|
||||
ships Intel-Mac wheels, so the Python environment can never install
|
||||
([#889](https://github.com/debpalash/OmniVoice-Studio/issues/889)). The UI
|
||||
([#889](https://github.com/debpalash/VoiceStudio/issues/889)). The UI
|
||||
works only when pointed at a remote backend (**Settings → Sharing → Remote
|
||||
backend**).
|
||||
|
||||
|
||||
@@ -58,8 +58,8 @@ backend **`.venv`** folder to its exclusions (Windows Security → Virus & threa
|
||||
protection → Exclusions). The app's auto-repair now uses `--reinstall` too, so a
|
||||
fresh install heals itself.
|
||||
|
||||
**Linked issues:** [#58](https://github.com/debpalash/OmniVoice-Studio/issues/58),
|
||||
[#248](https://github.com/debpalash/OmniVoice-Studio/issues/248)
|
||||
**Linked issues:** [#58](https://github.com/debpalash/VoiceStudio/issues/58),
|
||||
[#248](https://github.com/debpalash/VoiceStudio/issues/248)
|
||||
|
||||
### 1a. Model load fails: `[Errno 2] No such file or directory: '…/transformers/…/modeling_*.py'`
|
||||
|
||||
@@ -98,7 +98,7 @@ and transformers itself is fine.
|
||||
|
||||
**Fix:** reinstall the trio **together, at the pinned versions** — a plain
|
||||
unpinned reinstall can itself resolve a drifted pair
|
||||
([#1357](https://github.com/debpalash/OmniVoice-Studio/issues/1357)):
|
||||
([#1357](https://github.com/debpalash/VoiceStudio/issues/1357)):
|
||||
|
||||
```
|
||||
uv pip install --python .venv --reinstall torch==2.8.0 torchaudio==2.8.0 torchvision==0.23.0 transformers
|
||||
@@ -110,8 +110,8 @@ desktop installs don't ship that file, which is why the literal pins are shown).
|
||||
They carry no `+cu128`/`+rocm` suffix on purpose — vendor GPU builds match the
|
||||
pins rather than being replaced.
|
||||
|
||||
**Linked issues:** [#1357](https://github.com/debpalash/OmniVoice-Studio/issues/1357),
|
||||
[#1376](https://github.com/debpalash/OmniVoice-Studio/issues/1376)
|
||||
**Linked issues:** [#1357](https://github.com/debpalash/VoiceStudio/issues/1357),
|
||||
[#1376](https://github.com/debpalash/VoiceStudio/issues/1376)
|
||||
|
||||
### 1b. Dubbing: `ASR backend initialization failed: No module named 'lightning_fabric'`
|
||||
|
||||
@@ -136,7 +136,7 @@ marked unavailable (Settings → Engines shows why, with this repair command)
|
||||
and dubbing automatically falls through to **faster-whisper** instead of
|
||||
failing outright.
|
||||
|
||||
**Linked issue:** [#1185](https://github.com/debpalash/OmniVoice-Studio/issues/1185)
|
||||
**Linked issue:** [#1185](https://github.com/debpalash/VoiceStudio/issues/1185)
|
||||
|
||||
## 2. HF 401 / pyannote license not accepted
|
||||
|
||||
@@ -157,7 +157,7 @@ before the token works for downloads.
|
||||
3. Retry the job. The token state in **Settings → API Keys** should now show
|
||||
the "App" row with a green check next to your username.
|
||||
|
||||
**Linked issue:** [#35](https://github.com/debpalash/OmniVoice-Studio/issues/35)
|
||||
**Linked issue:** [#35](https://github.com/debpalash/VoiceStudio/issues/35)
|
||||
|
||||
## 3. Gatekeeper quarantine on macOS
|
||||
|
||||
@@ -183,8 +183,8 @@ EGL error), then `WEBKIT_DISABLE_COMPOSITING_MODE=1` — full walkthrough incl.
|
||||
the software-rendering last resort:
|
||||
[linux.md#appimage-white-screen-on-fedora-44--ubuntu-2404](linux.md#appimage-white-screen-on-fedora-44--ubuntu-2404).
|
||||
|
||||
**Linked issues:** [#62](https://github.com/debpalash/OmniVoice-Studio/issues/62),
|
||||
[#961](https://github.com/debpalash/OmniVoice-Studio/issues/961)
|
||||
**Linked issues:** [#62](https://github.com/debpalash/VoiceStudio/issues/62),
|
||||
[#961](https://github.com/debpalash/VoiceStudio/issues/961)
|
||||
|
||||
## 5. Windows Triton / torch.compile OOM
|
||||
|
||||
@@ -197,7 +197,7 @@ peak memory footprint that exceeds free VRAM. Windows-only quirk.
|
||||
|
||||
**Fix:** see [windows.md#torch-compile-oom](windows.md#torch-compile-oom).
|
||||
|
||||
**Linked issue:** [#65](https://github.com/debpalash/OmniVoice-Studio/issues/65)
|
||||
**Linked issue:** [#65](https://github.com/debpalash/VoiceStudio/issues/65)
|
||||
|
||||
## 6. `uv venv` Python download fails (restricted network)
|
||||
|
||||
@@ -210,8 +210,8 @@ Russia, sometimes on corporate proxies.
|
||||
`UV_HTTP_TIMEOUT=120`, `UV_HTTP_RETRIES=5`, `UV_PYTHON_PREFERENCE=only-system`).
|
||||
|
||||
**Linked issues:**
|
||||
[#57](https://github.com/debpalash/OmniVoice-Studio/issues/57),
|
||||
[#60](https://github.com/debpalash/OmniVoice-Studio/issues/60).
|
||||
[#57](https://github.com/debpalash/VoiceStudio/issues/57),
|
||||
[#60](https://github.com/debpalash/VoiceStudio/issues/60).
|
||||
|
||||
## 7. `.deb` ffprobe path conflict on upgrade
|
||||
|
||||
@@ -272,7 +272,7 @@ falling back to faster-whisper`.
|
||||
that Intel Macs can no longer run the local backend at all — PyTorch dropped
|
||||
Intel-Mac wheels, so this entry only applies to historical installs (see
|
||||
[macos.md](macos.md) and
|
||||
[#889](https://github.com/debpalash/OmniVoice-Studio/issues/889)).
|
||||
[#889](https://github.com/debpalash/VoiceStudio/issues/889)).
|
||||
|
||||
## 10. Windows: `Could not locate cudnn_ops_infer64_8.dll` during transcription
|
||||
|
||||
@@ -285,11 +285,11 @@ WhisperX or faster-whisper selected.
|
||||
from `.venv\Lib\site-packages\cudnn8_compat\` — but the step that installs that
|
||||
folder only ever lived in the dev-loop setup script, which isn't bundled into
|
||||
the packaged app. **Packaged installs never had these libraries at all**, so
|
||||
reinstalling never fixed it ([#827](https://github.com/debpalash/OmniVoice-Studio/issues/827)).
|
||||
reinstalling never fixed it ([#827](https://github.com/debpalash/VoiceStudio/issues/827)).
|
||||
|
||||
**Fix:** update to the latest build and relaunch — the app's bootstrap now
|
||||
detects a CUDA machine and installs the cuDNN-8 libraries into the backend venv
|
||||
automatically at launch ([#869](https://github.com/debpalash/OmniVoice-Studio/pull/869)).
|
||||
automatically at launch ([#869](https://github.com/debpalash/VoiceStudio/pull/869)).
|
||||
(The check is skipped — and its negative result cached — on CPU/AMD/Apple
|
||||
machines, so non-NVIDIA launches stay instant.)
|
||||
|
||||
@@ -320,7 +320,7 @@ its own venv). For v0.3, workaround: install only one of the conflicting
|
||||
engines per OmniVoice copy. See [docs/engines/cosyvoice.md](../engines/cosyvoice.md)
|
||||
for the dedicated CosyVoice path.
|
||||
|
||||
**Linked issue:** [#55](https://github.com/debpalash/OmniVoice-Studio/issues/55)
|
||||
**Linked issue:** [#55](https://github.com/debpalash/VoiceStudio/issues/55)
|
||||
|
||||
**Same class, ASR side:** the `nemo-parakeet` ASR engine has the identical
|
||||
problem and currently has **no safe install path** at all — `nemo_toolkit[asr]`
|
||||
@@ -329,7 +329,7 @@ OmniVoice's own `transformers>=5.3` requirement. Installing it into the
|
||||
shared venv breaks the backend outright. Do not `pip install nemo_toolkit`
|
||||
into OmniVoice's environment; if you want to try it, use a separate Python
|
||||
environment. Isolated-venv support for this engine (matching CosyVoice/
|
||||
dots-tts) is tracked in [#974](https://github.com/debpalash/OmniVoice-Studio/issues/974).
|
||||
dots-tts) is tracked in [#974](https://github.com/debpalash/VoiceStudio/issues/974).
|
||||
|
||||
## 12. CUDA PyTorch wheel download fails on first run
|
||||
|
||||
@@ -369,7 +369,7 @@ redirect, so the generic mirror trick doesn't help here.
|
||||
If you don't have an NVIDIA GPU, you don't need the CUDA build at all — a CPU /
|
||||
Apple-Silicon install skips this index entirely.
|
||||
|
||||
**Linked issue:** [#569](https://github.com/debpalash/OmniVoice-Studio/issues/569)
|
||||
**Linked issue:** [#569](https://github.com/debpalash/VoiceStudio/issues/569)
|
||||
|
||||
## 13. Stuck on the download page / incomplete model cache ("only `refs/`")
|
||||
|
||||
@@ -431,7 +431,7 @@ files land where the app looks.)
|
||||
> Newer builds detect an incomplete cache and re-offer the download instead of
|
||||
> stranding you on this page — update once the fix is in your channel.
|
||||
|
||||
**Linked issue:** [#622](https://github.com/debpalash/OmniVoice-Studio/issues/622)
|
||||
**Linked issue:** [#622](https://github.com/debpalash/VoiceStudio/issues/622)
|
||||
|
||||
## 14. "Can't reach the local backend" *during* generation / transcription / dubbing
|
||||
|
||||
@@ -479,7 +479,7 @@ and `OMNIVOICE_GENERATE_TIMEOUT_S` (generation) — both in seconds, default 300
|
||||
default 120). **Raise** them for very long single files/generations, **lower**
|
||||
them to fail faster on a small machine.
|
||||
|
||||
**Two things changed here** ([#1190](https://github.com/debpalash/OmniVoice-Studio/issues/1190)):
|
||||
**Two things changed here** ([#1190](https://github.com/debpalash/VoiceStudio/issues/1190)):
|
||||
|
||||
- **Waiting in line is no longer counted as compute.** The generate budget used
|
||||
to start the moment a job was *queued*, so on a 1-worker machine a request
|
||||
@@ -696,7 +696,7 @@ Without the entitlement, macOS's TCC layer never registers a request, which
|
||||
is exactly why the app never appears in the System Settings list.
|
||||
|
||||
**Fix:** ships in the release after v0.3.12 (the bundle now carries
|
||||
`src-tauri/entitlements.plist` — [#1016](https://github.com/debpalash/OmniVoice-Studio/pull/1016),
|
||||
`src-tauri/entitlements.plist` — [#1016](https://github.com/debpalash/VoiceStudio/pull/1016),
|
||||
contributed by the same person who diagnosed it). Update and live recording
|
||||
works, with a normal macOS permission prompt on first use.
|
||||
|
||||
@@ -705,7 +705,7 @@ other app (Voice Memos, QuickTime, etc.) and upload the resulting file in
|
||||
OmniVoice instead of using live recording — upload-based cloning is
|
||||
unaffected and works normally.
|
||||
|
||||
**Linked issue:** [#1013](https://github.com/debpalash/OmniVoice-Studio/issues/1013)
|
||||
**Linked issue:** [#1013](https://github.com/debpalash/VoiceStudio/issues/1013)
|
||||
|
||||
> **Tip:** current builds surface the live OS grant state in-app — **Settings →
|
||||
> Permissions** shows whether the microphone (and, on macOS, Accessibility) is
|
||||
@@ -752,7 +752,7 @@ OmniVoice now tries, in order: the default GitHub host → a gh-proxy mirror →
|
||||
(`UV_HTTP_TIMEOUT=120`, `UV_HTTP_CONNECT_TIMEOUT=30`, `UV_HTTP_RETRIES=5`);
|
||||
you can raise them further in the environment if a mirror is very slow.
|
||||
|
||||
**Linked issues:** [#130](https://github.com/debpalash/OmniVoice-Studio/issues/130), [#60](https://github.com/debpalash/OmniVoice-Studio/issues/60), [#57](https://github.com/debpalash/OmniVoice-Studio/issues/57)
|
||||
**Linked issues:** [#130](https://github.com/debpalash/VoiceStudio/issues/130), [#60](https://github.com/debpalash/VoiceStudio/issues/60), [#57](https://github.com/debpalash/VoiceStudio/issues/57)
|
||||
|
||||
## Uninstalling / removing all of OmniVoice's data
|
||||
|
||||
@@ -776,4 +776,4 @@ per-platform path list, env-var overrides, portable-mode note, and the steps to
|
||||
remove the app binary itself are in
|
||||
[docs/install/uninstall.md](uninstall.md).
|
||||
|
||||
**Linked issue:** [#1089](https://github.com/debpalash/OmniVoice-Studio/issues/1089)
|
||||
**Linked issue:** [#1089](https://github.com/debpalash/VoiceStudio/issues/1089)
|
||||
|
||||
@@ -54,7 +54,7 @@ see [linux.md — AMD GPU (ROCm)](linux.md#amd-gpu-rocm).
|
||||
Run from a regular (non-admin) PowerShell:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/debpalash/OmniVoice-Studio.git
|
||||
git clone https://github.com/debpalash/VoiceStudio.git
|
||||
cd OmniVoice-Studio
|
||||
bun install
|
||||
bun run desktop-prod
|
||||
@@ -73,7 +73,7 @@ model weights. The splash screen shows progress.
|
||||
## Install (pre-built MSI)
|
||||
|
||||
Download the latest MSI from the
|
||||
[Releases page](https://github.com/debpalash/OmniVoice-Studio/releases/latest),
|
||||
[Releases page](https://github.com/debpalash/VoiceStudio/releases/latest),
|
||||
run it, follow the wizard. The shortcut lands in the Start menu as
|
||||
**OmniVoice Studio**.
|
||||
|
||||
@@ -106,7 +106,7 @@ another drive (`engines\.uv-cache`). An explicit `UV_CACHE_DIR` /
|
||||
|
||||
If an install to a local non-C: drive fails anyway, capture a log with
|
||||
`msiexec /i OmniVoice*.msi /L*V install.log` and
|
||||
[open an issue](https://github.com/debpalash/OmniVoice-Studio/issues) with it
|
||||
[open an issue](https://github.com/debpalash/VoiceStudio/issues) with it
|
||||
— that log shows exactly which step rolled back.
|
||||
|
||||
## Portable install (Windows)
|
||||
@@ -124,7 +124,7 @@ The first-run setup screen offers Portable whenever the folder next to
|
||||
`OmniVoice Studio.exe` is writable. A default MSI install goes to
|
||||
`C:\Program Files`, which is *not* user-writable — that's why Portable shows
|
||||
as greyed out after a default install
|
||||
([#766](https://github.com/debpalash/OmniVoice-Studio/issues/766)). To enable
|
||||
([#766](https://github.com/debpalash/VoiceStudio/issues/766)). To enable
|
||||
it, install to a user-writable folder instead:
|
||||
|
||||
- Re-run the MSI and choose a custom destination folder in the setup wizard
|
||||
@@ -200,7 +200,7 @@ bun run desktop-prod
|
||||
|
||||
This setting is a no-op on macOS and Linux (the OOM is Windows-specific —
|
||||
the `torch.compile` kernel cache behaves differently on the other platforms).
|
||||
Tracking issue: [#65](https://github.com/debpalash/OmniVoice-Studio/issues/65).
|
||||
Tracking issue: [#65](https://github.com/debpalash/VoiceStudio/issues/65).
|
||||
|
||||
## Hugging Face token (optional but recommended)
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ MOSS-TTS-Nano), the heavier cloning engines want a GPU.
|
||||
## Install
|
||||
|
||||
Grab the installer for your OS from the
|
||||
[Releases page](https://github.com/debpalash/OmniVoice-Studio/releases/latest),
|
||||
[Releases page](https://github.com/debpalash/VoiceStudio/releases/latest),
|
||||
then follow the guide for your platform end-to-end:
|
||||
|
||||
* macOS — [docs/install/macos.md](../install/macos.md)
|
||||
@@ -169,6 +169,6 @@ Engines** — the choice applies everywhere synthesis happens.
|
||||
Setup questions get answered in
|
||||
[Discord](https://discord.gg/bzQavDfVV9) (usually within hours), bugs
|
||||
go to
|
||||
[GitHub Issues](https://github.com/debpalash/OmniVoice-Studio/issues)
|
||||
[GitHub Issues](https://github.com/debpalash/VoiceStudio/issues)
|
||||
— see [SUPPORT.md](../../.github/SUPPORT.md) for what to include. Welcome
|
||||
over.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# ElevenLabs-Parity Program — Implementation Spec
|
||||
|
||||
**Date:** 2026-06-12
|
||||
**Status:** Proposed — derived from [discussion #346](https://github.com/debpalash/OmniVoice-Studio/discussions/346) and the research in [docs/competitive-analysis.md](../competitive-analysis.md) (PR #345)
|
||||
**Status:** Proposed — derived from [discussion #346](https://github.com/debpalash/VoiceStudio/discussions/346) and the research in [docs/competitive-analysis.md](../competitive-analysis.md) (PR #345)
|
||||
**Owner:** debpalash
|
||||
|
||||
## Goal
|
||||
|
||||
@@ -376,7 +376,7 @@ Append (the file already uses `reqwest`/`serde` for `check_update`; reuse the sa
|
||||
use serde::Serialize;
|
||||
|
||||
const RELEASES_API: &str =
|
||||
"https://api.github.com/repos/debpalash/OmniVoice-Studio/releases?per_page=30";
|
||||
"https://api.github.com/repos/debpalash/VoiceStudio/releases?per_page=30";
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct ReleaseInfo {
|
||||
@@ -395,7 +395,7 @@ pub async fn list_releases(_channel: String) -> Result<Vec<ReleaseInfo>, String>
|
||||
let client = reqwest::Client::new();
|
||||
let resp = client
|
||||
.get(RELEASES_API)
|
||||
.header("User-Agent", "OmniVoice-Studio")
|
||||
.header("User-Agent", "VoiceStudio")
|
||||
.header("Accept", "application/vnd.github+json")
|
||||
.send()
|
||||
.await
|
||||
|
||||
@@ -19,9 +19,9 @@ use tauri::{AppHandle, Emitter};
|
||||
use tauri_plugin_updater::{Update, Updater, UpdaterExt};
|
||||
|
||||
const STABLE_MANIFEST: &str =
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/latest/download/latest.json";
|
||||
"https://github.com/debpalash/VoiceStudio/releases/latest/download/latest.json";
|
||||
const PREVIEW_MANIFEST: &str =
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/download/preview/latest.json";
|
||||
"https://github.com/debpalash/VoiceStudio/releases/download/preview/latest.json";
|
||||
|
||||
/// Cross-channel ordering of OmniVoice build versions (#326).
|
||||
///
|
||||
@@ -189,7 +189,7 @@ pub async fn install_update(app: AppHandle, channel: String) -> Result<(), Strin
|
||||
// ── GitHub releases (changelog/history panel) ─────────────────────────────
|
||||
|
||||
const RELEASES_API: &str =
|
||||
"https://api.github.com/repos/debpalash/OmniVoice-Studio/releases?per_page=30";
|
||||
"https://api.github.com/repos/debpalash/VoiceStudio/releases?per_page=30";
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct ReleaseInfo {
|
||||
@@ -211,7 +211,7 @@ pub async fn list_releases(_channel: String) -> Result<Vec<ReleaseInfo>, String>
|
||||
.unwrap_or_default();
|
||||
let resp = client
|
||||
.get(RELEASES_API)
|
||||
.header("User-Agent", "OmniVoice-Studio")
|
||||
.header("User-Agent", "VoiceStudio")
|
||||
.header("Accept", "application/vnd.github+json")
|
||||
.send()
|
||||
.await
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
"updater": {
|
||||
"active": true,
|
||||
"endpoints": [
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/latest/download/latest.json"
|
||||
"https://github.com/debpalash/VoiceStudio/releases/latest/download/latest.json"
|
||||
],
|
||||
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDhFMDQ1QkZCQ0I4RDlCQkYKUldTL200M0wrMXNFamdPSGF3VkUzVjBRY1FFOE0yTkxSMVZKNUowL2wyZEw2OG1TWXNLMDlSeTQK",
|
||||
"dialog": false
|
||||
|
||||
@@ -35,7 +35,7 @@ describe('AboutTab — external links', () => {
|
||||
expect(openExternal).toHaveBeenCalledWith(REPO_URL);
|
||||
// Belt-and-braces: the constant itself must point at this project, not a
|
||||
// lookalike (the original bug linked github.com/k2-fsa/OmniVoice).
|
||||
expect(REPO_URL).toBe('https://github.com/debpalash/OmniVoice-Studio');
|
||||
expect(REPO_URL).toBe('https://github.com/debpalash/VoiceStudio');
|
||||
});
|
||||
|
||||
it('has no "Model card" link — the app is multi-engine with no single model card', () => {
|
||||
|
||||
@@ -23,7 +23,7 @@ import { askConfirm } from './native';
|
||||
import { SettingsSection, SettingRow, SettingsInput, InfoHint } from './primitives';
|
||||
import { Button, Badge, Select } from '../../ui';
|
||||
|
||||
const MCP_DOCS_URL = 'https://github.com/debpalash/OmniVoice-Studio/blob/main/docs/mcp.md';
|
||||
const MCP_DOCS_URL = 'https://github.com/debpalash/VoiceStudio/blob/main/docs/mcp.md';
|
||||
|
||||
export default function MCPBindingsPanel() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -118,7 +118,7 @@ export default function PerformancePanel() {
|
||||
// Trans injects the link text ("#65") from the translation string.
|
||||
issueLink: (
|
||||
<a
|
||||
href="https://github.com/debpalash/OmniVoice-Studio/issues/65"
|
||||
href="https://github.com/debpalash/VoiceStudio/issues/65"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
/>
|
||||
|
||||
@@ -23,8 +23,7 @@ import { askConfirm } from '../../utils/dialog';
|
||||
import { SettingsSection, SettingRow, InfoHint, SettingsInput } from './primitives';
|
||||
import { Button, Badge } from '../../ui';
|
||||
|
||||
const REMOTE_GPU_DOCS_URL =
|
||||
'https://github.com/debpalash/OmniVoice-Studio/blob/main/docs/remote-gpu.md';
|
||||
const REMOTE_GPU_DOCS_URL = 'https://github.com/debpalash/VoiceStudio/blob/main/docs/remote-gpu.md';
|
||||
|
||||
/** A saved backend base must be a parseable absolute http(s) URL. */
|
||||
export function isValidBackendUrl(value) {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
import { KOFI_URL } from '../utils/donateLinks';
|
||||
|
||||
const REPO = 'https://github.com/debpalash/OmniVoice-Studio';
|
||||
const REPO = 'https://github.com/debpalash/VoiceStudio';
|
||||
|
||||
/**
|
||||
* Active sponsors. EMPTY until the first sponsor signs on — the Support page
|
||||
|
||||
@@ -24,7 +24,7 @@ import ReportBugButton from '../components/ReportBugButton';
|
||||
// One home for every outward channel. The repo/Discord/security URLs match the
|
||||
// values the rest of the app uses (bug reporter, footer, SECURITY.md) so a link
|
||||
// change here can never leave one surface pointing somewhere stale (#contact).
|
||||
const REPO_URL = 'https://github.com/debpalash/OmniVoice-Studio';
|
||||
const REPO_URL = 'https://github.com/debpalash/VoiceStudio';
|
||||
const ISSUES_URL = `${REPO_URL}/issues`;
|
||||
const DISCORD_URL = 'https://discord.gg/bzQavDfVV9';
|
||||
// GitHub Security Advisories = the private "report a vulnerability" flow that
|
||||
|
||||
@@ -213,8 +213,8 @@ export default function Settings() {
|
||||
`- **Update channel:** ${updateChannel}`,
|
||||
`- **Update endpoint:** ${
|
||||
updateChannel === 'preview'
|
||||
? 'https://github.com/debpalash/OmniVoice-Studio/releases/download/preview/latest.json'
|
||||
: 'https://github.com/debpalash/OmniVoice-Studio/releases/latest/download/latest.json'
|
||||
? 'https://github.com/debpalash/VoiceStudio/releases/download/preview/latest.json'
|
||||
: 'https://github.com/debpalash/VoiceStudio/releases/latest/download/latest.json'
|
||||
}`,
|
||||
`- **User agent:** ${ua}`,
|
||||
];
|
||||
|
||||
@@ -361,7 +361,7 @@ function SupportView() {
|
||||
variant="subtle"
|
||||
size="sm"
|
||||
leading={<Star size={14} />}
|
||||
onClick={() => openExternal('https://github.com/debpalash/OmniVoice-Studio')}
|
||||
onClick={() => openExternal('https://github.com/debpalash/VoiceStudio')}
|
||||
>
|
||||
{t('support.star_github')}
|
||||
</Button>
|
||||
|
||||
@@ -14,7 +14,7 @@ vi.mock('../api/external', () => ({ openExternal }));
|
||||
import ContactPage from '../pages/ContactPage';
|
||||
import { useAppStore } from '../store';
|
||||
|
||||
const REPO = 'https://github.com/debpalash/OmniVoice-Studio';
|
||||
const REPO = 'https://github.com/debpalash/VoiceStudio';
|
||||
|
||||
beforeEach(() => {
|
||||
openExternal.mockClear();
|
||||
|
||||
@@ -22,7 +22,7 @@ import { deploymentMode } from './deploymentMode';
|
||||
|
||||
/** Canonical project repository — every GitHub link in the app derives from
|
||||
* this single constant so a fork/rename can never leave stale links behind. */
|
||||
export const REPO_URL = 'https://github.com/debpalash/OmniVoice-Studio';
|
||||
export const REPO_URL = 'https://github.com/debpalash/VoiceStudio';
|
||||
|
||||
export const ISSUES_URL = `${REPO_URL}/issues/new`;
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ describe('buildIssueSearchUrl', () => {
|
||||
new Error('CUDA error 700 at /home/eve/cache: illegal memory access'),
|
||||
);
|
||||
const q = decodeURIComponent(url.split('q=')[1]);
|
||||
expect(url).toContain('github.com/debpalash/OmniVoice-Studio/issues?q=');
|
||||
expect(url).toContain('github.com/debpalash/VoiceStudio/issues?q=');
|
||||
expect(q).toContain('CUDA error');
|
||||
expect(q).not.toContain('700'); // machine-specific noise stripped
|
||||
expect(q).not.toContain('/home/eve'); // scrubbed + punctuation-stripped
|
||||
|
||||
@@ -52,7 +52,7 @@ describe('errorDocsMap', () => {
|
||||
});
|
||||
|
||||
it('every URL resolves under the project repo blob', () => {
|
||||
const base = 'https://github.com/debpalash/OmniVoice-Studio/blob/main';
|
||||
const base = 'https://github.com/debpalash/VoiceStudio/blob/main';
|
||||
for (const [key, url] of Object.entries(ERROR_DOCS)) {
|
||||
expect(url.startsWith(base), `${key} not under ${base}: ${url}`).toBe(true);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
import { openExternal } from '../api/external';
|
||||
|
||||
const BASE = 'https://github.com/debpalash/OmniVoice-Studio/blob/main';
|
||||
const BASE = 'https://github.com/debpalash/VoiceStudio/blob/main';
|
||||
|
||||
export const ERROR_DOCS: Record<string, string> = {
|
||||
GATEKEEPER_QUARANTINE: `${BASE}/docs/install/macos.md#gatekeeper-quarantine`,
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"source": [
|
||||
"# OmniVoice Studio on Google Colab\n",
|
||||
"\n",
|
||||
"Run the full [OmniVoice Studio](https://github.com/debpalash/OmniVoice-Studio) app — voice cloning, voice design, video dubbing, and TTS in 646 languages — on a free Colab GPU, web UI included.\n",
|
||||
"Run the full [OmniVoice Studio](https://github.com/debpalash/VoiceStudio) app — voice cloning, voice design, video dubbing, and TTS in 646 languages — on a free Colab GPU, web UI included.\n",
|
||||
"\n",
|
||||
"**Before you start:** `Runtime → Change runtime type → T4 GPU` (the notebook also works on CPU, but generation is much slower).\n",
|
||||
"\n",
|
||||
@@ -43,7 +43,7 @@
|
||||
"| Web UI | Built in-notebook with `bun` (~2 min, once per session) | Official releases ship desktop installers only — there is no prebuilt standalone web bundle to download. The backend serves the built SPA itself from `frontend/dist`. |\n",
|
||||
"| Opening the app | Colab's built-in kernel port proxy | No third-party tunnel binaries; the URL is private to your Google session. (A `cloudflared` public-URL alternative is documented in the launch cell.) |\n",
|
||||
"\n",
|
||||
"Issues with this notebook are OmniVoice issues — report them at [debpalash/OmniVoice-Studio/issues](https://github.com/debpalash/OmniVoice-Studio/issues).\n"
|
||||
"Issues with this notebook are OmniVoice issues — report them at [debpalash/OmniVoice-Studio/issues](https://github.com/debpalash/VoiceStudio/issues).\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -89,7 +89,7 @@
|
||||
"import subprocess\n",
|
||||
"import sys\n",
|
||||
"\n",
|
||||
"REPO_URL = \"https://github.com/debpalash/OmniVoice-Studio\"\n",
|
||||
"REPO_URL = \"https://github.com/debpalash/VoiceStudio\"\n",
|
||||
"REPO_DIR = \"/content/OmniVoice-Studio\"\n",
|
||||
"BUN = \"/root/.bun/bin/bun\"\n",
|
||||
"\n",
|
||||
@@ -107,7 +107,7 @@
|
||||
" f\"\\nFAILED: {what or shown} (exit code {rc}).\\n\"\n",
|
||||
" \"Scroll up for the underlying error. Re-running this cell is safe.\\n\"\n",
|
||||
" \"Still stuck? Open an issue with the output above:\\n\"\n",
|
||||
" \" https://github.com/debpalash/OmniVoice-Studio/issues\"\n",
|
||||
" \" https://github.com/debpalash/VoiceStudio/issues\"\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
"# 2a. Clone the repo (reused if already present)\n",
|
||||
@@ -304,7 +304,7 @@
|
||||
" \"--- end of log ---\\n\"\n",
|
||||
" \"Fix the error above (usually a missing dependency: re-run cell 2),\\n\"\n",
|
||||
" \"then re-run this cell. Still stuck? Attach the log to an issue:\\n\"\n",
|
||||
" \" https://github.com/debpalash/OmniVoice-Studio/issues\"\n",
|
||||
" \" https://github.com/debpalash/VoiceStudio/issues\"\n",
|
||||
" )\n"
|
||||
]
|
||||
},
|
||||
@@ -417,7 +417,7 @@
|
||||
"BASE = \"http://127.0.0.1:3900\"\n",
|
||||
"DEMO_DIR = \"/content/omnivoice_demos\"\n",
|
||||
"LOG_HINT = (\"Backend log: /content/omnivoice_backend.log — attach it when \"\n",
|
||||
" \"reporting: https://github.com/debpalash/OmniVoice-Studio/issues\")\n",
|
||||
" \"reporting: https://github.com/debpalash/VoiceStudio/issues\")\n",
|
||||
"os.makedirs(DEMO_DIR, exist_ok=True)\n",
|
||||
"\n",
|
||||
"# Shared sample lines (cells 9/10/12/13 reuse these to stay self-contained).\n",
|
||||
@@ -1136,7 +1136,7 @@
|
||||
"\n",
|
||||
"**Backend logs** — `/content/omnivoice_backend.log`. The launch, smoke-test, and feature cells print the relevant tail or point here on failure; attach the full file when reporting an issue.\n",
|
||||
"\n",
|
||||
"**Reporting issues** — this notebook is maintained in the main repo: [debpalash/OmniVoice-Studio/issues](https://github.com/debpalash/OmniVoice-Studio/issues).\n"
|
||||
"**Reporting issues** — this notebook is maintained in the main repo: [debpalash/OmniVoice-Studio/issues](https://github.com/debpalash/VoiceStudio/issues).\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -96,7 +96,7 @@ function failNoBash() {
|
||||
" bun run desktop",
|
||||
"",
|
||||
" 3. Skip building from source — download the installer:",
|
||||
" https://github.com/debpalash/OmniVoice-Studio/releases/latest",
|
||||
" https://github.com/debpalash/VoiceStudio/releases/latest",
|
||||
"",
|
||||
" More help: docs/install/windows.md",
|
||||
"",
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
# Run once, then `./run.sh` each time you want to use the app.
|
||||
#
|
||||
# Usage:
|
||||
# curl -fsSL https://raw.githubusercontent.com/debpalash/OmniVoice-Studio/main/install.sh | sh
|
||||
# curl -fsSL https://raw.githubusercontent.com/debpalash/VoiceStudio/main/install.sh | sh
|
||||
# # or locally:
|
||||
# sh install.sh
|
||||
# sh install.sh --verbose # show all subcommand output
|
||||
@@ -150,7 +150,7 @@ if [ ! -f "$SCRIPT_DIR/pyproject.toml" ]; then
|
||||
(cd "$INSTALL_DIR" && git pull --ff-only 2>/dev/null || true)
|
||||
else
|
||||
if have git; then
|
||||
git clone --depth 1 https://github.com/debpalash/OmniVoice-Studio.git "$INSTALL_DIR"
|
||||
git clone --depth 1 https://github.com/debpalash/VoiceStudio.git "$INSTALL_DIR"
|
||||
else
|
||||
die "git is required. Install git and re-run."
|
||||
fi
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
set -euo pipefail
|
||||
|
||||
SITE_URL="https://github.com/debpalash/OmniVoice-Studio"
|
||||
SITE_URL="https://github.com/debpalash/VoiceStudio"
|
||||
SITE_NAME="OmniVoice Studio"
|
||||
SITE_DESC="Open-source ElevenLabs alternative — cinematic audio dubbing, voice cloning & TTS in 646 languages, runs 100% locally"
|
||||
RSS_URL="https://github.com/debpalash/OmniVoice-Studio/releases.atom"
|
||||
RSS_URL="https://github.com/debpalash/VoiceStudio/releases.atom"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
@@ -154,12 +154,12 @@ echo "${YELLOW}━━━ 7. Developer & Tech Platforms ━━━${NC}"
|
||||
submit "LibHunt Lookup" "https://www.libhunt.com/r/OmniVoice-Studio"
|
||||
submit "StackShare Lookup" "https://stackshare.io/omnivoice-studio"
|
||||
submit "DevHunt Submit" "https://devhunt.org/submit?url=${ENCODED_URL}"
|
||||
submit "OSS Insight Lookup" "https://ossinsight.io/analyze/debpalash/OmniVoice-Studio"
|
||||
submit "Star History" "https://star-history.com/#debpalash/OmniVoice-Studio"
|
||||
submit "GitTrends" "https://gittrends.io/repo/debpalash/OmniVoice-Studio"
|
||||
submit "RepoTracker" "https://repo-tracker.com/r/gh/debpalash/OmniVoice-Studio"
|
||||
submit "OSS Insight Lookup" "https://ossinsight.io/analyze/debpalash/VoiceStudio"
|
||||
submit "Star History" "https://star-history.com/#debpalash/VoiceStudio"
|
||||
submit "GitTrends" "https://gittrends.io/repo/debpalash/VoiceStudio"
|
||||
submit "RepoTracker" "https://repo-tracker.com/r/gh/debpalash/VoiceStudio"
|
||||
submit "Snyk Advisor" "https://snyk.io/advisor/python/omnivoice"
|
||||
submit "Libraries.io" "https://libraries.io/github/debpalash/OmniVoice-Studio"
|
||||
submit "Libraries.io" "https://libraries.io/github/debpalash/VoiceStudio"
|
||||
submit "OpenHub" "https://www.openhub.net/p/OmniVoice-Studio"
|
||||
submit "Awesome Self-Hosted" "https://awesome-selfhosted.net/"
|
||||
submit "RunaCapital ROSS Index" "https://runacap.com/ross-index/"
|
||||
@@ -246,7 +246,7 @@ echo "${YELLOW}━━━ 12. WHOIS & Domain Lookup Caches ━━━${NC}"
|
||||
submit "W3Techs" "https://w3techs.com/sites/info/github.com"
|
||||
submit "BuiltWith" "https://builtwith.com/debpalash.github.io"
|
||||
submit "Netcraft Site Report" "https://sitereport.netcraft.com/?url=${ENCODED_URL}"
|
||||
submit "SimilarWeb" "https://www.similarweb.com/website/github.com/debpalash/OmniVoice-Studio/"
|
||||
submit "SimilarWeb" "https://www.similarweb.com/website/github.com/debpalash/VoiceStudio/"
|
||||
submit "Wappalyzer" "https://www.wappalyzer.com/lookup/${SITE_URL}/"
|
||||
submit "SecurityHeaders" "https://securityheaders.com/?q=${ENCODED_URL}&followRedirects=on"
|
||||
submit "Mozilla Observatory" "https://observatory.mozilla.org/analyze/${SITE_URL}"
|
||||
@@ -256,14 +256,14 @@ submit "SSL Labs" "https://www.ssllabs.com/ssltest/analyze.ht
|
||||
echo ""
|
||||
echo "${YELLOW}━━━ 13. Additional Pages to Index ━━━${NC}"
|
||||
PAGES=(
|
||||
"https://github.com/debpalash/OmniVoice-Studio"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/wiki"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/issues"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/pulls"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/blob/main/README.md"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/blob/main/ROADMAP.md"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/tag/v0.2.4"
|
||||
"https://github.com/debpalash/VoiceStudio"
|
||||
"https://github.com/debpalash/VoiceStudio/releases"
|
||||
"https://github.com/debpalash/VoiceStudio/wiki"
|
||||
"https://github.com/debpalash/VoiceStudio/issues"
|
||||
"https://github.com/debpalash/VoiceStudio/pulls"
|
||||
"https://github.com/debpalash/VoiceStudio/blob/main/README.md"
|
||||
"https://github.com/debpalash/VoiceStudio/blob/main/ROADMAP.md"
|
||||
"https://github.com/debpalash/VoiceStudio/releases/tag/v0.2.4"
|
||||
)
|
||||
for page in "${PAGES[@]}"; do
|
||||
EPAGE=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$page', safe=''))")
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
set -euo pipefail
|
||||
|
||||
SITE_URL="https://github.com/debpalash/OmniVoice-Studio"
|
||||
SITE_URL="https://github.com/debpalash/VoiceStudio"
|
||||
SITE_NAME="OmniVoice Studio"
|
||||
SITE_DESC="Open-source ElevenLabs alternative — cinematic audio dubbing, voice cloning and TTS in 646 languages"
|
||||
RSS_URL="https://github.com/debpalash/OmniVoice-Studio/releases.atom"
|
||||
RSS_URL="https://github.com/debpalash/VoiceStudio/releases.atom"
|
||||
GITHUB_USER="debpalash"
|
||||
REPO_NAME="OmniVoice-Studio"
|
||||
REPO_NAME="VoiceStudio"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
@@ -197,10 +197,10 @@ submit "FOSS Torrents" "https://fosstorrents.com/"
|
||||
submit "OpenSource.com" "https://opensource.com/"
|
||||
submit "Open Source Alternative" "https://www.opensourcealternative.to/"
|
||||
submit "Open Source Builders" "https://opensource.builders/"
|
||||
submit "AwesomeOpenSource" "https://awesomeopensource.com/project/debpalash/OmniVoice-Studio"
|
||||
submit "AwesomeOpenSource" "https://awesomeopensource.com/project/debpalash/VoiceStudio"
|
||||
submit "OpenBase" "https://openbase.com/"
|
||||
submit "Free Software Foundation" "https://www.fsf.org/"
|
||||
submit "OSS Insight (detailed)" "https://ossinsight.io/analyze/debpalash/OmniVoice-Studio#overview"
|
||||
submit "OSS Insight (detailed)" "https://ossinsight.io/analyze/debpalash/VoiceStudio#overview"
|
||||
submit "GitHub Trending" "https://github.com/trending?since=weekly"
|
||||
submit "GitExplorer" "https://gitexplorer.com/"
|
||||
submit "Best of JS" "https://bestofjs.org/"
|
||||
@@ -274,17 +274,17 @@ submit "Hacker News" "https://news.ycombinator.com/submitlink
|
||||
echo ""
|
||||
echo "${YELLOW}━━━ 12. Extended Wayback Machine Archives ━━━${NC}"
|
||||
EXTRA_PAGES=(
|
||||
"https://github.com/debpalash/OmniVoice-Studio/blob/main/STRUCTURE.md"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/blob/main/LICENSE"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/graphs/contributors"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/network/dependents"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/stargazers"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/network/members"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/tag/v0.2.4"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/tag/v0.2.3"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/tree/main/backend"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/tree/main/frontend"
|
||||
"https://github.com/debpalash/OmniVoice-Studio/tree/main/docs"
|
||||
"https://github.com/debpalash/VoiceStudio/blob/main/STRUCTURE.md"
|
||||
"https://github.com/debpalash/VoiceStudio/blob/main/LICENSE"
|
||||
"https://github.com/debpalash/VoiceStudio/graphs/contributors"
|
||||
"https://github.com/debpalash/VoiceStudio/network/dependents"
|
||||
"https://github.com/debpalash/VoiceStudio/stargazers"
|
||||
"https://github.com/debpalash/VoiceStudio/network/members"
|
||||
"https://github.com/debpalash/VoiceStudio/releases/tag/v0.2.4"
|
||||
"https://github.com/debpalash/VoiceStudio/releases/tag/v0.2.3"
|
||||
"https://github.com/debpalash/VoiceStudio/tree/main/backend"
|
||||
"https://github.com/debpalash/VoiceStudio/tree/main/frontend"
|
||||
"https://github.com/debpalash/VoiceStudio/tree/main/docs"
|
||||
"https://github.com/debpalash"
|
||||
)
|
||||
for page in "${EXTRA_PAGES[@]}"; do
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
set -euo pipefail
|
||||
|
||||
SITE_URL="https://github.com/debpalash/OmniVoice-Studio"
|
||||
SITE_URL="https://github.com/debpalash/VoiceStudio"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Speak and transcribe through the user's local OmniVoice Studio —
|
||||
|
||||
# OmniVoice — local TTS & STT
|
||||
|
||||
The user runs [OmniVoice Studio](https://github.com/debpalash/OmniVoice-Studio), a fully-local voice app exposing an OpenAI-compatible audio API at `http://localhost:3900/v1`. Use it whenever the user asks to generate speech, narrate text, clone a voice, or transcribe audio — it costs nothing, works offline, and their audio never leaves the machine.
|
||||
The user runs [OmniVoice Studio](https://github.com/debpalash/VoiceStudio), a fully-local voice app exposing an OpenAI-compatible audio API at `http://localhost:3900/v1`. Use it whenever the user asks to generate speech, narrate text, clone a voice, or transcribe audio — it costs nothing, works offline, and their audio never leaves the machine.
|
||||
|
||||
## Before the first call
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ def test_prefers_tauri_config_when_present(monkeypatch, tmp_path):
|
||||
"plugins": {
|
||||
"updater": {
|
||||
"endpoints": [
|
||||
"https://github.com/debpalash/OmniVoice-Studio/releases/latest/download/latest.json"
|
||||
"https://github.com/debpalash/VoiceStudio/releases/latest/download/latest.json"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -55,7 +55,7 @@ def test_prefers_tauri_config_when_present(monkeypatch, tmp_path):
|
||||
import json
|
||||
(tmp_path / "tauri.conf.json").write_text(json.dumps(fake_conf), encoding="utf-8")
|
||||
url = links._from_tauri()
|
||||
assert url == "https://github.com/debpalash/OmniVoice-Studio"
|
||||
assert url == "https://github.com/debpalash/VoiceStudio"
|
||||
|
||||
|
||||
def test_falls_back_to_pyproject_when_tauri_unreadable(monkeypatch, tmp_path):
|
||||
|
||||
@@ -136,7 +136,7 @@ def main() -> int:
|
||||
ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
|
||||
ap.add_argument("report", nargs="?", help="path to report-*.html")
|
||||
ap.add_argument("--pr", type=int, help="PR number for the comment")
|
||||
ap.add_argument("--repo", default="debpalash/OmniVoice-Studio")
|
||||
ap.add_argument("--repo", default="debpalash/VoiceStudio")
|
||||
ap.add_argument("--post", action="store_true",
|
||||
help="upload gist + comment (requires --yes)")
|
||||
ap.add_argument("--yes", action="store_true",
|
||||
|
||||
@@ -34,9 +34,11 @@ def test_sanitize_strips_home_and_secrets():
|
||||
|
||||
|
||||
def test_detect_repo_from_origin():
|
||||
# detect_repo() parses owner/repo from the real git origin. The repo name is
|
||||
# stable across upstream and forks; the owner is not, so assert the shape and
|
||||
# the repo name rather than a hardcoded owner (the test ran only on upstream).
|
||||
# detect_repo() parses owner/repo from the real git origin. Neither half is
|
||||
# a constant: the owner varies across forks, and the NAME turned out to vary
|
||||
# too — the repository was renamed, and this test failed on every PR while
|
||||
# detect_repo() was working perfectly. Assert the SHAPE, which is the whole
|
||||
# contract; a literal here only pins today's branding.
|
||||
#
|
||||
# It also documents its own None case — "the harness works without a GitHub
|
||||
# remote, the report just omits the link" — which is a real checkout shape,
|
||||
@@ -48,7 +50,11 @@ def test_detect_repo_from_origin():
|
||||
pytest.skip("no GitHub origin remote here (tarball/archive checkout)")
|
||||
owner, name = repo
|
||||
assert isinstance(owner, str) and owner
|
||||
assert name == "OmniVoice-Studio"
|
||||
assert isinstance(name, str) and name
|
||||
# Parsed, not echoed: neither half may keep the URL's punctuation or the
|
||||
# `.git` suffix, which is what a broken parse would leave behind.
|
||||
for part in (owner, name):
|
||||
assert "/" not in part and not part.endswith(".git")
|
||||
|
||||
|
||||
def test_clustering_dedupes_and_excludes_nonblocking():
|
||||
@@ -71,11 +77,11 @@ def test_triage_builds_github_url(monkeypatch):
|
||||
# Pin detect_repo so the URL is deterministic on every fork: this test
|
||||
# exercises URL construction, not the git origin (which is the fork owner on
|
||||
# a contributor's checkout, not the upstream "debpalash").
|
||||
monkeypatch.setattr(T, "detect_repo", lambda cwd=None: ("debpalash", "OmniVoice-Studio"))
|
||||
monkeypatch.setattr(T, "detect_repo", lambda cwd=None: ("debpalash", "VoiceStudio"))
|
||||
res = T.triage(_failing_report())
|
||||
assert res.owner == "debpalash" and res.repo == "OmniVoice-Studio"
|
||||
assert res.owner == "debpalash" and res.repo == "VoiceStudio"
|
||||
assert res.url and res.url.startswith(
|
||||
"https://github.com/debpalash/OmniVoice-Studio/issues/new?"
|
||||
"https://github.com/debpalash/VoiceStudio/issues/new?"
|
||||
)
|
||||
q = urllib.parse.parse_qs(urllib.parse.urlparse(res.url).query)
|
||||
assert q["title"][0] == res.title
|
||||
@@ -93,7 +99,7 @@ def test_report_renders_issue_button_on_failure():
|
||||
from . import report as R
|
||||
|
||||
rep = _failing_report()
|
||||
rep.issue_url = "https://github.com/debpalash/OmniVoice-Studio/issues/new?title=x"
|
||||
rep.issue_url = "https://github.com/debpalash/VoiceStudio/issues/new?title=x"
|
||||
html = R.render_html(rep)
|
||||
assert "Draft GitHub issue" in html
|
||||
assert rep.issue_url in html
|
||||
|
||||
@@ -129,7 +129,7 @@ def test_midflight_failure_stops_startup_and_names_backup(tmp_path, monkeypatch)
|
||||
assert backups, "the pre-migration backup must exist on failure"
|
||||
assert backups[0] in msg, "the error must name the backup path"
|
||||
assert str(db) in msg, "the error must name the live DB path"
|
||||
assert "github.com/debpalash/OmniVoice-Studio/issues" in msg
|
||||
assert "github.com/debpalash/VoiceStudio/issues" in msg
|
||||
# Original data still present in BOTH the live DB and the backup —
|
||||
# and nothing was auto-restored (the backup file is separate).
|
||||
assert _profile_names(db) == ["Alice"]
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
"""A published image path is a promise, not a mirror of the repo name.
|
||||
|
||||
When the repository was renamed to `VoiceStudio`, `docker.yml` derived its
|
||||
GHCR path from ``${{ github.repository }}`` — so the next build would have
|
||||
started publishing to ``ghcr.io/debpalash/voicestudio`` while Docker Hub, a
|
||||
hardcoded literal, stayed exactly where it was. Every user pulling the
|
||||
documented GHCR path would have kept receiving the last pre-rename image
|
||||
indefinitely: no error, no warning, a channel that quietly stopped updating.
|
||||
|
||||
Renaming a published image is a deliberate migration (publish to both, document
|
||||
the move, retire the old one). It must never be a side effect of renaming the
|
||||
repository, which is why the path is pinned and why that is pinned here.
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
yaml = pytest.importorskip("yaml")
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
WORKFLOW = os.path.join(ROOT, ".github", "workflows", "docker.yml")
|
||||
|
||||
|
||||
def _env():
|
||||
with open(WORKFLOW, encoding="utf-8") as fh:
|
||||
return yaml.safe_load(fh)["env"]
|
||||
|
||||
|
||||
def test_the_ghcr_path_does_not_follow_the_repository_name():
|
||||
image = _env()["IMAGE_NAME"]
|
||||
assert "github.repository" not in str(image), (
|
||||
"IMAGE_NAME derives from the repo name again — renaming the repository "
|
||||
"would silently move published images and strand everyone pulling the "
|
||||
"documented path"
|
||||
)
|
||||
assert image == "debpalash/omnivoice-studio"
|
||||
|
||||
|
||||
def test_the_two_registries_publish_the_same_name():
|
||||
# They are separate registries with independent naming, and Docker Hub's is
|
||||
# a literal. If GHCR drifts from it, the docs can only be right about one.
|
||||
env = _env()
|
||||
ghcr_name = str(env["IMAGE_NAME"]).split("/")[-1]
|
||||
hub_name = str(env["DOCKERHUB_IMAGE"]).split("/")[-1]
|
||||
assert ghcr_name == hub_name, (
|
||||
f"GHCR publishes '{ghcr_name}' but Docker Hub publishes '{hub_name}' — "
|
||||
f"one of the documented pull commands is wrong"
|
||||
)
|
||||
|
||||
|
||||
def test_the_docs_name_the_path_that_is_actually_published():
|
||||
"""Docs drift here is invisible: a wrong pull command fails only for users."""
|
||||
env = _env()
|
||||
published = f"ghcr.io/{env['IMAGE_NAME']}"
|
||||
for rel in ("docs/install/docker.md", "deploy/dockerhub-overview.md"):
|
||||
path = os.path.join(ROOT, rel)
|
||||
if not os.path.isfile(path):
|
||||
continue
|
||||
text = open(path, encoding="utf-8").read()
|
||||
if "ghcr.io/" not in text:
|
||||
continue
|
||||
assert published in text, f"{rel} does not document {published}"
|
||||
@@ -39,7 +39,7 @@ from build_preview_manifest import ( # noqa: E402
|
||||
required_assets,
|
||||
)
|
||||
|
||||
REPO = "debpalash/OmniVoice-Studio"
|
||||
REPO = "debpalash/VoiceStudio"
|
||||
_T0 = datetime.datetime(2026, 8, 4, 12, 0, tzinfo=datetime.timezone.utc)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user