Key Working Directories Used by Voice-Pro: Complete File Structure Guide
Voice-Pro organizes all runtime data, model assets, and temporary files under four primary directories—workspace/, model/, gradio/, and dynamic job-specific subfolders—centrally managed in app/abus_path.py.
The open-source Voice-Pro repository (abus-aikorea/voice-pro) implements a strict filesystem hierarchy to isolate user data, AI models, and temporary processing files. Understanding these key working directories used by Voice-Pro is essential for debugging, customization, and storage management when deploying the application locally.
Core Directory Architecture
Voice-Pro establishes its filesystem layout through the app/abus_path.py module, which exposes deterministic path helpers used throughout the codebase. The architecture separates concerns into three persistent storage areas and one temporary workspace:
workspace/– Primary output directory for all user-generated contentmodel/– Centralized storage for downloaded AI weights and voice samplesgradio/– Ephemeral storage for UI previews and intermediate mediaworkspace/<job-id>/– Dynamic timestamped subfolders created per processing run
This segregation ensures that temporary Gradio files can be safely purged without affecting downloaded models or final output assets.
The Workspace Directory (workspace/)
The workspace/ folder serves as the primary destination for every job result, including downloaded media, extracted audio tracks, transcription outputs, translations, and synthesized speech files. According to the Voice-Pro source code, this directory is initialized at application startup via start-voice.py and accessed through the path_workspace_folder() helper.
Output Subdirectories
Voice-Pro creates specialized subfolders under workspace/ to categorize different pipeline outputs:
workspace/youtube/– Stores media downloaded from YouTube or other URLs prior to processing. Accessed viapath_youtube_folder().workspace/live/– Contains files for the live-translation mode, capturing real-time microphone input. Accessed viapath_live_folder().workspace/translate/– Holds intermediate assets for the translation pipeline, including source subtitles and translated SRT files. Accessed viapath_translate_folder().workspace/dubbing/– Final destination for dubbed video and audio assets generated by the "Gulliver" tab. Accessed viapath_dubbing_folder().
Dynamic Job Folders
Each processing run generates an isolated timestamped subfolder under workspace/ to prevent file collisions. The path_workspace_subfolder() and path_new_filename() utilities create these directories dynamically:
from app.abus_path import path_workspace_subfolder, path_new_filename
import os
# Create a unique folder for this job
job_folder = path_workspace_subfolder() # → workspace/20241012-153045/
# Generate a unique filename within the workspace
new_file = path_new_filename(ext=".wav") # → 20241012-153045123456.wav
full_path = os.path.join(path_workspace_folder(), new_file)
The Model Directory (model/)
The model/ directory stores all downloaded AI weights, auxiliary data, and engine-specific assets. This folder is automatically created on first use and populated by various TTS (Text-to-Speech) engines. Access is unified through path_model_folder() in app/abus_path.py.
RVC Model Storage
The RVC (Retrieval-based Voice Conversion) engine maintains its assets in model/rvc/models/, including embedder files, predictor files, and pretrained checkpoints. The _prepare_model_folder() method inside app/abus_rvc.py initializes this structure by calling path_model_folder() and appending the rvc/models/ suffix.
TTS Engine Subdirectories
Individual TTS engines create dedicated subfolders under model/:
model/edge-tts/– Contains language files and sample data for Microsoft Edge TTS (referenced inapp/abus_tts_edge.py)model/kokoro/– Stores Kokoro TTS voice assets and configuration (referenced inapp/abus_tts_kokoro.py)model/cosyvoice/– Houses CosyVoice model weights and custom voice samples (referenced inapp/abus_tts_cosyvoice.py)
Temporary and UI Directories (gradio/)
The gradio/ folder functions as a temporary staging area for UI-related files, including generated video previews and intermediate audio clips displayed in the Gradio interface. Unlike the workspace, contents here are considered ephemeral and safe to delete. Access this directory via path_gradio_folder():
from app.abus_path import path_gradio_folder, cmd_open_explorer
# Open the Gradio temp folder in the system file explorer
cmd_open_explorer(path_gradio_folder())
Path Management Implementation in abus_path.py
All directory resolution logic is centralized in app/abus_path.py, which exports helper functions ensuring consistent path handling across the application. Key utilities include:
path_workspace_folder()– Returns the absolute path toworkspace/, creating the directory if missingpath_model_folder()– Returns the absolute path tomodel/path_shorten(),path_add_postfix(),path_change_ext()– Filename manipulation utilities that build upon the core directories
This centralized approach allows the application to relocate entire directory trees by modifying a single source file, rather than scattering path literals throughout the codebase.
Summary
- Voice-Pro uses four primary directory types:
workspace/for outputs,model/for AI weights,gradio/for temporary UI files, and dynamic timestamped subfolders for job isolation. - All path resolution flows through
app/abus_path.py, which provides deterministic helpers likepath_workspace_folder()andpath_model_folder(). - The workspace organizes content by function, with dedicated subdirectories for YouTube downloads (
youtube/), live translation (live/), subtitle processing (translate/), and final dubbing (dubbing/). - Model assets are engine-specific, with RVC models stored in
model/rvc/models/and TTS engines (Edge, Kokoro, CosyVoice) maintaining their own subfolders undermodel/. - Dynamic job folders prevent collisions via
path_workspace_subfolder()andpath_new_filename(), which generate timestamped directories and filenames for each processing run.
Frequently Asked Questions
Where does Voice-Pro save downloaded YouTube videos?
Voice-Pro saves downloaded YouTube media to workspace/youtube/, accessible via the path_youtube_folder() helper defined in app/abus_path.py. This location serves as a staging area before audio extraction and processing begin.
How does Voice-Pro prevent file collisions between different jobs?
The application creates unique timestamped subfolders under workspace/ for each processing run using path_workspace_subfolder() and path_new_filename(). These utilities generate paths like workspace/20241012-153045/ and filenames like 20241012-153045123456.wav, ensuring isolation between concurrent or sequential jobs.
Can I move the model directory to a different drive?
While the default location is relative to the application root, you can modify path_model_folder() in app/abus_path.py to return an absolute path on a different drive or network share. All TTS engines (app/abus_tts_edge.py, app/abus_tts_kokoro.py, etc.) and the RVC module reference this central function, so changing it once updates the entire application.
What is the difference between the workspace and gradio directories?
The workspace/ directory contains persistent user outputs—final videos, audio files, transcriptions, and translations that should be preserved. The gradio/ directory holds temporary files generated for UI previews and intermediate processing steps that can be safely deleted after the session ends. The former is accessed via path_workspace_folder(), while the latter uses path_gradio_folder().
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →