{
  "manifest_version": "1",
  "slug": "voicestudio",
  "title": "VoiceStudio",
  "headline": "Self-host VoiceStudio",
  "description": "Run VoiceStudio on an exe.dev VM, no GPU needed: text to speech, voice cloning and transcription in your browser, an OpenAI-style API, and MCP.",
  "category": "ai-apps",
  "tags": [
    "text to speech",
    "voice cloning",
    "speech to text",
    "tts",
    "openai-compatible api",
    "mcp",
    "docker compose"
  ],
  "url": "https://exe.dev/deploy/voicestudio",
  "markdown_url": "https://exe.dev/deploy/voicestudio.md",
  "upstream": {
    "website": "https://voicestudio.sh",
    "source": "https://github.com/debpalash/VoiceStudio",
    "docs": "https://github.com/debpalash/VoiceStudio/tree/main/docs",
    "license": "AGPL-3.0 (each voice model has its own licence)"
  },
  "example_vm_name": "my-voicestudio",
  "time": "20 minutes",
  "stack": [
    {
      "name": "VoiceStudio 0.5",
      "detail": "The official image, ghcr.io/debpalash/voicestudio, in Docker Compose, on CPU",
      "port": 8000,
      "data": "~/voicestudio/data"
    },
    {
      "name": "Voice models",
      "detail": "Downloaded from Hugging Face when you pick them, kept beside your data",
      "data": "~/voicestudio/data/huggingface"
    },
    {
      "name": "Nightly backup",
      "detail": "A systemd timer; voices, projects and settings, without the models",
      "data": "~/voicestudio-backups"
    }
  ],
  "access": [
    {
      "url": "https://my-voicestudio.exe.xyz/",
      "who": "private",
      "what": "The studio, after exe.dev login and VoiceStudio's API key"
    },
    {
      "url": "https://my-voicestudio.exe.xyz/v1/",
      "who": "private",
      "what": "OpenAI-style speech and transcription API, with a VM token and the API key"
    },
    {
      "url": "https://my-voicestudio.exe.xyz/mcp/",
      "who": "private",
      "what": "MCP server for agents, with the same two credentials"
    }
  ],
  "delivers": [
    "VoiceStudio at the VM's private URL, locked with an API key kept in ~/voicestudio/.env.",
    "Speech and transcription on the VM's CPU, checked with a short test clip.",
    "Voices, projects, settings and models on the VM's disk, kept across restarts and updates.",
    "Starts again after a reboot; nightly backups, with one checked."
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20VoiceStudio%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fvoicestudio.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-voicestudio.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-voicestudio.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AThis%20recipe%20needs%20a%2060GB%20disk%2C%20and%20a%20new%20VM%27s%20may%20be%20smaller.%20Before%20you%20install%20anything%2C%20run%20%60df%20-h%20%2F%60.%20If%20its%20size%20is%20under%2054G%2C%20stop%20and%20ask%20me%20to%20grow%20the%20disk%2C%20either%20with%20this%20link%3A%20https%3A%2F%2Fexe.dev%2Fsuggest%3Fcommand%3Dresize%2520my-voicestudio%2520--disk%253D60GB%20or%2C%20on%20my%20computer%2C%20with%20%60ssh%20exe.dev%20resize%20my-voicestudio%20--disk%3D60GB%60.%20When%20I%20say%20it%27s%20done%2C%20run%20%60sudo%20resize2fs%20%22%24%28findmnt%20-no%20SOURCE%20%2F%29%22%60%2C%20check%20%60df%20-h%20%2F%60%20again%2C%20and%20carry%20on.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20VoiceStudio%20at%20the%20VM%27s%20private%20URL%2C%20locked%20with%20an%20API%20key%20kept%20in%20~%2Fvoicestudio%2F.env.%0A-%20Speech%20and%20transcription%20on%20the%20VM%27s%20CPU%2C%20checked%20with%20a%20short%20test%20clip.%0A-%20Voices%2C%20projects%2C%20settings%20and%20models%20on%20the%20VM%27s%20disk%2C%20kept%20across%20restarts%20and%20updates.%0A-%20Starts%20again%20after%20a%20reboot%3B%20nightly%20backups%2C%20with%20one%20checked.%0A%0ARead%20the%20whole%20recipe%2C%20including%20the%20closed%20details.%20For%20initial%20setup%2C%0Afollow%20%22Install%20by%20hand%22%2C%20skipping%20VM%20creation%20and%20SSH%3A%20room%20on%20the%20disk%2C%0ADocker%2C%20Start%20VoiceStudio%2C%20Check%20speech%2C%20the%20backup%20timer%20and%20the%20backup%0Acheck.%20The%20walkthrough%20at%20the%20top%20is%20for%20the%20owner%20afterwards.%20Do%20not%20run%0ARestore%20or%20Update.%0AWork%20as%20exedev%20in%20~%2Fvoicestudio.%20Never%20overwrite%20an%20existing%20.env.%0ADo%20not%20accept%20any%20model%20licence%20for%20the%20owner%2C%20and%20do%20not%20run%20the%0Afirst-run%20wizard%20in%20a%20browser%3A%20the%20owner%20does%20both.%20Do%20not%20share%20the%20VM%0Aor%20make%20it%20public.%0AVerify%20docker.service%20is%20enabled%20and%20the%20container%20uses%20unless-stopped%3B%0Ado%20not%20reboot.%20Finish%20with%20the%20studio%20URL%20and%20the%20command%20from%20%22Open%20the%0Astudio%22%20that%20prints%20the%20API%20key%3B%20don%27t%20paste%20the%20key%20into%20the%20chat.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "disk": "60GB",
    "terminal": "curl -fsSL https://exe.dev/deploy/voicestudio/prompt.txt | ssh exe.dev new --disk=60GB --prompt=/dev/stdin",
    "prompt": "Set up VoiceStudio on this VM by following the exe.dev recipe at https://exe.dev/deploy/voicestudio.md from top to bottom.\n\nThe recipe's example VM name is my-voicestudio. This VM's name is the output of `hostname`: use it wherever the recipe writes my-voicestudio. Skip the step that creates the VM; you are on it.\n\nThis recipe needs a 60GB disk, and a new VM's may be smaller. Before you install anything, run `df -h /`. If its size is under 54G, stop and ask me to grow the disk, either with this link: https://exe.dev/suggest?command=resize%20my-voicestudio%20--disk%3D60GB or, on my computer, with `ssh exe.dev resize my-voicestudio --disk=60GB`. When I say it's done, run `sudo resize2fs \"$(findmnt -no SOURCE /)\"`, check `df -h /` again, and carry on.\n\nYou are done when all of these are true. Check each one yourself:\n- VoiceStudio at the VM's private URL, locked with an API key kept in ~/voicestudio/.env.\n- Speech and transcription on the VM's CPU, checked with a short test clip.\n- Voices, projects, settings and models on the VM's disk, kept across restarts and updates.\n- Starts again after a reboot; nightly backups, with one checked.\n\nRead the whole recipe, including the closed details. For initial setup,\nfollow \"Install by hand\", skipping VM creation and SSH: room on the disk,\nDocker, Start VoiceStudio, Check speech, the backup timer and the backup\ncheck. The walkthrough at the top is for the owner afterwards. Do not run\nRestore or Update.\nWork as exedev in ~/voicestudio. Never overwrite an existing .env.\nDo not accept any model licence for the owner, and do not run the\nfirst-run wizard in a browser: the owner does both. Do not share the VM\nor make it public.\nVerify docker.service is enabled and the container uses unless-stopped;\ndo not reboot. Finish with the studio URL and the command from \"Open the\nstudio\" that prints the API key; don't paste the key into the chat.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/voicestudio/prompt.txt"
  },
  "updated": "2026-10-30",
  "verified": "2026-10-30",
  "related": [
    "open-webui",
    "hermes-agent",
    "claude-code",
    "n8n-2",
    "openclaw",
    "code-server"
  ]
}
