From 8bc8661930b7ef071bce1d99800e6ea6b2b36f87 Mon Sep 17 00:00:00 2001 From: remsky Date: Tue, 14 Jan 2025 06:37:03 -0700 Subject: [PATCH] fix: update model directory paths and improve logging in TTS services --- api/src/core/config.py | 2 +- api/src/services/tts_base.py | 3 +++ api/src/services/tts_gpu.py | 2 +- docker/cpu/Dockerfile | 14 +++++++++----- docker/cpu/docker-compose.yml | 18 +++++++++--------- docker/gpu/Dockerfile | 6 +++--- docker/gpu/docker-compose.yml | 12 ++++++------ 7 files changed, 32 insertions(+), 25 deletions(-) diff --git a/api/src/core/config.py b/api/src/core/config.py index 834f145..3f44350 100644 --- a/api/src/core/config.py +++ b/api/src/core/config.py @@ -13,7 +13,7 @@ class Settings(BaseSettings): output_dir: str = "output" output_dir_size_limit_mb: float = 500.0 # Maximum size of output directory in MB default_voice: str = "af" - model_dir: str = "/app/api/model_files" # Base directory for model files + model_dir: str = "/app/models" # Base directory for model files pytorch_model_path: str = "kokoro-v0_19.pth" onnx_model_path: str = "kokoro-v0_19.onnx" voices_dir: str = "voices" diff --git a/api/src/services/tts_base.py b/api/src/services/tts_base.py index 6076ebf..3c87cfd 100644 --- a/api/src/services/tts_base.py +++ b/api/src/services/tts_base.py @@ -39,6 +39,9 @@ class TTSBaseModel(ABC): cls._device = "cpu" model_path = os.path.join(settings.model_dir, settings.onnx_model_path) logger.info(f"Initializing model on {cls._device}") + logger.info(f"Model dir: {settings.model_dir}") + logger.info(f"Model path: {model_path}") + logger.info(f"Files in model dir: {os.listdir(settings.model_dir)}") # Initialize model first model = cls.initialize(settings.model_dir, model_path=model_path) diff --git a/api/src/services/tts_gpu.py b/api/src/services/tts_gpu.py index d0e166a..d2b8a44 100644 --- a/api/src/services/tts_gpu.py +++ b/api/src/services/tts_gpu.py @@ -3,7 +3,7 @@ import time import numpy as np import torch -from builds.models import build_model +from ..builds.models import build_model from loguru import logger from ..core.config import settings diff --git a/docker/cpu/Dockerfile b/docker/cpu/Dockerfile index 055043f..5075a02 100644 --- a/docker/cpu/Dockerfile +++ b/docker/cpu/Dockerfile @@ -16,17 +16,21 @@ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ RUN useradd -m -u 1000 appuser # Create directories and set ownership -RUN mkdir -p /app/api/model_files && \ +RUN mkdir -p /app/models && \ mkdir -p /app/api/src/voices && \ chown -R appuser:appuser /app USER appuser # Download and extract models -WORKDIR /app/api/model_files -RUN curl -L -o model.tar.gz https://github.com/remsky/Kokoro-FastAPI/releases/download/v0.0.1/kokoro-82m-onnx.tar.gz && \ +WORKDIR /app/models +RUN set -x && \ + curl -L -o model.tar.gz https://github.com/remsky/Kokoro-FastAPI/releases/download/v0.0.1/kokoro-82m-onnx.tar.gz && \ + echo "Downloaded model.tar.gz:" && ls -lh model.tar.gz && \ tar xzf model.tar.gz && \ - rm model.tar.gz + echo "Contents after extraction:" && ls -lhR && \ + rm model.tar.gz && \ + echo "Final contents:" && ls -lhR # Download and extract voice models WORKDIR /app/api/src/voices @@ -54,7 +58,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \ # Set environment variables ENV PYTHONUNBUFFERED=1 -ENV PYTHONPATH=/app:/app/Kokoro-82M +ENV PYTHONPATH=/app:/app/models ENV PATH="/app/.venv/bin:$PATH" ENV UV_LINK_MODE=copy diff --git a/docker/cpu/docker-compose.yml b/docker/cpu/docker-compose.yml index 72d08a5..6e89c76 100644 --- a/docker/cpu/docker-compose.yml +++ b/docker/cpu/docker-compose.yml @@ -1,17 +1,17 @@ name: kokoro-tts services: kokoro-tts: - image: ghcr.io/remsky/kokoro-fastapi-cpu:latest - # Uncomment below (and comment out above) to build from source instead of using the released image + image: ghcr.io/remsky/kokoro-fastapi-cpu:v0.1.0 # build: - # context: ../.. - # dockerfile: docker/cpu/Dockerfile + # context: ../.. + # dockerfile: docker/cpu/Dockerfile volumes: - ../../api/src:/app/api/src + - ../../api/src/voices:/app/api/src/voices ports: - "8880:8880" environment: - - PYTHONPATH=/app:/app/Kokoro-82M + - PYTHONPATH=/app:/app/models # ONNX Optimization Settings for vectorized operations - ONNX_NUM_THREADS=8 # Maximize core usage for vectorized ops - ONNX_INTER_OP_THREADS=4 # Higher inter-op for parallel matrix operations @@ -22,10 +22,10 @@ services: # Gradio UI service [Comment out everything below if you don't need it] gradio-ui: - image: ghcr.io/remsky/kokoro-fastapi:latest-ui + image: ghcr.io/remsky/kokoro-fastapi-ui:v0.1.0 # Uncomment below (and comment out above) to build from source instead of using the released image - # build: - # context: ../../ui + build: + context: ../../ui ports: - "7860:7860" volumes: @@ -34,4 +34,4 @@ services: environment: - GRADIO_WATCH=True # Enable hot reloading - PYTHONUNBUFFERED=1 # Ensure Python output is not buffered - - DISABLE_LOCAL_SAVING=false # Set to 'true' to disable local saving and hide file view \ No newline at end of file + - DISABLE_LOCAL_SAVING=false # Set to 'true' to disable local saving and hide file view diff --git a/docker/gpu/Dockerfile b/docker/gpu/Dockerfile index 766d8aa..9a5be8d 100644 --- a/docker/gpu/Dockerfile +++ b/docker/gpu/Dockerfile @@ -18,14 +18,14 @@ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ RUN useradd -m -u 1000 appuser # Create directories and set ownership -RUN mkdir -p /app/api/model_files && \ +RUN mkdir -p /app/models && \ mkdir -p /app/api/src/voices && \ chown -R appuser:appuser /app USER appuser # Download and extract models -WORKDIR /app/api/model_files +WORKDIR /app/models RUN curl -L -o model.tar.gz https://github.com/remsky/Kokoro-FastAPI/releases/download/v0.0.1/kokoro-82m-pytorch.tar.gz && \ tar xzf model.tar.gz && \ rm model.tar.gz @@ -56,7 +56,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \ # Set environment variables ENV PYTHONUNBUFFERED=1 -ENV PYTHONPATH=/app:/app/Kokoro-82M +ENV PYTHONPATH=/app:/app/models ENV PATH="/app/.venv/bin:$PATH" ENV UV_LINK_MODE=copy diff --git a/docker/gpu/docker-compose.yml b/docker/gpu/docker-compose.yml index d1f0622..4d1a789 100644 --- a/docker/gpu/docker-compose.yml +++ b/docker/gpu/docker-compose.yml @@ -1,17 +1,17 @@ name: kokoro-tts services: kokoro-tts: - image: ghcr.io/remsky/kokoro-fastapi-gpu:latest - # Uncomment below (and comment out above) to build from source instead of using the released image - # build: - # context: ../.. - # dockerfile: docker/gpu/Dockerfile + # image: ghcr.io/remsky/kokoro-fastapi-gpu:latest + build: + context: ../.. + dockerfile: docker/gpu/Dockerfile volumes: - ../../api/src:/app/api/src # Mount src for development + - ../../api/src/voices:/app/api/src/voices # Mount voices for persistence ports: - "8880:8880" environment: - - PYTHONPATH=/app:/app/Kokoro-82M + - PYTHONPATH=/app:/app/models deploy: resources: reservations: