# Key Working Directories Used by Voice-Pro: Complete File Structure Guide

> Explore the key working directories in Voice-Pro: workspace, model, gradio, and dynamic job folders. Understand the file structure for efficient data management.

- Repository: [ABUS/voice-pro](https://github.com/abus-aikorea/voice-pro)
- Tags: how-to-guide
- Published: 2026-08-03

---

**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`](https://github.com/abus-aikorea/voice-pro/blob/main/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`](https://github.com/abus-aikorea/voice-pro/blob/main/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 content
- **`model/`** – Centralized storage for downloaded AI weights and voice samples
- **`gradio/`** – Ephemeral storage for UI previews and intermediate media
- **`workspace/<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`](https://github.com/abus-aikorea/voice-pro/blob/main/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 via `path_youtube_folder()`.
- **`workspace/live/`** – Contains files for the live-translation mode, capturing real-time microphone input. Accessed via `path_live_folder()`.
- **`workspace/translate/`** – Holds intermediate assets for the translation pipeline, including source subtitles and translated SRT files. Accessed via `path_translate_folder()`.
- **`workspace/dubbing/`** – Final destination for dubbed video and audio assets generated by the "Gulliver" tab. Accessed via `path_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:

```python
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`](https://github.com/abus-aikorea/voice-pro/blob/main/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`](https://github.com/abus-aikorea/voice-pro/blob/main/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 in [`app/abus_tts_edge.py`](https://github.com/abus-aikorea/voice-pro/blob/main/app/abus_tts_edge.py))
- **`model/kokoro/`** – Stores Kokoro TTS voice assets and configuration (referenced in [`app/abus_tts_kokoro.py`](https://github.com/abus-aikorea/voice-pro/blob/main/app/abus_tts_kokoro.py))
- **`model/cosyvoice/`** – Houses CosyVoice model weights and custom voice samples (referenced in [`app/abus_tts_cosyvoice.py`](https://github.com/abus-aikorea/voice-pro/blob/main/app/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()`:

```python
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`](https://github.com/abus-aikorea/voice-pro/blob/main/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 to `workspace/`, creating the directory if missing
- **`path_model_folder()`** – Returns the absolute path to `model/`
- **`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`](https://github.com/abus-aikorea/voice-pro/blob/main/app/abus_path.py)**, which provides deterministic helpers like `path_workspace_folder()` and `path_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 under `model/`.
- **Dynamic job folders prevent collisions** via `path_workspace_subfolder()` and `path_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`](https://github.com/abus-aikorea/voice-pro/blob/main/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`](https://github.com/abus-aikorea/voice-pro/blob/main/app/abus_path.py) to return an absolute path on a different drive or network share. All TTS engines ([`app/abus_tts_edge.py`](https://github.com/abus-aikorea/voice-pro/blob/main/app/abus_tts_edge.py), [`app/abus_tts_kokoro.py`](https://github.com/abus-aikorea/voice-pro/blob/main/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()`.