gitextract_61mm52up/ ├── .agents/ │ └── skills/ │ ├── add-tts-engine/ │ │ └── SKILL.md │ ├── draft-release-notes/ │ │ └── SKILL.md │ └── release-bump/ │ └── SKILL.md ├── .biomeignore ├── .bumpversion.cfg ├── .dockerignore ├── .github/ │ └── workflows/ │ ├── build-windows.yml │ └── release.yml ├── .gitignore ├── .npmrc ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── SECURITY.md ├── app/ │ ├── components.json │ ├── index.html │ ├── package.json │ ├── plugins/ │ │ └── changelog.ts │ ├── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── AppFrame/ │ │ │ │ └── AppFrame.tsx │ │ │ ├── AudioPlayer/ │ │ │ │ └── AudioPlayer.tsx │ │ │ ├── AudioStudio/ │ │ │ │ └── .gitkeep │ │ │ ├── AudioTab/ │ │ │ │ └── AudioTab.tsx │ │ │ ├── Effects/ │ │ │ │ ├── EffectsChainEditor.tsx │ │ │ │ └── GenerationPicker.tsx │ │ │ ├── EffectsTab/ │ │ │ │ ├── EffectsDetail.tsx │ │ │ │ ├── EffectsList.tsx │ │ │ │ └── EffectsTab.tsx │ │ │ ├── Generation/ │ │ │ │ ├── EngineModelSelector.tsx │ │ │ │ ├── FloatingGenerateBox.tsx │ │ │ │ ├── GenerationForm.tsx │ │ │ │ └── ParalinguisticInput.tsx │ │ │ ├── History/ │ │ │ │ └── HistoryTable.tsx │ │ │ ├── MainEditor/ │ │ │ │ └── MainEditor.tsx │ │ │ ├── ModelsTab/ │ │ │ │ └── ModelsTab.tsx │ │ │ ├── ServerSettings/ │ │ │ │ ├── ConnectionForm.tsx │ │ │ │ ├── GenerationSettings.tsx │ │ │ │ ├── GpuAcceleration.tsx │ │ │ │ ├── ModelManagement.tsx │ │ │ │ ├── ModelProgress.tsx │ │ │ │ ├── ServerStatus.tsx │ │ │ │ └── UpdateStatus.tsx │ │ │ ├── ServerTab/ │ │ │ │ ├── AboutPage.tsx │ │ │ │ ├── ChangelogPage.tsx │ │ │ │ ├── GeneralPage.tsx │ │ │ │ ├── GenerationPage.tsx │ │ │ │ ├── GpuPage.tsx │ │ │ │ ├── LogsPage.tsx │ │ │ │ ├── ServerTab.tsx │ │ │ │ └── SettingRow.tsx │ │ │ ├── ShinyText.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── StoriesTab/ │ │ │ │ ├── StoriesTab.tsx │ │ │ │ ├── StoryChatItem.tsx │ │ │ │ ├── StoryContent.tsx │ │ │ │ ├── StoryList.tsx │ │ │ │ └── StoryTrackEditor.tsx │ │ │ ├── TitleBarDragRegion.tsx │ │ │ ├── VoiceProfiles/ │ │ │ │ ├── AudioSampleRecording.tsx │ │ │ │ ├── AudioSampleSystem.tsx │ │ │ │ ├── AudioSampleUpload.tsx │ │ │ │ ├── ProfileCard.tsx │ │ │ │ ├── ProfileForm.tsx │ │ │ │ ├── ProfileList.tsx │ │ │ │ ├── SampleList.tsx │ │ │ │ └── SampleUpload.tsx │ │ │ ├── VoicesTab/ │ │ │ │ ├── VoiceInspector.tsx │ │ │ │ └── VoicesTab.tsx │ │ │ └── ui/ │ │ │ ├── alert-dialog.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── circle-button.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── form.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── multi-select.tsx │ │ │ ├── popover.tsx │ │ │ ├── progress.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── slider.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ ├── toast.tsx │ │ │ ├── toaster.tsx │ │ │ ├── toggle.tsx │ │ │ └── use-toast.ts │ │ ├── global.d.ts │ │ ├── hooks/ │ │ │ ├── useAutoUpdater.ts │ │ │ └── useAutoUpdater.tsx │ │ ├── index.css │ │ ├── lib/ │ │ │ ├── api/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── client.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── ApiError.ts │ │ │ │ │ ├── ApiRequestOptions.ts │ │ │ │ │ ├── ApiResult.ts │ │ │ │ │ ├── CancelablePromise.ts │ │ │ │ │ ├── OpenAPI.ts │ │ │ │ │ └── request.ts │ │ │ │ ├── index.ts │ │ │ │ ├── models/ │ │ │ │ │ ├── Body_add_profile_sample_profiles__profile_id__samples_post.ts │ │ │ │ │ ├── Body_transcribe_audio_transcribe_post.ts │ │ │ │ │ ├── GenerationRequest.ts │ │ │ │ │ ├── GenerationResponse.ts │ │ │ │ │ ├── HTTPValidationError.ts │ │ │ │ │ ├── HealthResponse.ts │ │ │ │ │ ├── HistoryListResponse.ts │ │ │ │ │ ├── HistoryResponse.ts │ │ │ │ │ ├── ModelDownloadRequest.ts │ │ │ │ │ ├── ModelStatus.ts │ │ │ │ │ ├── ModelStatusListResponse.ts │ │ │ │ │ ├── ProfileSampleResponse.ts │ │ │ │ │ ├── TranscriptionResponse.ts │ │ │ │ │ ├── ValidationError.ts │ │ │ │ │ ├── VoiceProfileCreate.ts │ │ │ │ │ └── VoiceProfileResponse.ts │ │ │ │ ├── schemas/ │ │ │ │ │ ├── $Body_add_profile_sample_profiles__profile_id__samples_post.ts │ │ │ │ │ ├── $Body_transcribe_audio_transcribe_post.ts │ │ │ │ │ ├── $GenerationRequest.ts │ │ │ │ │ ├── $GenerationResponse.ts │ │ │ │ │ ├── $HTTPValidationError.ts │ │ │ │ │ ├── $HealthResponse.ts │ │ │ │ │ ├── $HistoryListResponse.ts │ │ │ │ │ ├── $HistoryResponse.ts │ │ │ │ │ ├── $ModelDownloadRequest.ts │ │ │ │ │ ├── $ModelStatus.ts │ │ │ │ │ ├── $ModelStatusListResponse.ts │ │ │ │ │ ├── $ProfileSampleResponse.ts │ │ │ │ │ ├── $TranscriptionResponse.ts │ │ │ │ │ ├── $ValidationError.ts │ │ │ │ │ ├── $VoiceProfileCreate.ts │ │ │ │ │ └── $VoiceProfileResponse.ts │ │ │ │ ├── services/ │ │ │ │ │ └── DefaultService.ts │ │ │ │ └── types.ts │ │ │ ├── constants/ │ │ │ │ ├── languages.ts │ │ │ │ └── ui.ts │ │ │ ├── hooks/ │ │ │ │ ├── useAudioPlayer.ts │ │ │ │ ├── useAudioRecording.ts │ │ │ │ ├── useGeneration.ts │ │ │ │ ├── useGenerationForm.ts │ │ │ │ ├── useGenerationProgress.ts │ │ │ │ ├── useHistory.ts │ │ │ │ ├── useModelDownloadToast.tsx │ │ │ │ ├── useProfiles.ts │ │ │ │ ├── useRestoreActiveTasks.tsx │ │ │ │ ├── useServer.ts │ │ │ │ ├── useStories.ts │ │ │ │ ├── useStoryPlayback.ts │ │ │ │ ├── useSystemAudioCapture.ts │ │ │ │ └── useTranscription.ts │ │ │ └── utils/ │ │ │ ├── .gitkeep │ │ │ ├── audio.ts │ │ │ ├── cn.ts │ │ │ ├── debug.ts │ │ │ ├── format.ts │ │ │ └── parseChangelog.ts │ │ ├── main.tsx │ │ ├── platform/ │ │ │ ├── PlatformContext.tsx │ │ │ └── types.ts │ │ ├── router.tsx │ │ ├── stores/ │ │ │ ├── audioChannelStore.ts │ │ │ ├── effectsStore.ts │ │ │ ├── generationStore.ts │ │ │ ├── logStore.ts │ │ │ ├── playerStore.ts │ │ │ ├── serverStore.ts │ │ │ ├── storyStore.ts │ │ │ └── uiStore.ts │ │ └── types/ │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── backend/ │ ├── README.md │ ├── STYLE_GUIDE.md │ ├── __init__.py │ ├── app.py │ ├── backends/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── chatterbox_backend.py │ │ ├── chatterbox_turbo_backend.py │ │ ├── hume_backend.py │ │ ├── kokoro_backend.py │ │ ├── luxtts_backend.py │ │ ├── mlx_backend.py │ │ └── pytorch_backend.py │ ├── build_binary.py │ ├── config.py │ ├── database/ │ │ ├── __init__.py │ │ ├── migrations.py │ │ ├── models.py │ │ ├── seed.py │ │ └── session.py │ ├── main.py │ ├── models.py │ ├── pyproject.toml │ ├── requirements-mlx.txt │ ├── requirements.txt │ ├── routes/ │ │ ├── __init__.py │ │ ├── audio.py │ │ ├── channels.py │ │ ├── cuda.py │ │ ├── effects.py │ │ ├── generations.py │ │ ├── health.py │ │ ├── history.py │ │ ├── models.py │ │ ├── profiles.py │ │ ├── stories.py │ │ ├── tasks.py │ │ └── transcription.py │ ├── server.py │ ├── services/ │ │ ├── __init__.py │ │ ├── channels.py │ │ ├── cuda.py │ │ ├── effects.py │ │ ├── export_import.py │ │ ├── generation.py │ │ ├── history.py │ │ ├── profiles.py │ │ ├── stories.py │ │ ├── task_queue.py │ │ ├── transcribe.py │ │ ├── tts.py │ │ └── versions.py │ ├── tests/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── test_cors.py │ │ ├── test_generation_download.py │ │ ├── test_profile_duplicate_names.py │ │ ├── test_progress.py │ │ ├── test_qwen_download.py │ │ └── test_whisper_download.py │ └── utils/ │ ├── __init__.py │ ├── audio.py │ ├── cache.py │ ├── chunked_tts.py │ ├── dac_shim.py │ ├── effects.py │ ├── hf_offline_patch.py │ ├── hf_progress.py │ ├── images.py │ ├── platform_detect.py │ ├── progress.py │ └── tasks.py ├── biome.json ├── data/ │ └── .gitkeep ├── docker-compose.yml ├── docs/ │ ├── .gitignore │ ├── README.md │ ├── app/ │ │ ├── [[...slug]]/ │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── api/ │ │ │ └── search/ │ │ │ └── route.ts │ │ ├── global.css │ │ ├── layout.tsx │ │ ├── llms-full.txt/ │ │ │ └── route.ts │ │ ├── llms.mdx/ │ │ │ └── docs/ │ │ │ └── [[...slug]]/ │ │ │ └── route.ts │ │ └── og/ │ │ └── docs/ │ │ └── [...slug]/ │ │ └── route.tsx │ ├── cli.json │ ├── components/ │ │ ├── ai/ │ │ │ └── page-actions.tsx │ │ ├── api-page.client.tsx │ │ ├── api-page.tsx │ │ └── ui/ │ │ ├── button.tsx │ │ └── popover.tsx │ ├── content/ │ │ └── docs/ │ │ ├── README.md │ │ ├── TROUBLESHOOTING.md │ │ ├── api-reference/ │ │ │ ├── general/ │ │ │ │ ├── health_health_get.mdx │ │ │ │ ├── meta.json │ │ │ │ └── root__get.mdx │ │ │ ├── generation/ │ │ │ │ ├── generate_speech_generate_post.mdx │ │ │ │ ├── get_audio_audio__generation_id__get.mdx │ │ │ │ ├── meta.json │ │ │ │ └── transcribe_audio_transcribe_post.mdx │ │ │ ├── history/ │ │ │ │ ├── delete_generation_history__generation_id__delete.mdx │ │ │ │ ├── get_generation_history__generation_id__get.mdx │ │ │ │ ├── get_stats_history_stats_get.mdx │ │ │ │ ├── list_history_history_get.mdx │ │ │ │ └── meta.json │ │ │ ├── meta.json │ │ │ ├── models/ │ │ │ │ ├── get_model_progress_models_progress__model_name__get.mdx │ │ │ │ ├── get_model_status_models_status_get.mdx │ │ │ │ ├── load_model_models_load_post.mdx │ │ │ │ ├── meta.json │ │ │ │ ├── trigger_model_download_models_download_post.mdx │ │ │ │ └── unload_model_models_unload_post.mdx │ │ │ └── profiles/ │ │ │ ├── add_profile_sample_profiles__profile_id__samples_post.mdx │ │ │ ├── create_profile_profiles_post.mdx │ │ │ ├── delete_profile_profiles__profile_id__delete.mdx │ │ │ ├── delete_profile_sample_profiles_samples__sample_id__delete.mdx │ │ │ ├── get_profile_profiles__profile_id__get.mdx │ │ │ ├── get_profile_samples_profiles__profile_id__samples_get.mdx │ │ │ ├── list_profiles_profiles_get.mdx │ │ │ ├── meta.json │ │ │ └── update_profile_profiles__profile_id__put.mdx │ │ ├── developer/ │ │ │ ├── architecture.mdx │ │ │ ├── audio-channels.mdx │ │ │ ├── autoupdater.mdx │ │ │ ├── building.mdx │ │ │ ├── contributing.mdx │ │ │ ├── effects-pipeline.mdx │ │ │ ├── history.mdx │ │ │ ├── meta.json │ │ │ ├── model-management.mdx │ │ │ ├── setup.mdx │ │ │ ├── stories.mdx │ │ │ ├── transcription.mdx │ │ │ ├── tts-engines.mdx │ │ │ ├── tts-generation.mdx │ │ │ └── voice-profiles.mdx │ │ ├── index.mdx │ │ ├── meta.json │ │ └── overview/ │ │ ├── building-stories.mdx │ │ ├── creating-voice-profiles.mdx │ │ ├── docker.mdx │ │ ├── generating-speech.mdx │ │ ├── generation-history.mdx │ │ ├── installation.mdx │ │ ├── introduction.mdx │ │ ├── meta.json │ │ ├── quick-start.mdx │ │ ├── recording-transcription.mdx │ │ ├── remote-mode.mdx │ │ ├── stories-editor.mdx │ │ ├── troubleshooting.mdx │ │ └── voice-cloning.mdx │ ├── lib/ │ │ ├── cn.ts │ │ ├── layout.shared.tsx │ │ ├── openapi.ts │ │ └── source.ts │ ├── mdx-components.tsx │ ├── next.config.mjs │ ├── notes/ │ │ ├── BACKEND_CODE_REVIEW.md │ │ ├── MIGRATION.md │ │ ├── PROJECT_STATUS.md │ │ ├── RELEASE_v0.2.0.md │ │ └── issue-pain-points.md │ ├── openapi.json │ ├── package.json │ ├── plans/ │ │ ├── API_REFACTOR_PLAN.md │ │ ├── CUDA_LIBS_ADDON.md │ │ ├── DOCKER_DEPLOYMENT.md │ │ └── OPENAI_SUPPORT.md │ ├── postcss.config.mjs │ ├── scripts/ │ │ └── generate-openapi.ts │ ├── source.config.ts │ └── tsconfig.json ├── justfile ├── landing/ │ ├── .gitignore │ ├── README.md │ ├── components.json │ ├── next.config.js │ ├── nixpacks.toml │ ├── package.json │ ├── postcss.config.js │ ├── public/ │ │ ├── audio/ │ │ │ ├── fireship.webm │ │ │ ├── jarvis.webm │ │ │ ├── linus.webm │ │ │ ├── morganfreeman.webm │ │ │ ├── samaltman.webm │ │ │ └── samjackson.webm │ │ └── voicebox-demo.webm │ ├── src/ │ │ ├── app/ │ │ │ ├── api/ │ │ │ │ ├── releases/ │ │ │ │ │ └── route.ts │ │ │ │ └── stars/ │ │ │ │ └── route.ts │ │ │ ├── download/ │ │ │ │ └── [platform]/ │ │ │ │ └── route.ts │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ ├── linux-install/ │ │ │ │ └── page.tsx │ │ │ ├── og/ │ │ │ │ └── page.tsx │ │ │ └── page.tsx │ │ ├── components/ │ │ │ ├── Banner.tsx │ │ │ ├── ControlUI.tsx │ │ │ ├── DownloadSection.tsx │ │ │ ├── Features.tsx │ │ │ ├── Footer.tsx │ │ │ ├── Header.tsx │ │ │ ├── LandingAudioPlayer.tsx │ │ │ ├── Navbar.tsx │ │ │ ├── PlatformIcons.tsx │ │ │ ├── VoiceCreator.tsx │ │ │ └── ui/ │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── feature-card.tsx │ │ │ ├── hero.tsx │ │ │ ├── section.tsx │ │ │ └── separator.tsx │ │ └── lib/ │ │ ├── constants.ts │ │ ├── releases.ts │ │ └── utils.ts │ ├── tailwind.config.js │ └── tsconfig.json ├── package.json ├── requirements.txt ├── scripts/ │ ├── build-server.sh │ ├── convert-assets.sh │ ├── generate-api.sh │ ├── package_cuda.py │ ├── prepare-release.sh │ ├── setup-dev-sidecar.js │ ├── test_download_progress.py │ └── update-icons.sh ├── tauri/ │ ├── assets/ │ │ └── voicebox.icon/ │ │ └── icon.json │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── main.tsx │ │ └── platform/ │ │ ├── audio.ts │ │ ├── filesystem.ts │ │ ├── index.ts │ │ ├── lifecycle.ts │ │ ├── metadata.ts │ │ └── updater.ts │ ├── src-tauri/ │ │ ├── Cargo.toml │ │ ├── Entitlements.plist │ │ ├── Info.plist │ │ ├── build.rs │ │ ├── capabilities/ │ │ │ └── default.json │ │ ├── gen/ │ │ │ └── schemas/ │ │ │ ├── acl-manifests.json │ │ │ ├── capabilities.json │ │ │ ├── desktop-schema.json │ │ │ ├── macOS-schema.json │ │ │ └── windows-schema.json │ │ ├── icons/ │ │ │ ├── android/ │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ └── ic_launcher.xml │ │ │ │ └── values/ │ │ │ │ └── ic_launcher_background.xml │ │ │ └── icon.icns │ │ ├── src/ │ │ │ ├── audio_capture/ │ │ │ │ ├── linux.rs │ │ │ │ ├── macos.rs │ │ │ │ ├── mod.rs │ │ │ │ └── windows.rs │ │ │ ├── audio_output.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── tauri.conf.json │ │ └── tests/ │ │ └── audio_capture_test.rs │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts └── web/ ├── index.html ├── package.json ├── src/ │ ├── main.tsx │ └── platform/ │ ├── audio.ts │ ├── filesystem.ts │ ├── index.ts │ ├── lifecycle.ts │ ├── metadata.ts │ └── updater.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts