GitHub Hot Board

GitHub Hot Board · Arsip repositori

timoncool/speech-studio

Free offline AI voice studio for Windows — text-to-speech with cloned and built-in voices, and speech recognition with speakers. Russian done right. 100% local, one native .exe, zero Python. (Deskripsi berasal dari repositori itu sendiri.)

Data per October 26timoncool

Peringkat terbaik

#210

Permata yang Terlupakan

100

Total bintang

10

Total fork

1

Hari di papan (30 hari)

Lisensi: NOASSERTIONPush terakhir: October 26Issue terbuka (termasuk PR): 14Dikumpulkan sejak 2026-10-25; tidak diketahui = belum terkumpul

Dokumentasi proyek

Speech Studio logo

Speech Studio

Free, offline AI voice studio for Windows, macOS (Apple silicon) and Linux — voice any text with cloned and built-in voices, and turn recordings into text with the speakers. Russian done right: numbers in their cases, stress marks, «ё» and homographs. 100% local, zero Python: one native app (Rust + C++ on CUDA, Vulkan or Metal); every model and engine downloads with a button.

License Stars Latest release Downloads Last commit

English · Русский · 中文 · Español · Português · Français

Speech Studio — a voiced dialog with a voice per character

What it is

Speech Studio has three modes. Speech voices text: a line, a dialog with a voice per character, a podcast the director writes for you, or a whole book from EPUB, FB2, PDF or DOCX. Listening turns a recording, a video or a link into text with who said what and when, cuts it by its words, checks a voicing against the text it should say and makes library voices from its speakers. Live is a voice conversation with an AI agent connected over MCP: it says each phrase as soon as it writes it and hears you through the microphone.

Everything runs locally on your machine — no cloud, no subscription; your texts, recordings and voiceprints never leave your computer. If you want a voice your card can't run, the cloud voices of OpenRouter, Google Gemini, fal.ai and Runware are there too, each behind its own key and a confirmation before the first call; they are off by default.

It's a fully native app: no embeddable Python, no torch, no CUDA wheels. The whole studio is Rust + native C++ engines (GGUF/ONNX) on CUDA, Vulkan or Metal. Models, engines, the CUDA and VC++ runtimes and ffmpeg are downloaded by the app itself on first run, and a model another of the author's studios already has is taken from it instead of downloaded again. An NVIDIA GPU is what the app is built and tested for; see What runs where for the rest.

For AI agents

While Speech Studio is open it serves MCP at http://127.0.0.1:8797/mcp: an agent such as Claude Code, Claude Desktop, Cursor or Codex does everything the window does, through the same code — voices a text into a file in one call, makes and edits projects block by block, casts voices to characters, designs a voice from a description, transcribes and checks recordings, exports audiobooks with chapters and subtitles. Settings, Agent (MCP) shows whether an agent is connected and what to paste into the client. The one thing an agent cannot do is turn the microphone on: Live, a recording and the microphone test start only on your own click or key.

  1. Install the studio from the latest release and start it.
  2. Connect to its MCP server:
    claude mcp add --transport http speech-studio http://127.0.0.1:8797/mcp
    Other clients: { "mcpServers": { "speech-studio": { "type": "streamable-http", "url": "http://127.0.0.1:8797/mcp" } } }
  3. Read the skill the server serves (resource studio://skill), the same text as docs/mcp-skill.md, and start with the tool studio_status.

The studio also speaks the OpenAI audio API on the same port — POST /v1/audio/speech, POST /v1/audio/transcriptions, GET /v1/models — so tools written for OpenAI voice and transcribe through it, with a library voice's name as voice. llms.txt says the same for tools that look for it. Only programs on this computer may connect.

What you can make with it

  • An audiobook — drop an EPUB or FB2: chapters, characters with their own voices, an M4B with chapters and cover, ACX loudness checked.
  • A podcast or a dialog — the director writes a podcast on a topic for two or three speakers, or paste lines like «Anna: …»; the timeline shows every overlap.
  • A voice-over for a video — voice a script or subtitles into their cues, lay music and sounds under it in the track editor, export at the video's loudness.
  • A transcript of an interview or a lecture — who said what and when, word times, subtitles by broadcasters' rules, the recording cut by its text.
  • A check of a dubbing — lay the script over the recording and see every word said wrong or skipped.
  • Your own voice library — record or import voices, clean them, make voices from the speakers of a recording.
  • A voice for your AI agent — talk with Claude Code or any MCP agent in Live, or let it voice and transcribe files through MCP or the OpenAI-compatible API.

Examples of every engine and voice, with Russian stress before and after, are on the project page.

Three modes

Mode What it does
🔊 Speech Text, dialog, podcast or book → voiced blocks with takes, checked by ear, exported as WAV, FLAC, MP3, OGG, M4A or M4B with chapters, subtitles and synced text
👂 Listening Audio, video or a link → a transcript with speakers and word times, a karaoke player, cut-by-text, export to SRT, VTT, ASS, TXT or JSON, a check against a reference text
🎙️ Live A voice conversation with an AI agent: the agent connected over MCP speaks each phrase as it writes it, you answer into the microphone and are recognised phrase by phrase, a phrase said over it stops it; only you turn the microphone on, pause with M or Ctrl+Shift+Space, a widget over every window

Features

Voices and engines

  • Five local engines — Higgs Audio v3 (cloning, emotions and sounds), Fish Audio Drama 3 (the strongest open voice; the whole model on a 24 GB card, from 6 GB with its experts in RAM), Supertonic 3 (fast, ten built-in voices), Qwen3-TTS 1.7B (nine built-in voices, cloning, an instruction per block) and Qwen3-TTS with Russian stress, siriusfreak's LoRA applied at run time.

  • Engine per character and per block over the project's own; an engine that can't speak the voice in use says which of its voices it takes.

  • Voice library — a voice pack in one click, 743 Russian voices from the cloud catalogue, recording from the microphone, import of files and ZIPs, photo, gender, age, language, tags and consent; the reference transcript is recognised once and kept.

  • Clean a reference — Mel-Band Roformer takes the voice from music, DPDFNet takes noise away with a strength control so speech stays alive; the original is kept.

  • Best piece of a reference — windows at pauses between recognised words, each with its length, signal-to-noise, clipping and longest pause.

  • Voice by description — Qwen3-TTS VoiceDesign makes a voice from "an elderly woman with a soft, slightly hoarse voice…": hear several candidates, keep one in the library.

  • Cloud voices — OpenRouter, Google Gemini (parallel requests or Batch at half the price), fal.ai and Runware, each behind its own key and a confirmation before the first call.

Text that sounds right

  • Russian normaliser — numbers in the right case and gender, dates, times, money, units, Roman numerals, Latin brand names and abbreviations.

  • Stress, «ё» and homographs by RUAccent — the large homograph model (big_poetry in int8, the same choices as fp32) picks замо́к or за́мок by the sentence; doubtful ones are highlighted for you, your own + marks stay.

  • Pronunciation dictionary — replace, regex and phonemes, scoped to the project, a language, a voice or an engine, Balabolka .rex/.dic/.bxd import, and a check by ear right from the dictionary.

  • SpeechKit-compatible markup — + stress, sil<[300]> and [pause 500ms] pauses, [rate:1.2] tempo, **accent**; what an engine ignores is marked, never silently dropped.

  • More of the text read right — an SSML subset, prosody hints coloured word by word, phone numbers, e-mail addresses and codes, a passage in another language in the same voice, and a check of the script before voicing.

Projects

  • Text as the timeline — blocks with speakers, takes (up to five), stale tracking, undo and redo, drag to reorder, search and replace with regex, notes and markers.

  • Quality control — every take recognised back and compared word by word, plus checks for clipping, silence, cut-off, a click at the end, a repeated phrase, a long tail, music or noise instead of speech, and similarity to the reference voice; several takes with the best one picked.

  • Dialog and podcasts — Anna: and [Anna] lines become characters, the director writes a podcast on a topic for N speakers, negative pauses make interruptions, and the timeline shows every overlap with cut, join or keep.

  • Audiobooks — EPUB, FB2, PDF, DOCX, HTML, Markdown and TXT with chapter preview, cast by the director, M4B with chapters and cover, parts for long books, ACX loudness check.

  • Subtitles as a project — SRT, VTT and ASS lines voiced into their cues: the tempo raised ahead, a retry when a take doesn't fit, then stretching and borrowing the silence before the line.

  • Export check — blocks missing, stale, failed, with a changed file or too long for their cue are listed before export; only the length may be allowed through.

  • Loudness — video (−14 LUFS), podcast (−16 LUFS) and ACX presets with a true-peak limiter, room tone and breaths between blocks.

  • Project file — .speechproj with text, voices and audio carries a project to another computer.

  • Montage — a track editor under the text: move, trim, fade and level each clip, music and sound tracks from files or folders, or a song made right there in YuE2, MiniMax Music3 or ACE-Step Studio.

  • Export for every use — a file per chapter, a track per character in a ZIP, a CSV table of lines, voice effects (radio, phone, loudspeaker), even loudness of pieces, sample rate and bit depth, file name templates, a SHA-256 manifest and a note on how it was made.

  • Compare and approve — A/B of takes, a blind comparison of engines on the same text, approved blocks a re-voicing leaves alone, a quality traffic light and a project report.

  • Books and plays — direct speech apart from the author's, a cast of characters with voices picked for them, footnotes cleaned out, the book's names into the dictionary, a project updated from a corrected book without losing what is voiced, and an HTML player of the book.

Listening

  • Parakeet-TDT v3, Nemotron 3.5 (28 languages with punctuation) and CrisperWhisper 2.0 turbo (99 languages with word times) on audio.cpp, Parakeet Ultra on transcribe.cpp, up to eight speakers by Nemotron 3 Diarization, a long recording cut at pauses by Silero VAD v6, noise removed by DPDFNet, music removed by Roformer.

  • A hint for CrisperWhisper — topic and spellings, plus the corrections you add.

  • Batch — drop several files at once; each becomes a recording queued for recognition.

  • Lay a known text over the recording — the reference text takes the time of each heard word, sentence by sentence.

  • Voices from speakers — a library voice from each speaker's cleanest words.

  • As you speak — recognition from the microphone phrase by phrase, a watched folder recognised in the background, quick recognition without the editor.

  • The right model by itself — with the language on Auto, VoxLingua107 finds it and the recording goes to a recogniser that knows it; the chosen model downloads the first time it is used.

  • Subtitles by broadcasters' rules (Netflix, BBC and others), who talks how much, numbers as digits in export.

Live

  • A conversation by voice — the agent connected over MCP says each phrase as soon as it writes it; you answer into the microphone and are recognised phrase by phrase; a phrase of two words or more said over the agent stops it, while a cough, a laugh or an «uh-huh» does not; a typed line reaches the agent like a spoken one.
  • Changes on the fly — the agent's voice, the recogniser, the language and the microphone can be changed in the middle of a conversation, by you or by the agent at your request: the recogniser switches in place, a new microphone or language restarts the microphone, and the window says «Loading the voice…» while a new voice's engine loads.
  • A natural pace — an agent's sentence is said whole up to 300 characters, a pause an engine leaves inside a phrase is heard at most 0.6 s long, and each phrase is heard once.
  • Only you turn the microphone on — Live, a Listening recording, a voice recording and the microphone test start only on your own click or key; an agent has no tool that turns the microphone on, and the window does not take its clicks on those buttons. The top bar shows «Microphone on», what it is on for and for how long, with a cross that turns it off; with no studio window open for five seconds the microphone turns off by itself.
  • Microphone and sound — pause with M or Ctrl+Shift+Space from any window (the agent falls silent and does not hear you; hold to talk), the cross ends the conversation and what the agent is saying, level meters, hearing yourself back, a speaker test and the agent's volume.
  • Five looks and a widget — aura, wave, bars, radial and matrix, and a small widget over every window; Ctrl+3 opens Live.
  • Measured — your phrase is text 0.64–0.74 s after you stop speaking (Parakeet on an RTX 4090), and the first sound of the answer comes 15 ms to 1 s after the agent writes it, by engine.

Everywhere

  • OpenAI-compatible API, MCP with window control for agents, an assistant panel on an OpenRouter model with the same tools.
  • Diagnostics — graphics card, driver, CUDA, libraries, logs, a bug-report package without keys.
  • The whole app in six languages, light and dark theme, auto-update, fully portable.
  • First run asks only what you want — voices, recognition and extras; engines, libraries and the build for your card come with them, one line each with its size.
  • Command palette (Ctrl+K), your own hotkeys, a simple mode and a «?» hint on every control.

Measured speed

On one computer: RTX 4090 (24 GB) under Windows 11, Speech Studio as it installs.

Voicing — Speech Studio 0.2.0, the same 17-second Russian text, the second run of each engine (its model loaded); Higgs — in the audio.cpp engine on 22.10, three runs, first sound not measured; first sound is the time until audio starts in the window, video memory the peak while speaking.

Engine Faster than real time First sound Streaming Download Video memory
Supertonic 3 168× 103 ms by phrase 0.1 GB 1.0 GB
Qwen3-TTS 12× 19 ms as it speaks 2.2 GB 3.1 GB
Qwen3-TTS + ru stress LoRA 10× 26 ms as it speaks 2.3 GB 3.5 GB
Fish Audio Drama 3 7.0× 326 ms as it speaks 21.4 GB 21.9 GB
Higgs Audio v3 3.4× — as it speaks 5.3 GB ~7 GB

Recognition — Speech Studio 0.2.1 (CrisperWhisper — the audio.cpp engine on 22.10: a 625.8-second Russian recording, the engine loading included, on the processor and its video memory not measured), one 5-minute Russian recording of one speaker (299.7 s) in Listening without telling speakers apart, the model loading included; the model leaves video memory when the job ends.

Model On the card On the processor Languages Download Video memory
Parakeet TDT v3 96× (3.1 s) 33× (9.2 s) 25 0.7 GB 1.2 GB
Parakeet Ultra 73× (4.1 s) 33× (9.2 s) 25 0.7 GB 1.0 GB
Nemotron 3.5 73× (4.1 s) 29× (10.3 s) 28 0.7 GB 1.0 GB
CrisperWhisper 2.0 turbo 96× (6.5 s) — 99 1.6 GB —

Live — one turn of a conversation.

Step Time
Your phrase as text after you stop speaking (Parakeet on the card, the pause that ends a phrase included) 0.64–0.74 s
The agent writes its answer (Claude Sonnet) 2.0–3.9 s
First sound of the answer (by engine, see Voicing) 15 ms – 1.0 s

Screenshots

The start screen — a text, a book, subtitles or a podcast script becomes a project:

Speech Studio start screen

Listening — a transcript with speakers and word times, a karaoke player, cut-by-text and export:

Speech Studio Listening

Live — a voice conversation with an AI agent: what you said and what it answers, five looks, pause and end the conversation:

Live in Speech Studio

Requirements

  • OS: Windows 10 / 11 (x64); macOS 13 or newer on Apple silicon and Linux x86-64 as experimental builds
  • GPU: NVIDIA with 8 GB of VRAM or more. Cards from Turing on (GTX 16, RTX 20 and newer) with driver 580 or newer run the CUDA 13 builds; GTX 900, GTX 10, Volta and drivers 525–579 run the CUDA 12 builds of Higgs, Supertonic, Parakeet, Nemotron, CrisperWhisper, diarization, Qwen3-TTS, separation and the director, and Parakeet Ultra through Vulkan. Drama 3 needs CUDA 13: it runs whole on 24 GB; from 6 GB its experts (18 GB) live in RAM, which then needs 32 GB, and the VRAM it takes is set in Settings (Auto or 5 to 24 GB). An AMD or Intel card runs the Vulkan builds, a computer without a card the CPU ones, a Mac Metal (no Drama 3); these setups are not tested by the author
  • WebView2 — preinstalled on Windows 11; on Windows 10 the installer fetches it
  • Disk: about 9 GB for the default models, engines and runtime, plus what you add (Drama 3 is 23 GB)

On an NVIDIA machine the only thing you install by hand is a recent NVIDIA driver.

Quick start

  1. Download from the latest release: for Windows the portable Speech-Studio-<version>-portable-windows-x64.zip (unzip anywhere) or the installer Speech.Studio_<version>_x64-setup.exe; for macOS Speech-Studio-<version>-macos-arm64.dmg; for Linux Speech-Studio-<version>-linux-x86_64-experimental.AppImage or Speech-Studio-<version>-linux-amd64-experimental.deb.
  2. Run Speech Studio.exe (Windows), Speech Studio from Applications (macOS) or the AppImage (Linux).
  3. On the First run panel press Download selected — the app fetches models, engines and runtime once.
  4. Paste a text and press Create, or switch to Listening and drop a recording.

On Windows everything downloads and lives inside the app folder: models, caches, voices and projects go nowhere else. On Linux it lives in ~/.local/share/speech-studio, on macOS in ~/Library/Application Support/Speech Studio.

What changed and when is in CHANGELOG.md, and the sparkles button at the top of the app shows it. Rules for contributors and coding agents: AGENTS.md.

Everything the app downloads

The first-run panel fetches all of this with a button. Behind a proxy, or where Hugging Face is blocked, set the proxy in Settings → Network. You can also download the direct files yourself, put them where the last column says, counted from the app folder, and press Import from folder; archive components the app downloads itself. Every file is checked against its pinned SHA-256 before it is used. Sizes and hashes come from the app's manifest, crates/speech-server/src/setup.rs, and the pins of the shared crates it names, and this table is checked against them. The table lists the Windows files: an NVIDIA card CUDA 13 runs on takes the CUDA 13 builds, an older NVIDIA card or driver the CUDA 12.9 ones, an AMD or Intel card the Vulkan ones, a computer without a card the CPU ones; a stage set to another device in Settings → Models takes that device's build. On Linux and macOS the app downloads the builds of the same components for that system.

Component Need Files (direct links) Size Put it in
Higgs Audio v3 Q8_0 required q8_0.gguf → models\higgs-q8_0\q8_0.gguf
config.json → models\higgs-q8_0\config.json
chat_template.jinja → models\higgs-q8_0\chat_template.jinja
tokenizer.json → models\higgs-q8_0\tokenizer.json
tokenizer_config.json → models\higgs-q8_0\tokenizer_config.json
higgs_audio_v2_tokenizer_config.json → models\higgs-q8_0\higgs_audio_v2_tokenizer_config.json
5.5 GB as is, to the path after the arrow
audio.cpp server, CUDA 13 (Higgs, Supertonic, Parakeet, Nemotron, CrisperWhisper, diarization) required audiocpp-server-win-cuda13-x64.zip 131 MB unzip the files, without subfolders, into tools\audiocpp\
Gemma-4 12B QAT q4_0 + vision optional gemma-4-12b-it-qat-q4_0.gguf → models\mt\gemma-4-12b-it-qat-q4_0.gguf
mmproj-gemma-4-12b-it-qat-q4_0.gguf → models\mt\mmproj-gemma-4-12b-it-qat-q4_0.gguf
7.2 GB as is, to the path after the arrow
Gemma-4 12B Q5_K_M + vision optional gemma-4-12b-it-Q5_K_M.gguf → models\mt-q5_0\gemma-4-12b-it-Q5_K_M.gguf
mmproj-F16.gguf → models\mt-q5_0\mmproj-F16.gguf
8.6 GB as is, to the path after the arrow
Gemma-4 12B Q6_K + vision optional gemma-4-12b-it-Q6_K.gguf → models\mt-q6_k\gemma-4-12b-it-Q6_K.gguf
mmproj-F16.gguf → models\mt-q6_k\mmproj-F16.gguf
10.0 GB as is, to the path after the arrow
Gemma-4 12B Q8_0 + vision optional gemma-4-12b-it-Q8_0.gguf → models\mt-q8_0\gemma-4-12b-it-Q8_0.gguf
mmproj-F16.gguf → models\mt-q8_0\mmproj-F16.gguf
12.8 GB as is, to the path after the arrow
Parakeet-TDT 0.6B v3 Q8_0 required parakeet-tdt-0.6b-v3-Q8_0.gguf → models\asr-gguf-parakeet-v3\parakeet-tdt-0.6b-v3-Q8_0.gguf 740 MB as is, to the path after the arrow
Higgs Audio v3 Q6_K optional q6_k.gguf → models\higgs-q6_k\q6_k.gguf
config.json → models\higgs-q6_k\config.json
chat_template.jinja → models\higgs-q6_k\chat_template.jinja
tokenizer.json → models\higgs-q6_k\tokenizer.json
tokenizer_config.json → models\higgs-q6_k\tokenizer_config.json
higgs_audio_v2_tokenizer_config.json → models\higgs-q6_k\higgs_audio_v2_tokenizer_config.json
5.0 GB as is, to the path after the arrow
Higgs Audio v3 Q4_K_M optional q4_k_m.gguf → models\higgs-q4_k_m\q4_k_m.gguf
config.json → models\higgs-q4_k_m\config.json
chat_template.jinja → models\higgs-q4_k_m\chat_template.jinja
tokenizer.json → models\higgs-q4_k_m\tokenizer.json
tokenizer_config.json → models\higgs-q4_k_m\tokenizer_config.json
higgs_audio_v2_tokenizer_config.json → models\higgs-q4_k_m\higgs_audio_v2_tokenizer_config.json
4.1 GB as is, to the path after the arrow
Fish Audio Drama 3 Q4 + drama_engine (6 GB+ GPU, 32 GB RAM under 24 GB) optional .gitattributes → models\drama3\.gitattributes
LICENSE → models\drama3\LICENSE
NOTICE → models\drama3\NOTICE
README.md → models\drama3\README.md
codec.safetensors → models\drama3\codec.safetensors
drama.json → models\drama3\drama.json
globals.safetensors → models\drama3\globals.safetensors
layer00.safetensors → models\drama3\layer00.safetensors
layer01.safetensors → models\drama3\layer01.safetensors
layer02.safetensors → models\drama3\layer02.safetensors
layer03.safetensors → models\drama3\layer03.safetensors
layer04.safetensors → models\drama3\layer04.safetensors
layer05.safetensors → models\drama3\layer05.safetensors
layer06.safetensors → models\drama3\layer06.safetensors
layer07.safetensors → models\drama3\layer07.safetensors
layer08.safetensors → models\drama3\layer08.safetensors
layer09.safetensors → models\drama3\layer09.safetensors
layer10.safetensors → models\drama3\layer10.safetensors
layer11.safetensors → models\drama3\layer11.safetensors
layer12.safetensors → models\drama3\layer12.safetensors
layer13.safetensors → models\drama3\layer13.safetensors
layer14.safetensors → models\drama3\layer14.safetensors
layer15.safetensors → models\drama3\layer15.safetensors
layer16.safetensors → models\drama3\layer16.safetensors
layer17.safetensors → models\drama3\layer17.safetensors
layer18.safetensors → models\drama3\layer18.safetensors
layer19.safetensors → models\drama3\layer19.safetensors
layer20.safetensors → models\drama3\layer20.safetensors
layer21.safetensors → models\drama3\layer21.safetensors
layer22.safetensors → models\drama3\layer22.safetensors
layer23.safetensors → models\drama3\layer23.safetensors
layer24.safetensors → models\drama3\layer24.safetensors
layer25.safetensors → models\drama3\layer25.safetensors
layer26.safetensors → models\drama3\layer26.safetensors
layer27.safetensors → models\drama3\layer27.safetensors
layer28.safetensors → models\drama3\layer28.safetensors
layer29.safetensors → models\drama3\layer29.safetensors
layer30.safetensors → models\drama3\layer30.safetensors
layer31.safetensors → models\drama3\layer31.safetensors
layer32.safetensors → models\drama3\layer32.safetensors
layer33.safetensors → models\drama3\layer33.safetensors
layer34.safetensors → models\drama3\layer34.safetensors
layer35.safetensors → models\drama3\layer35.safetensors
layer36.safetensors → models\drama3\layer36.safetensors
layer37.safetensors → models\drama3\layer37.safetensors
layer38.safetensors → models\drama3\layer38.safetensors
layer39.safetensors → models\drama3\layer39.safetensors
tokenizer.json → models\drama3\tokenizer.json
tower.safetensors → models\drama3\tower.safetensors
drama_engine.dll → models\drama-engine\drama_engine.dll
23.0 GB as is, to the path after the arrow
Supertonic 3 int8 optional LICENSE → models\supertonic3\LICENSE
duration_predictor.onnx → models\supertonic3\onnx\duration_predictor.onnx
text_encoder.onnx → models\supertonic3\onnx\text_encoder.onnx
vector_estimator.onnx → models\supertonic3\onnx\vector_estimator.onnx
vocoder.onnx → models\supertonic3\onnx\vocoder.onnx
tts.json → models\supertonic3\onnx\tts.json
unicode_indexer.json → models\supertonic3\onnx\unicode_indexer.json
F1.json → models\supertonic3\voice_styles\F1.json
F2.json → models\supertonic3\voice_styles\F2.json
F3.json → models\supertonic3\voice_styles\F3.json
F4.json → models\supertonic3\voice_styles\F4.json
F5.json → models\supertonic3\voice_styles\F5.json
M1.json → models\supertonic3\voice_styles\M1.json
M2.json → models\supertonic3\voice_styles\M2.json
M3.json → models\supertonic3\voice_styles\M3.json
M4.json → models\supertonic3\voice_styles\M4.json
M5.json → models\supertonic3\voice_styles\M5.json
108 MB as is, to the path after the arrow
Qwen3-TTS engine (qwen.dll) and codec optional qwen-tokenizer-12hz-Q8_0.gguf → models\qwen3-tts\qwen-tokenizer-12hz-Q8_0.gguf
qwen-windows-x64.zip
292 MB as is, to the path after the arrow
unzip the files, without subfolders, into models\qwen3-tts\
Qwen3-TTS 1.7B Q4_K_M (CustomVoice + Base) optional qwen-talker-1.7b-customvoice-Q4_K_M.gguf → models\qwen3-tts\qwen-talker-1.7b-customvoice-Q4_K_M.gguf
qwen-talker-1.7b-base-Q4_K_M.gguf → models\qwen3-tts\qwen-talker-1.7b-base-Q4_K_M.gguf
2.4 GB as is, to the path after the arrow
Qwen3-TTS 1.7B Q8_0 (CustomVoice + Base) optional qwen-talker-1.7b-customvoice-Q8_0.gguf → models\qwen3-tts\qwen-talker-1.7b-customvoice-Q8_0.gguf
qwen-talker-1.7b-base-Q8_0.gguf → models\qwen3-tts\qwen-talker-1.7b-base-Q8_0.gguf
4.1 GB as is, to the path after the arrow
Qwen3-TTS VoiceDesign Q4_K_M optional qwen-talker-1.7b-voicedesign-Q4_K_M.gguf → models\qwen3-tts\qwen-talker-1.7b-voicedesign-Q4_K_M.gguf 1.2 GB as is, to the path after the arrow
Qwen3-TTS VoiceDesign Q8_0 optional qwen-talker-1.7b-voicedesign-Q8_0.gguf → models\qwen3-tts\qwen-talker-1.7b-voicedesign-Q8_0.gguf 2.0 GB as is, to the path after the arrow
Qwen3-TTS Russian stress LoRA optional adapter.safetensors → models\qwen3-tts\qwen-talker-1.7b-base-ru-stress-lora.safetensors 35 MB as is, to the path after the arrow
Parakeet Ultra 0.6B Q8_0 (Moondream, transcribe.cpp) optional parakeet-ultra-Q8_0.gguf → models\asr-gguf-parakeet-ultra\parakeet-ultra-Q8_0.gguf 740 MB as is, to the path after the arrow
transcribe.cpp engine (CUDA 13) required transcribe_engine.dll → models\transcribe-engine\transcribe_engine.dll 144 MB as is, to the path after the arrow
transcribe.cpp engine (CPU) optional transcribe_engine-cpu.dll → models\transcribe-engine-cpu\transcribe_engine.dll 4 MB as is, to the path after the arrow
transcribe.cpp engine (Vulkan) optional transcribe_engine-vulkan.dll → models\transcribe-engine-vulkan\transcribe_engine.dll 49 MB as is, to the path after the arrow
Nemotron 3.5 ASR 0.6B Q8_0 (NVIDIA) optional nemotron-3.5-asr-streaming-0.6b-Q8_0.gguf → models\asr-gguf-nemotron\nemotron-3.5-asr-streaming-0.6b-Q8_0.gguf 751 MB as is, to the path after the arrow
CrisperWhisper 2.0 turbo (audio.cpp) optional LICENSE.md → models\crisperwhisper2-turbo\LICENSE.md
README.md → models\crisperwhisper2-turbo\README.md
added_tokens.json → models\crisperwhisper2-turbo\added_tokens.json
config.json → models\crisperwhisper2-turbo\config.json
generation_config.json → models\crisperwhisper2-turbo\generation_config.json
merges.txt → models\crisperwhisper2-turbo\merges.txt
model.safetensors → models\crisperwhisper2-turbo\model.safetensors
normalizer.json → models\crisperwhisper2-turbo\normalizer.json
preprocessor_config.json → models\crisperwhisper2-turbo\preprocessor_config.json
special_tokens_map.json → models\crisperwhisper2-turbo\special_tokens_map.json
tokenizer.json → models\crisperwhisper2-turbo\tokenizer.json
tokenizer_config.json → models\crisperwhisper2-turbo\tokenizer_config.json
vocab.json → models\crisperwhisper2-turbo\vocab.json
1.6 GB as is, to the path after the arrow
Nemotron 3 Diarization recommended nemotron3_diar_v3.onnx → models\nemotron-diar\nemotron3_diar_v3.onnx
LICENSE → models\nemotron-diar\LICENSE
401 MB as is, to the path after the arrow
Mel-Band Roformer voc_fv6 Q8_0 recommended voc_fv6-Q8_0.gguf → models\bsroformer\voc_fv6-Q8_0.gguf 252 MB as is, to the path after the arrow
Mel-Band Roformer voc_fv6 Q5_0 optional voc_fv6-Q5_0.gguf → models\bsroformer\voc_fv6-Q5_0.gguf 167 MB as is, to the path after the arrow
Mel-Band Roformer voc_fv6 Q4_0 optional voc_fv6-Q4_0.gguf → models\bsroformer\voc_fv6-Q4_0.gguf 139 MB as is, to the path after the arrow
WeSpeaker ResNet34-LM (voice similarity) recommended voxceleb_resnet34_LM.onnx → models\faces\wespeaker\voxceleb_resnet34_LM.onnx 27 MB as is, to the path after the arrow
RUAccent (stress, «ё», homographs) recommended model.onnx → models\ruaccent\nn\nn_accent\model.onnx
config.json → models\ruaccent\nn\nn_accent\config.json
vocab.txt → models\ruaccent\nn\nn_accent\vocab.txt
model.onnx → models\ruaccent\nn\nn_omograph\tiny2\model.onnx
tokenizer.json → models\ruaccent\nn\nn_omograph\tiny2\tokenizer.json
accents.json.gz → models\ruaccent\dictionary\accents.json.gz
omographs.json.gz → models\ruaccent\dictionary\omographs.json.gz
yo_words.json.gz → models\ruaccent\dictionary\yo_words.json.gz
yo_homographs.json.gz → models\ruaccent\dictionary\yo_homographs.json.gz
34 MB as is, to the path after the arrow
RUAccent big_poetry homographs int8 optional model.onnx → models\ruaccent\nn\nn_omograph\big_poetry\model.onnx
tokenizer.json → models\ruaccent\nn\nn_omograph\big_poetry\tokenizer.json
185 MB as is, to the path after the arrow
Silero VAD v6.2 recommended silero-vad-v6.2-F32.gguf → models\silero-vad\silero-vad-v6.2-F32.gguf 1 MB as is, to the path after the arrow
VoxLingua107 language identification Q8_0 required lang-id-voxlingua107-ecapa-Q8_0.gguf → models\langid-voxlingua107\lang-id-voxlingua107-ecapa-Q8_0.gguf 27 MB as is, to the path after the arrow
DPDFNet 48 kHz (noise suppression) recommended dpdfnet2_48khz_hr.onnx → models\dpdfnet\dpdfnet2_48khz_hr.onnx 10 MB as is, to the path after the arrow
BSRoformer.cpp (CUDA 13) recommended BSRoformer-windows-cuda13-x64.zip 117 MB unzip the files, without subfolders, into tools\bsroformer\
BSRoformer.cpp (CPU) optional BSRoformer-windows-x64-msvc.zip 671 KB unzip the files, without subfolders, into tools\bsroformer-cpu\
BSRoformer.cpp (Vulkan) optional BSRoformer-windows-vulkan.zip 23 MB unzip the files, without subfolders, into tools\bsroformer-vulkan\
llama.cpp server (CUDA 13) optional llama-b11900-bin-win-cuda-13.4-x64.zip 165 MB unzip the files, without subfolders, into tools\llama\
ONNX Runtime required onnxruntime-win-x64-1.28.2.zip 79 MB unzip with its folder tree into models\runtime\
ONNX Runtime GPU (CUDA) recommended onnxruntime-win-x64-gpu_cuda13-1.28.2.zip 366 MB unzip with its folder tree into models\runtime\
FFmpeg (static build) required ffmpeg-N-127021-ge0c94b2d1c-win64-gpl.zip 199 MB take ffmpeg.exe and ffprobe.exe from the archive into tools\ffmpeg\
yt-dlp + deno optional yt-dlp.exe → tools\yt-dlp\yt-dlp.exe
deno-x86_64-pc-windows-msvc.zip
61 MB as is, to the path after the arrow
unzip the files, without subfolders, into tools\yt-dlp\
CUDA 13 runtime (cudart, cuBLAS, cuFFT) required nvidia_cuda_runtime-13.4.92-py3-none-win_amd64.whl
nvidia_cublas-13.8.0.4-py3-none-win_amd64.whl
libcufft-windows-x86_64-12.4.0.43-archive.zip
586 MB take every .dll of the archive into models\higgs-engine\
cuDNN 9 recommended nvidia_cudnn_cu13-9.27.0.42-py3-none-win_amd64.whl 436 MB take every .dll of the archive into models\higgs-engine\
audio.cpp server, CUDA 12.9 (cards and drivers CUDA 13 left) optional audiocpp-server-win-cuda12-x64.zip 178 MB unzip the files, without subfolders, into tools\audiocpp-cuda12\
audio.cpp server, Vulkan optional audiocpp-server-win-vulkan-x64.zip 33 MB unzip the files, without subfolders, into tools\audiocpp-vulkan\
audio.cpp server, CPU optional audiocpp-server-win-cpu-x64.zip 16 MB unzip the files, without subfolders, into tools\audiocpp-cpu\
CUDA 12.9 runtime (cudart, cuBLAS, cuFFT) optional nvidia_cuda_runtime_cu12-12.9.79-py3-none-win_amd64.whl
nvidia_cublas_cu12-12.9.2.10-py3-none-win_amd64.whl
nvidia_cufft_cu12-11.4.1.4-py3-none-win_amd64.whl
757 MB take every .dll of the archive into models\cuda12-runtime\
Qwen3-TTS CUDA 13 module optional ggml-cuda13-windows-x64.dll → models\qwen3-tts\ggml-cuda.dll 142 MB as is, to the path after the arrow
Qwen3-TTS CUDA 12.9 module optional ggml-cuda12-windows-x64.dll → models\qwen3-tts\ggml-cuda.dll 170 MB as is, to the path after the arrow
Qwen3-TTS Vulkan module optional ggml-vulkan-windows-x64.dll → models\qwen3-tts\ggml-vulkan.dll 42 MB as is, to the path after the arrow
BSRoformer.cpp (CUDA 12.9) optional BSRoformer-windows-cuda12-x64.zip 171 MB unzip the files, without subfolders, into tools\bsroformer-cuda12\
llama.cpp server (CUDA 12.4) optional llama-b11900-bin-win-cuda-12.4-x64.zip 279 MB unzip the files, without subfolders, into tools\llama-cuda12\
llama.cpp server (Vulkan) optional llama-b11900-bin-win-vulkan-x64.zip 37 MB unzip the files, without subfolders, into tools\llama-vulkan\
llama.cpp server (CPU) optional llama-b11900-bin-win-cpu-x64.zip 24 MB unzip the files, without subfolders, into tools\llama-cpu\

What runs where

Each stage has its own device in Settings → Models: Auto, GPU (CUDA), Vulkan or CPU. Auto takes the card's CUDA build — CUDA 13, or CUDA 12.9 on an older card or driver.

Stage Engine NVIDIA (CUDA) Vulkan (AMD, Intel) CPU Mac (Apple silicon) Cloud
Voice and cloning Higgs Audio v3 (audio.cpp) yes yes yes Metal OpenRouter, Gemini, fal.ai, Runware
Voice and cloning Qwen3-TTS (qwentts.cpp) yes yes yes Metal —
Voice and cloning Fish Audio Drama 3 (drama-rs) CUDA 13 only no no no —
Voice Supertonic 3 (audio.cpp) yes yes yes Metal —
Speech recognition Parakeet-TDT v3, Nemotron 3.5 (audio.cpp) yes yes yes Metal OpenRouter, fal.ai
Speech recognition Parakeet Ultra (transcribe.cpp) CUDA 13 yes yes Metal —
Speech recognition CrisperWhisper 2.0 turbo (audio.cpp) yes no yes Metal —
Speakers Nemotron 3 Diarization (audio.cpp) yes yes yes Metal no
Pauses and noise Silero VAD v6 (transcribe.cpp), DPDFNet no no yes CPU no
Voice from music Mel-Band Roformer (BSRoformer.cpp) yes yes yes Metal no
Stress and homographs RUAccent no no yes CPU no
Director (podcast, characters) Gemma-4 12B (llama.cpp) yes yes yes Metal OpenRouter

Troubleshooting

The installer stops on WebView2. Install WebView2 from Microsoft's Evergreen Standalone x64 installer, then run the installer of Speech Studio again.

Downloads stall or fail. Large files resume from where they stopped, so press the button again. If Hugging Face or GitHub is blocked for you, set a proxy in Settings → Network, or put the files from the table in place and press Import from folder.

A voice engine reports an old card or driver. The CUDA 13 builds need a card from Turing on (GTX 16, RTX 20 and newer) and driver 580 or newer; GTX 900, GTX 10, Volta and drivers 525–579 get the CUDA 12 builds by themselves. Drama 3 has only a CUDA 13 build: on an older card or driver update the driver or use another engine or the cloud voices.

Recognition finds no speech. The recording is quieter than the speech threshold: lower it in Recognition → Cutting at pauses.

Settings → Diagnostics collects a package for a bug report without keys: attach it to an issue.

How it works

Stack: a native Tauri 2 (Rust) shell runs speech-server (axum) in the same process on 127.0.0.1:8797 and opens a window onto the SPA — React 19 + Vite + Tailwind. Engines live in the process through their C ABIs: Drama 3 (drama_engine.dll, timoncool/drama-rs), Qwen3-TTS (qwen.dll, timoncool/qwentts.cpp), Parakeet Ultra, Silero VAD and VoxLingua107 (transcribe_engine.dll, timoncool/transcribe.cpp), DPDFNet, RUAccent and WeSpeaker on ONNX Runtime. Higgs Audio v3, Supertonic 3, Parakeet-TDT v3, Nemotron 3.5, CrisperWhisper and Nemotron 3 Diarization run in one helper program, the audio.cpp server (audiocpp_server, timoncool/audio.cpp); BSRoformer.cpp and llama.cpp's server are helpers too, ffmpeg handles audio. Not a single Python process at runtime.

Build from source

git clone https://github.com/timoncool/speech-studio.git
cd speech-studio

cd frontend && npm install && npm run build && cd ..   # 1) SPA
cargo build --release -p speech-server                  # 2) native server (axum)
cd desktop && npm install && npx tauri build            # 3) desktop shell (Tauri)

Needs Node 20+, Rust (MSVC toolchain) and WebView2. The engines don't need rebuilding — the app downloads prebuilt binaries. The release packages come from scripts/build-release.ps1 (Windows), scripts/build-linux-docker.sh (Linux, in an Ubuntu 22.04 container) and scripts/build-release-macos.sh (macOS, on a Mac with Apple silicon).

Linux (experimental)

The .deb and the AppImage for Linux x86-64 are experimental: the same code with the Linux builds of the same engines, not run by the author on a real Linux desktop. Fixes are very welcome as pull requests. The NVIDIA driver (580 or newer for the CUDA 13 builds, 525 or newer for the CUDA 12 ones), libgomp1 and libssl3 come from the system; models and engines go into ~/.local/share/speech-studio.

macOS (experimental)

The .dmg for macOS 13 or newer on Apple silicon is experimental too: the macOS builds of the same engines on Metal, not run by the author on a real Mac. Drama 3 is not offered there, it runs on NVIDIA cards only. The app is signed ad hoc and not notarized, so macOS stops the first start: open it once from System Settings → Privacy & Security → Open Anyway. Models and engines go into ~/Library/Application Support/Speech Studio.

Anonymous statistics and news

The app asks the author's server for news at start and then every hour; the request carries no id. The first-run screen has a checkbox Send anonymous usage statistics, checked by default; the same switch is in Settings, next to What is sent. While it is checked, the app sends the day's report: a random install id made on this computer, the app version, the OS, the window language, the graphics card as vendor, a video memory bucket and whether CUDA works, how many tasks finished, failed or were cancelled, the models each stage ran on, the seconds of speech the local engines voiced and the seconds they worked for them, and why a task failed as one line with paths, names and quoted text removed (for a failed download, the component and the site it came from). Never: texts, recordings, voices, file names or anything personal. DO_NOT_TRACK=1 or STUDIO_TELEMETRY=0 turns statistics off entirely.

More portable AI apps

Project What it is
Dub Studio AI video dubbing with cloned voices, translated captions and on-screen text
Higgs Ultimate Native speech synthesis & voice cloning (Higgs Audio v3)
ACE-Step Studio AI music studio — songs, vocals, covers, clips
YuE2 Studio AI song generator with an editable score
MiniMax Music3 Studio Native local/cloud AI music studio powered by MiniMax Music 3
VideoSOS AI video studio

Contributing & forks

Collaborators are very welcome: fixes to the macOS and Linux builds, AMD and Intel cards on Vulkan, and more interface languages (frontend/src/locales/, crates/speech-server/locales/) — fork it and send a pull request.

Authors

Credits

Support the author

I build open-source software and do AI research — most of what I make is freely available. Donations let me build and research more.

All the ways to support | dalink.to/nerual_dreming | boosty.to/neuro_art

  • BTC: 1E7dHL22RpyhJGVpcvKdbyZgksSYkYeEBC
  • ETH (ERC20): 0xb5db65adf478983186d4897ba92fe2c25c594a0c
  • USDT (TRC20): TQST9Lp2TjK6FiVkn4fwfGUee7NmkxEE7C

Star history

Star History Chart

License

The app code is MIT. The models are not: each keeps its own license. Read them before you publish or sell what you voice.

Component License What it means
Higgs Audio v3 (Boson AI) Boson Higgs TTS 3 Research and Non-Commercial License Research and personal use; digital creators may monetize their own content with the Creator Use Grant if they credit Boson AI; a product or service for others needs a license from Boson
Fish Audio Drama 3 Fish Audio Community License Research and non-commercial use; commercial use while your annual revenue is under USD 500,000, beyond it a license from Fish Audio; no hosted text-to-speech service
Qwen3-TTS (Qwen) Apache-2.0
Qwen3-TTS ru-stress LoRA (siriusfreak) Apache-2.0
Supertonic 3 (Supertone) BigScience OpenRAIL-M Read its use restrictions
RUAccent, and its homograph model in int8 MIT
Parakeet-TDT, Nemotron 3 Diarization (NVIDIA) CC-BY-4.0, OpenMDW-1.1 Credit NVIDIA
Nemotron 3.5 ASR (NVIDIA) OpenMDW-1.1 Credit NVIDIA
transcribe.cpp MIT
Silero VAD MIT
DPDFNet (Ceva) Apache-2.0
CrisperWhisper 2.0 turbo (nyra health) MIT for its code; nyra health Non-Commercial Research License for the weights and what they output Non-commercial use only; commercial use needs a license from nyra health
audio.cpp Apache-2.0
Mel-Band Roformer voc_fv6, GGUF No license stated on the model pages Ask the authors before commercial use
WeSpeaker ResNet34-LM CC-BY-4.0 Credit WeSpeaker
Gemma-4 12B (Google) Gemma terms Read them
llama.cpp, ONNX Runtime, BSRoformer.cpp, qwentts.cpp MIT
ElevenLabs UI Orb, SiriWave MIT
LiveKit Agents UI Aura Apache-2.0
FFmpeg (BtbN build) GPL build A separate program, not linked into the app
NVIDIA CUDA runtime, cuBLAS, cuFFT, cuDNN NVIDIA's own terms Downloaded from NVIDIA and PyPI

text to speech · voice cloning · Russian TTS · stress marks · audiobook maker · podcast · speech recognition · transcription · speaker diarization · offline · local · open source · Windows · macOS · Linux

Peringkat saat ini

  • 210

    Permata yang Terlupakan

    100 bintang · 10 fork · Total Star (menaik)

    Terlupakan →

Grafik 30 hari

Jumlah bintang kumulatif

Pergerakan peringkat

Pasang lencana di README kamu · timoncool/speech-studio[![Pasang lencana di README kamu](https://git.vaiox.xyz/api/badge/timoncool/speech-studio.svg)](https://git.vaiox.xyz/id/repo/timoncool/speech-studio)

Badge · 任何仓库都可以挂 —— 未上榜的仓库显示灰章,上完榜会自动点亮。

<a href="https://git.vaiox.xyz/id/repo/timoncool/speech-studio"><img src="https://git.vaiox.xyz/api/badge/timoncool/speech-studio.svg" alt="Pasang lencana di README kamu" height="20"></a>

← Kembali ke papan

GitHub Hot BoardMesin WaktuTemukan联系我们 · Contact