Skip to content
 
 

Latest commit

 

History

2,545 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

VoiceStudio for Nimi

VoiceStudio 0.5.8 adapts the existing VoiceStudio Electron product to Nimi. Clone and design voices, make stories and audiobooks, transcribe recordings, and dub video while retaining the original editing and media workflows.

Nimi supplies the platform account, App Access, AI configuration and all model inference. VoiceStudio keeps its business orchestration, audio editing, media processing, voice library and project state. There is no separate VoiceStudio account. Choose models in Settings → Nimi; no automatic cloud fallback or App-managed model installation is used.

Development

The current package combination is dev-1c5baa05f-voicestudio: app-tools 0.7.5, SDK 0.15.0, Kit/native 0.11.0 and nimi-coding 0.6.3. The accepted installed 0.5.4 artifact used dev-ecd93c916-voicestudio (app-tools 0.7.0, SDK 0.14.0, Kit/native 0.10.0). The delivered tarball paths are explicit in pnpm-workspace.yaml, with integrity pins in pnpm-lock.yaml. Same-version package replacements require a normal install and updated lockfile. This checkout uses Node 24 and pnpm 10.34.5.

pnpm install --frozen-lockfile
pnpm run setup:business
pnpm exec nimi-app sync
pnpm exec nimi-app check
pnpm exec nimi-app dev --shell electron

Development also requires uv and a Rust toolchain for the native helper. Desktop and Runtime must be running. Use the exact supervised App CDP URL printed by app-tools. Opening the Vite URL alone does not establish a Nimi session. Use this supervised development path for ordinary changes. Rebuild/install only for changes to frozen resources, production protocols, installation/upgrades or installed data retention. Stop the supervised App before running engineering tests: source fixtures created by tests can trigger a Host rebuild.

The independent Python 3.12.14 environment uses backend/business/uv.lock; it contains deterministic business/media dependencies, not Torch or model engines. Setup is explicit. Normal launch never installs dependencies. The original standalone instructions are archived in README.upstream.md and do not describe this distribution.

Build and local installation

pnpm exec nimi-app test
pnpm exec nimi-app build --target windows-x86_64
pnpm exec nimi-app pack --target windows-x86_64 --production

The production pipeline bundles the existing renderer, protected Electron Host, frozen Python business worker, native desktop helper and FFmpeg/ffprobe. Import the resulting .nimiapp with Nimi Desktop and grant App Access. Windows is the first actual acceptance target. Other platforms, Catalog download and public publication are separate and have not been verified.

Versions 0.5.3, 0.5.4 and 0.5.5 are local adaptation updates: Desktop correctly requires a newer version for each installed update. These version changes do not publish a release.

Data and privacy

Existing SQLite data, voice recordings and outputs remain in the App data directory (%APPDATA%/OmniVoice by default). Packaged Electron browser state uses %APPDATA%/OmniVoice/electron-profile; development uses Desktop's supervised profile. Story/audiobook projects can be exported and imported as .voicestudio.json. Those files reference voices and audio in the App library; they do not embed the media or transfer Nimi credentials. No automatic developer-profile migration or user-data deletion is performed.

Analytics remains opt-in. AI routing follows the user's Nimi configuration, so local-only behavior depends on that choice. Synthesized WAVs pass through mark_synthetic and carry file metadata identifying synthetic content. Neural AudioSeal marking is not applied by this integration; metadata can be removed by external re-encoding.

Current acceptance

Product task Verified scope
Reference voice / cloning Saved voice and transcript; real Nimi voice creation and synthesis; completed artifact recovery after carrier repair; App playback; identity lock; native WAV export
Voice design Real description-based design and synthesis; App playback; saved the audition itself as the voice reference
Stories / audiobooks Two saved voices, editable lines, saved project, interrupted-run recovery, real MP3 and M4B render and playback; native MP3 export; M4B chapter timestamps verified; project JSON export/import passed
File / windowed transcription Real file ASR and Nimi text refinement; manual correction, reload retention and native TXT export. Microphone capture start/pause/resume/cancel passed. Real PCM replay returned partial, utterance and EOF. Installed 0.5.8 also passed actual human Chinese dictation, raw TXT export and restart retention with cleanup off; the user confirmed the recognized disfluency matched their speech
Video dubbing / translation / export Real separation and timed ASR; source and Spanish translation editing; consistent reference voice; two synthesized segments; video playback; native MP4/SRT export. The default exported track matches the Spanish mix
Batch and additional audio tools Original installed 0.5.4 coverage remains bounded; see the development follow-up below for newly verified paths and source fixes
Windows production artifact Official build and production pack passed; frozen worker health and UTF-8 voice persistence passed
Desktop installed 0.5.4 Normal update from 0.5.3, launch, App Access and business API passed. Existing history played; a new reference-voice “Welcome back.” take completed through Nimi, played and saved as WAV. Project JSON imported, opened and saved; after a normal Desktop stop/start, both voices, three history entries, the new export and the reopened mixed-voice project remained available

Actual samples and local acceptance scratch are under .nimi/local/ and excluded from Git. Playback verification establishes decodable, non-muted media reaching playback end; voice quality still needs human listening.

Development follow-up after the installed 0.5.4 acceptance

These source changes are being verified with pnpm dev and its exact Desktop-supervised Electron CDP. The previously accepted installation is retained; ordinary business changes do not trigger another release or installation round.

  • Batch: two real Local jobs completed sequentially, one with a designed preset/background preservation and one with a saved voice/no background. Queued cancellation and retry ran the second job exactly once. Both exported videos decoded and played to the end (2.987 seconds). Preset auditions now persist with the dub project, so later edits use the same reference. Cleanup uses the existing reference-safe dub cleanup. Stale queue tickets no longer replay a retried job.
  • Tools: real direction analysis, text-length rate estimates and ffprobe passed. A source clip was transcribed and synthesized into the saved designed voice, duration matched from 5.15 to 5.15008 seconds, stored and played. A/B comparison generated and played both saved voices (2.56 and 3.6 seconds). Conversion now completes processing before publishing history and propagates cancellation through duration matching.
  • Longform: EPUB import preserved the normalized Markdown contents. The same 963- and 93-character chapters were rendered with the saved Cloud designed voice; the first crossed the 800-character chunk boundary. Cancellation after the first completed chapter retained the real cache and marked the App job cancelled. After a business-worker restart, resume reused the first chapter. A media subprocess stdin isolation defect then stalled M4B assembly; its regression failed before the fix and passed after it. The final resume reused both chapters without new AI, produced a 67.21-second M4B (AAC, 24 kHz, mono), and played completely. Chapter boundaries are 0–59.93 and 59.93–67.21 seconds. The first native Save As attempt was blocked by window control. The later 0.5.6 installed result-library export passed and retained the exact original bytes; see below.
  • Text Cloud baseline: only text.generate was explicitly changed from Local to Deepseek deepseek-v4-pro; other capabilities stayed Local. Self-authored non-sensitive direction/rewrite inputs and fictional-name Spanish translation ran through the real App text paths. The JSON/transport paths passed. Direction analysis inferred extra emotions; the rewritten line reported a 4.8-second text estimate for a 4-second slot, so it is not claimed to meet a measured duration. Translation preserved the fictional names, explicit Blue Lantern glossary entry and Tuesday-afternoon report review. Requests and original outputs are retained under .nimi/local/extended-acceptance/ for the later same-input comparison.
  • V4.1 Flash text baseline: the same three requests subsequently passed with the selected deepseek-flash API target. Direction returned calm/neutral/slow/conversational/neutral without extra emotion tags. Translation retained names, the explicit glossary and the report-review facts. Rate rewriting retained the meeting, report, everyone and figures, but estimated 5.933 seconds for the 4-second slot; measured audio fitting is not claimed. These are separate results from the older v4-pro baseline.
  • Cloud voices: the approved official public sample URI created a voice and a playable 3.6-second take. Locking stored the real audition, transcript and formal VoiceAsset ID; another 3.92-second take reused that identity. Pure text design produced a 2.88-second audition that was played and saved with its actual VoiceAsset. URI-only sources save without downloading or running AI; optional preview downloads enforce public network boundaries. This machine resolves the official preview host to a non-public address, so the App preview downloader refuses it; Cloud creation via the formal URI carrier succeeded independently. No local file is published to obtain a URL. Editing a reference clears its old URI/identity, while changing a saved design recipe detaches the old voice rather than ignoring the edits. Expired or incompatible assets fail explicitly. A voice identity does not guarantee identical audio or prosody on every take.
  • Cloud transcription: real requests exposed and fixed a Runtime alignment rejection on whitespace-only provider items. Typed word timings were then returned without invented timestamps. Automatic input-language detection returned a translation for two English samples; Local Whisper recognized the exact new Cloud audio as English. The new file/recording language selector passes the public language field. With explicit English, the same Cloud ASR returned the original English sentence in 2.312 seconds for 3.92 seconds of audio. Manual punctuation correction survived reload; raw text, corrected text, requested language and unknown detected language remain distinct. Automatic-mode fidelity remains a model limitation under investigation; choose a known input language. No private reference recording was sent to Cloud.
  • UI integration: Kit styles and the base light/dark themes now share the App's Tailwind 4 CSS entry. This fixed unstyled tokens and a long model picker whose action buttons were outside the viewport; ordinary mouse selection now works.
  • Configuration and checks: the delivered Kit repair passed real Cloud → Local selection, draft-without-write, Save and restore. The App uses selected referenceAudioInput metadata for URI/bytes/transcript handling; the Runtime repair restored that metadata in effective Cloud selections. Official check/test passed with 528 Electron tests, 557 Python/business/mechanical checks and 30 native tests, plus the real Electron protocol regression. The source version is now 0.5.5 for one concentrated local installed update from 0.5.4.
  • Remaining scope: large-book performance, watch folders, PDF variants, global shortcut insertion, account switching and other platforms remain NOT-VERIFIED. The initially deferred production UI checks were later resumed when computer control recovered; see the installed results below. M4B result-library export required the 0.5.6 repair. Existing installed 0.5.4 and Local product results above remain valid for their stated scope.

Platform changes and limits

The same-package reference verified protected session, App Access, AIConfig, voice creation, synthesis and Desktop package installation before product integration. Shared platform work added the design/reference voice-library recipe, repaired Node artifact-stream EOF cleanup and documented storage adoption's normalized filename. Runtime 58637f121 repaired selected Cloud voice capability metadata and filtered whitespace-only ASR alignment items while retaining real provider word times. Kit in the final 1c5baa05f package set repaired Cloud-to-Local selection. Runtime 322a8fde1 fixed Gemma JSON-object Driver mapping by supplying an explicit object schema; the unchanged product translation request then passed strict completion validation. The App uses the returned asset.relativePath for reads and cleanup. Kit b279ac4e1 fixes origin derivation for Electron custom schemes while retaining exact renderer URL validation; it addresses the first installed launch rejecting app://voicestudio. The App also registers its own scheme and Kit’s public asset descriptor in a single Electron call; a real hidden Electron regression verifies GET and POST through the production protocol, because a second registration disabled fetch while leaving IPC available.

Qwen3 Base reference synthesis uses a saved reference voice. It does not consume speech-style instructions or OmniVoice expression tokens. Speech speed is applied by App-owned FFmpeg processing. Voice design descriptions belong to voice creation. Previews use cancellable finite Jobs; continuous TTS streaming is not claimed. Dictation recognizes buffered audio windows, not a native low-latency stream. For the real 5.15-second replay, the final utterance reported 13.766 seconds for ASR plus text refinement on the current model/machine; no low-latency guarantee is made. Actual human Chinese microphone recognition passed on installed 0.5.8 as recorded below; global shortcut insertion remains NOT-VERIFIED. Multi-speaker identification requires manual assignment until a matching public Nimi contract is available. A real admitted synthesis Job reached CANCELED after the App cancellation action (2026-09-16 01:54:52 UTC); previous history stayed unchanged and the original draft was restored. This regression exposed and fixed a Python HTTP middleware disconnect issue; worker authentication now preserves the original ASGI receive channel. Interrupted story recovery was tested with the actual saved manifest. Additional timing strategies, account switching and cross-platform builds remain NOT-VERIFIED; the development follow-up above records newly covered batch, bounded longform and Cloud paths.

Engineering verification: app-tools check and test passed; the test command covers Electron type checking, all 21 locales, renderer/Host tests, Python business and mechanical checks with an empty offline HF cache, the native helper, and a real isolated Electron protocol GET/POST regression (not installed product acceptance). The installed 0.5.4 baseline passed 522 Electron tests, 545 Python/business/mechanical checks and 30 native tests; the 0.5.5 follow-up counts are recorded above. Windows build --target windows-x86_64 and pack --target windows-x86_64 --production passed. The artifact is dist/nimi-app/nimiplatform.voicestudio-0.5.4-windows-x86_64.nimiapp; its generated .target.json holds the size, digest and observed unsigned production posture. Desktop local update, launch and the agreed installed business/data-retention checks passed on Windows. The installed short take is available at .nimi/local/exports/installed-welcome.wav (PCM16, 24 kHz, mono, 0.8 seconds). That acceptance ended on the restored project; later development runs used the separate supervised profile. Catalog download, public publication and other target machines remain NOT-VERIFIED; this work does not claim those results.

0.5.5 local update artifact

Windows build and production pack passed for dist/nimi-app/nimiplatform.voicestudio-0.5.5-windows-x86_64.nimiapp (1,020,556,210 bytes; SHA-256 f1175cae19a10d03647005efc542ed871a3d0c821f4f66baac65e3e57b57dd51). The platform coordinator completed the normal Desktop update from 0.5.4 and launched the installed App. At that handoff, the installed run was running, App Access was available, the renderer loaded app://voicestudio/index.html, and the packaged business worker reported ready on port 3900. AIConfig revision 10 retained five ready capabilities and the selected routes/models. Read-only checks retained four specified old/new voices, five specified history records and six media files including the 67.21-second book. Anonymous business requests still return 403; no private worker credential was extracted to bypass that boundary. After computer control recovered, the installed UI showed four voices and nine history entries. The saved 2.88-second designed take played to completion and was exported through native Save As (138,406 bytes, 24 kHz mono). The 67.21-second M4B also played completely. Mixed voices acceptance reopened with its title, both original lines, default reference voice and the second line's designed voice preserved. The completed-book result row had no export action; that specific defect is repaired in 0.5.6 below. Development projects remain in the separate supervised browser profile; no automatic migration into the installed profile is claimed.

The complete 67.21-second book is also retained as .nimi/local/extended-acceptance/cloud-library.m4b, copied from the actual App output for review. This copy does not retroactively establish native Save As success.

Completed-result export repair (0.5.6)

Installed 0.5.5 verification found that the Projects library could play completed story/audiobook results but could not export them after their original editor session was gone. Version 0.5.6 adds Download on those result rows, using the existing trusted native save flow and the original MP3/M4B file. It does not regenerate speech or invent an editable project. A pending save blocks duplicate actions; cancellation writes no export-history record. The focused UI regression failed before the change and all three cases passed afterward. Official check/test/build/production pack passed for 0.5.6: 531 Electron tests, 557 Python/business/mechanical checks, 30 native tests and the real Electron protocol regression. The package is dist/nimi-app/nimiplatform.voicestudio-0.5.6-windows-x86_64.nimiapp (1,020,559,308 bytes; SHA-256 7f5faefd822e5fc9d4ed4c811574b3e7a667d2ab540ec05d05095fe27cae5ba4).

Desktop completed the normal 0.5.5 → 0.5.6 update and launch with App Access available. In the installed Projects library, Download on the existing 67.21-second book opened Windows Save As and wrote .nimi/local/exports/installed-0.5.6-cloud-library.m4b. Its 866,114 bytes and SHA-256 a9c9c83082a358b2ae1c7a507f7be3d26cccb5a5727d6ad0a7eddcb7889937a0 exactly match the App's original output, so the existing AAC 24 kHz mono/two-chapter validation applies without another render. The App added the successful export record. This closes the previously deferred native M4B export; no new inference ran. The installed App remains running and development remains stopped. No public publication or Catalog submission was performed.

Shared dictation input language (0.5.7)

The previous file/recording language selector did not reach continuous microphone recognition. The input-language setting now has one persisted value shared by uploaded files, completed recordings, page dictation and the global shortcut widget. Each live session captures it before requesting microphone access; its protected WebSocket and all partial, utterance and EOF-tail ASR calls use that captured language. Auto remains empty. Changing the preference affects new sessions only; it never changes a buffered session midway. Requested input language stays separate from the model's detected language in saved transcripts. The widget shows its captured language, and the page label stays on one line.

These changes reuse the existing Nimi ASR language field and do not change model routes, silence segmentation or cancellation. The existing cleanup setting is restored at Settings → General → Dictation cleanup, with a direct link from Transcriptions, separately from Nimi model configuration. Its default is unchanged: when enabled, finalized recognized text is sent to the configured Nimi text model through that model’s Local or Cloud route. Turn it off in the UI for raw-ASR-only testing; partial drafts are not refined and saved raw text remains separate. Closing and reopening the settings retains the chosen value. The global widget uses the same business preference as page dictation. Targeted frontend and backend regressions failed before the fix and passed afterward. At this preparation stage human microphone recognition was not yet verified; the later installed 0.5.8 result is recorded below, separately from protocol tests. No new AI calls or development Host were started for this repair.

The 0.5.7 Windows package is dist/nimi-app/nimiplatform.voicestudio-0.5.7-windows-x86_64.nimiapp (1,020,573,896 bytes; SHA-256 48654c93291bc2b5a34de7873806cae825e1e0ea38a2f0279ac9940dee42be94). Desktop completed the normal update and launched the exact new release with App Access available. In the installed UI, Chinese input language remained selected after navigation, and Dictation cleanup remained off after leaving and reopening General settings; its dependent options were disabled. No microphone capture or new AI request was started during these preparation checks. At that stage human recognition was pending the user's explicit route choice and actual reading. The language search placeholder currently exposes common.search; this observed cosmetic issue did not block selecting the language and is not a reason to regenerate this accepted package.

Quiet-input handling and useful failures (0.5.8)

The first human dictation attempts failed with Runtime AI_OUTPUT_INVALID; the App displayed only a failure heading because it discarded WebSocket and microphone error details. The original combined Runtime hint cannot identify the exact failing branch for those attempts. A separate controlled replay proved that the old App submitted 0.6 seconds of pure zero PCM before speech; Runtime rejected that Job with inspect_dashscope_asr_empty_final_sentence.

The App now uses its existing RMS threshold to gate recognition, retaining 200 ms of quiet pre-roll rather than submitting silent waiting periods. Pure silence followed by EOF ends an empty App session without an ASR call, without a history entry, and without pretending Runtime returned no_speech. Speech windows keep the captured input language, normal segmentation, cancellation and EOF handling. Page and global-widget errors retain a scrubbed actual cause/Job ID, with localized fallbacks when no cause exists; later socket closure cannot overwrite the first failure. Diagnostic logs keep failure class/Job identity, not audio or recognized text.

After fail-before/pass-after regressions, a real protected App WebSocket replay used two already approved synthetic English clips, leading silence and a pause: all 129,280 samples (8.08 seconds) were sent, both utterances completed and the EOF summary retained the same total duration. Recognition returned “May” instead of the generated script’s “Today” in the second sentence; that difference was retained, not corrected into a false perfect result. A separate two-second all-zero replay ended an empty App session. These replays did not use a microphone and do not establish that the original human Chinese path is fixed. The subsequent human re-verification is recorded below. The selected npm package combination is unchanged; the Runtime diagnostic split is platform commit d1ffdac28.

The 0.5.8 Windows package is dist/nimi-app/nimiplatform.voicestudio-0.5.8-windows-x86_64.nimiapp (1,020,593,899 bytes; SHA-256 7b06663c7e18b51d620bdc81d6efc213547cebe2cebe46bf792ad49681449b2f). Desktop completed its normal local update and launched the exact new release. Installed UI checks retained Chinese input language, cleanup off with its three dependent options disabled, and the four existing voices. App Access remained available and AIConfig revision 10 retained the ready Dashscope ASR selection. No microphone capture was started during these preparation checks. Human recognition was not claimed from those preparation checks or the synthetic replay.

Installed human dictation and account recovery

With explicit user approval for the existing Dashscope Cloud route, Chinese input language and cleanup off, installed 0.5.8 captured actual human speech and saved two raw utterances (displayed durations 4.4 and 6.7 seconds). The user confirmed that the repetition in the second utterance was their own spoken correction, not an ASR or stitching defect. The original recognized text was left unchanged. Native export wrote .nimi/local/exports/installed-0.5.8-live-zh-raw.txt (189 bytes), containing each utterance once. Requested input language remained zh; the model's unknown detected language was not relabeled as Chinese. Both original records and their metadata survived a normal stop and launch. Existing manual-edit/save verification was reused rather than altering these faithful human results.

After that restart, Desktop reported that its account session could no longer refresh; the old App session was revoked. This was kept separate from the successful recognition/export/storage results and was not treated as an App lifecycle defect. The user completed the normal Desktop login. With no active inference, a normal stop and launch of the same 0.5.8 installation restored authenticated operation: App Access available, five ready capabilities at AIConfig revision 10, a green Nimi indicator and enabled input controls. The two human records remained intact. No code change, repack, new model call or repeated recording was used for account recovery. The installed App is left running and development is stopped; the selected Windows scope is complete. Public publication and Catalog submission remain separate and were not performed.

Support

For missing AI access or model configuration, check Desktop App Access and Settings → Nimi. For an App startup failure, restart from Desktop and retain the visible error, App version and affected action for the fork maintainer. Keep the disclosed data directory intact; deleting voices or projects is not a repair step. Do not include credentials in diagnostic material.

License and upstream

This fork retains the original AGPL-3.0 license, notices and contributor attribution. Adaptation began at upstream baseline 4e55180f700e2ce1b39195ec7377b9b3da8e20b2. Archived upstream workflows and installation material are historical references, not active Nimi release instructions. This work does not publish a release or submit a Catalog entry.

About

VoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription & audiobook creation in 646 languages.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages