From bcd7403cd0b2b4de2e1b4cdddc977e025705ca68 Mon Sep 17 00:00:00 2001 From: Lex-au Date: Sun, 23 Mar 2025 07:48:07 +1100 Subject: [PATCH] v1.1.0 lgtm --- .env.example | 18 ++ README.md | 101 +++++++- app.py | 202 ++++++++++++++- docs/ServerConfig.png | Bin 0 -> 49674 bytes docs/terminal.png | Bin 54975 -> 138626 bytes requirements.txt | 41 ++- templates/tts.html | 243 ++++++++++++++++++ tts_engine/inference.py | 526 ++++++++++++++++++++++++++++++++------- tts_engine/speechpipe.py | 111 +++++++-- 9 files changed, 1104 insertions(+), 138 deletions(-) create mode 100644 .env.example create mode 100644 docs/ServerConfig.png diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..0ad4ec9 --- /dev/null +++ b/.env.example @@ -0,0 +1,18 @@ +# Orpheus-FastAPI Configuration +# Copy this file to .env and customize as needed + +# Server connection settings +ORPHEUS_API_URL=http://127.0.0.1:1234/v1/completions +ORPHEUS_API_TIMEOUT=120 # You should scale this value based on max tokens and your inference speed + +# Generation parameters +ORPHEUS_MAX_TOKENS=8192 # If you want longer completions, increase this value +ORPHEUS_TEMPERATURE=0.6 +ORPHEUS_TOP_P=0.9 +# Repetition penalty is now hardcoded to 1.1 for stability (this is a model constraint) - this setting is no longer used +# ORPHEUS_REPETITION_PENALTY=1.1 +ORPHEUS_SAMPLE_RATE=24000 + +# Web UI settings (keep in mind that the web UI is not secure and should not be exposed to the internet) +ORPHEUS_PORT=5005 +ORPHEUS_HOST=0.0.0.0 diff --git a/README.md b/README.md index 973f0c6..0d9c376 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,15 @@ High-performance Text-to-Speech server with OpenAI-compatible API, 8 voices, emotion tags, and modern web UI. Optimized for RTX GPUs. +## Changelog + +**v1.1.0** (2025-03-23) +- ✨ Added long-form audio support with sentence-based batching and crossfade stitching +- 🔊 Improved short audio quality with optimized token buffer handling +- 🔄 Enhanced environment variable support with .env file loading (configurable via UI) +- 🖥️ Added automatic hardware detection and optimization for different GPUs +- 📊 Implemented detailed performance reporting for audio generation + [GitHub Repository](https://github.com/Lex-au/Orpheus-FastAPI) ## Voice Demos @@ -27,7 +36,11 @@ Listen to sample outputs with different voices and emotions: - **High Performance**: Optimized for RTX GPUs with parallel processing - **Multiple Voices**: 8 different voice options with different characteristics - **Emotion Tags**: Support for laughter, sighs, and other emotional expressions -- **Long-form Audio**: Efficient generation of extended audio content in a single request +- **Unlimited Audio Length**: Generate audio of any length through intelligent batching +- **Smooth Transitions**: Crossfaded audio segments for seamless listening experience +- **Web UI Configuration**: Configure all server settings directly from the interface +- **Dynamic Environment Variables**: Update API endpoint, timeouts, and model parameters without editing files +- **Server Restart**: Apply configuration changes with one-click server restart ## Project Structure @@ -187,6 +200,55 @@ This server works as a frontend that connects to an external LLM inference serve For best performance, adjust the API_URL in `tts_engine/inference.py` to point to your LLM inference server endpoint. +### Hardware Detection and Optimization + +The system features intelligent hardware detection that automatically optimizes performance based on your hardware capabilities: + +- **High-End GPU Mode** (dynamically detected based on capabilities): + - Triggered by either: 16GB+ VRAM, compute capability 8.0+, or 12GB+ VRAM with 7.0+ compute capability + - Advanced parallel processing with 4 workers + - Optimized batch sizes (32 tokens) + - High-throughput parallel file I/O + - Full hardware details displayed (name, VRAM, compute capability) + - GPU-specific optimizations automatically applied + +- **Standard GPU Mode** (other CUDA-capable GPUs): + - Efficient parallel processing + - GPU-optimized parameters + - CUDA acceleration where beneficial + - Detailed GPU specifications + +- **CPU Mode** (when no GPU is available): + - Conservative processing with 2 workers + - Optimized memory usage + - Smaller batch sizes (16 tokens) + - Sequential file I/O + - Detailed CPU cores, threads, and RAM information + +No manual configuration is needed - the system automatically detects hardware capabilities and adapts for optimal performance across different generations of GPUs and CPUs. + +### Token Processing Optimization + +The token processing system has been optimized with mathematically aligned parameters: +- Uses a context window of 49 tokens (7²) +- Processes in batches of 7 tokens (Orpheus model standard) +- This square relationship ensures complete token processing with no missed tokens +- Results in cleaner audio generation with proper token alignment +- Repetition penalty fixed at 1.1 for optimal quality generation (cannot be changed) + +### Long Text Processing + +The system features efficient batch processing for texts of any length: +- Automatically detects longer inputs (>1000 characters) +- Splits text at logical points to create manageable chunks +- Processes each chunk independently for reliability +- Combines audio segments with smooth 50ms crossfades +- Intelligently stitches segments in-memory for consistent output +- Handles texts of unlimited length with no truncation +- Provides detailed progress reporting for each batch + +**Note about long-form audio**: While the system now supports texts of unlimited length, there may be slight audio discontinuities between segments due to architectural constraints of the underlying model. The Orpheus model was designed for short to medium text segments, and our batching system works around this limitation by intelligently splitting and stitching content with minimal audible impact. + ### Integration with OpenWebUI You can easily integrate this TTS solution with [OpenWebUI](https://github.com/open-webui/open-webui) to add high-quality voice capabilities to your chatbot: @@ -194,7 +256,7 @@ You can easily integrate this TTS solution with [OpenWebUI](https://github.com/o 1. Start your Orpheus-FASTAPI server 2. In OpenWebUI, go to Admin Panel > Settings > Audio 3. Change TTS from Web API to OpenAI -4. Set APIBASE URL to your server address (e.g., `http://localhost:5005`) +4. Set APIBASE URL to your server address (e.g., `http://localhost:5005/v1`) 5. API Key can be set to "not-needed" 6. Set TTS Voice to one of the available voices: `tara`, `leah`, `jess`, `leo`, `dan`, `mia`, `zac`, or `zoe` 7. Set TTS Model to `tts-1` @@ -214,10 +276,22 @@ The inference server should be configured to expose an API endpoint that this Fa ### Environment Variables -You can configure the system by setting environment variables: +You can configure the system using environment variables or a `.env` file: - `ORPHEUS_API_URL`: URL of the LLM inference API (tts_engine/inference.py) - `ORPHEUS_API_TIMEOUT`: Timeout in seconds for API requests (default: 120) +- `ORPHEUS_MAX_TOKENS`: Maximum tokens to generate (default: 8192) +- `ORPHEUS_TEMPERATURE`: Temperature for generation (default: 0.6) +- `ORPHEUS_TOP_P`: Top-p sampling parameter (default: 0.9) +- `ORPHEUS_SAMPLE_RATE`: Audio sample rate in Hz (default: 24000) +- `ORPHEUS_PORT`: Web server port (default: 5005) +- `ORPHEUS_HOST`: Web server host (default: 0.0.0.0) + +The system now supports loading environment variables from a `.env` file in the project root, making it easier to configure without modifying system-wide environment settings. See `.env.example` for a template. + +![Server Configuration UI](https://lex-au.github.io/Orpheus-FastAPI/ServerConfig.png) + +Note: Repetition penalty is hardcoded to 1.1 and cannot be changed through environment variables as this is the only value that produces stable, high-quality output. Make sure the `ORPHEUS_API_URL` points to your running inference server. @@ -233,6 +307,27 @@ Make sure the `ORPHEUS_API_URL` points to your running inference server. To add new voices, update the `AVAILABLE_VOICES` list in `tts_engine/inference.py` and add corresponding descriptions in the HTML template. +## Using with llama.cpp + +When running the Orpheus model with llama.cpp, use these parameters to ensure optimal performance: + +```bash +./llama-server -m models/Orpheus-3b-FT-Q8_0.gguf \ + --ctx-size={{your ORPHEUS_MAX_TOKENS from .env}} \ + --n-predict={{your ORPHEUS_MAX_TOKENS from .env}} \ + --rope-scaling=linear +``` + +Important parameters: +- `--ctx-size`: Sets the context window size, should match your ORPHEUS_MAX_TOKENS setting +- `--n-predict`: Maximum tokens to generate, should match your ORPHEUS_MAX_TOKENS setting +- `--rope-scaling=linear`: Required for optimal positional encoding with the Orpheus model + +For extended audio generation (books, long narrations), you may want to increase your token limits: +1. Set ORPHEUS_MAX_TOKENS to 32768 or higher in your .env file (or via the Web UI) +2. Increase ORPHEUS_API_TIMEOUT to 1800 for longer processing times +3. Use the same values in your llama.cpp parameters (if you're using llama.cpp) + ## License This project is licensed under the Apache License 2.0 - see the LICENSE.txt file for details. diff --git a/app.py b/app.py index cd47368..549c651 100644 --- a/app.py +++ b/app.py @@ -4,14 +4,36 @@ import os import time +import asyncio from datetime import datetime from typing import List, Optional +from dotenv import load_dotenv + +# Function to ensure .env file exists +def ensure_env_file_exists(): + """Create a default .env file if one doesn't exist""" + if not os.path.exists(".env") and os.path.exists(".env.example"): + try: + # Copy .env.example to .env + with open(".env.example", "r") as example_file: + with open(".env", "w") as env_file: + env_file.write(example_file.read()) + print("✅ Created default configuration file at .env") + except Exception as e: + print(f"⚠️ Error creating default .env file: {e}") + +# Ensure .env file exists before loading environment variables +ensure_env_file_exists() + +# Load environment variables from .env file +load_dotenv(override=True) from fastapi import FastAPI, Request, Form, HTTPException, Depends from fastapi.responses import HTMLResponse, FileResponse, JSONResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from pydantic import BaseModel +import json from tts_engine import generate_speech_from_api, AVAILABLE_VOICES, DEFAULT_VOICE @@ -22,6 +44,10 @@ app = FastAPI( version="1.0.0" ) +# We'll use FastAPI's built-in startup complete mechanism +# The log message "INFO: Application startup complete." indicates +# that the application is ready + # Ensure directories exist os.makedirs("outputs", exist_ok=True) os.makedirs("static", exist_ok=True) @@ -53,6 +79,9 @@ async def create_speech_api(request: SpeechRequest): """ Generate speech from text using the Orpheus TTS model. Compatible with OpenAI's /v1/audio/speech endpoint. + + For longer texts (>1000 characters), batched generation is used + to improve reliability and avoid truncation issues. """ if not request.input: raise HTTPException(status_code=400, detail="Missing input text") @@ -61,12 +90,19 @@ async def create_speech_api(request: SpeechRequest): timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") output_path = f"outputs/{request.voice}_{timestamp}.wav" - # Generate speech + # Check if we should use batched generation + use_batching = len(request.input) > 1000 + if use_batching: + print(f"Using batched generation for long text ({len(request.input)} characters)") + + # Generate speech with automatic batching for long texts start = time.time() generate_speech_from_api( prompt=request.input, voice=request.voice, - output_file=output_path + output_file=output_path, + use_batching=use_batching, + max_batch_chars=1000 # Process in ~1000 character chunks (roughly 1 paragraph) ) end = time.time() generation_time = round(end - start, 2) @@ -95,9 +131,20 @@ async def speak(request: Request): timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") output_path = f"outputs/{voice}_{timestamp}.wav" - # Generate speech + # Check if we should use batched generation for longer texts + use_batching = len(text) > 1000 + if use_batching: + print(f"Using batched generation for long text ({len(text)} characters)") + + # Generate speech with batching for longer texts start = time.time() - generate_speech_from_api(prompt=text, voice=voice, output_file=output_path) + generate_speech_from_api( + prompt=text, + voice=voice, + output_file=output_path, + use_batching=use_batching, + max_batch_chars=1000 + ) end = time.time() generation_time = round(end - start, 2) @@ -120,11 +167,99 @@ async def root(request: Request): @app.get("/web/", response_class=HTMLResponse) async def web_ui(request: Request): """Main web UI for TTS generation""" + # Get current config for the Web UI + config = get_current_config() return templates.TemplateResponse( "tts.html", - {"request": request, "voices": AVAILABLE_VOICES} + {"request": request, "voices": AVAILABLE_VOICES, "config": config} ) +@app.get("/get_config") +async def get_config(): + """Get current configuration from .env file or defaults""" + config = get_current_config() + return JSONResponse(content=config) + +@app.post("/save_config") +async def save_config(request: Request): + """Save configuration to .env file""" + data = await request.json() + + # Convert values to proper types + for key, value in data.items(): + if key in ["ORPHEUS_MAX_TOKENS", "ORPHEUS_API_TIMEOUT", "ORPHEUS_PORT", "ORPHEUS_SAMPLE_RATE"]: + try: + data[key] = str(int(value)) + except (ValueError, TypeError): + pass + elif key in ["ORPHEUS_TEMPERATURE", "ORPHEUS_TOP_P"]: # Removed ORPHEUS_REPETITION_PENALTY since it's hardcoded now + try: + data[key] = str(float(value)) + except (ValueError, TypeError): + pass + + # Write configuration to .env file + with open(".env", "w") as f: + for key, value in data.items(): + f.write(f"{key}={value}\n") + + return JSONResponse(content={"status": "ok", "message": "Configuration saved successfully. Restart server to apply changes."}) + +@app.post("/restart_server") +async def restart_server(): + """Restart the server by touching a file that triggers Uvicorn's reload""" + import threading + + def touch_restart_file(): + # Wait a moment to let the response get back to the client + time.sleep(0.5) + + # Create or update restart.flag file to trigger reload + restart_file = "restart.flag" + with open(restart_file, "w") as f: + f.write(str(time.time())) + + print("🔄 Restart flag created, server will reload momentarily...") + + # Start the touch operation in a separate thread + threading.Thread(target=touch_restart_file, daemon=True).start() + + # Return success response + return JSONResponse(content={"status": "ok", "message": "Server is restarting. Please wait a moment..."}) + +def get_current_config(): + """Read current configuration from .env.example and .env files""" + # Default config from .env.example + default_config = {} + if os.path.exists(".env.example"): + with open(".env.example", "r") as f: + for line in f: + line = line.strip() + if line and not line.startswith("#") and "=" in line: + key, value = line.split("=", 1) + default_config[key] = value + + # Current config from .env + current_config = {} + if os.path.exists(".env"): + with open(".env", "r") as f: + for line in f: + line = line.strip() + if line and not line.startswith("#") and "=" in line: + key, value = line.split("=", 1) + current_config[key] = value + + # Merge configs, with current taking precedence + config = {**default_config, **current_config} + + # Add current environment variables + for key in config: + env_value = os.environ.get(key) + if env_value is not None: + config[key] = env_value + + return config + @app.post("/web/", response_class=HTMLResponse) async def generate_from_web( request: Request, @@ -145,9 +280,20 @@ async def generate_from_web( timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") output_path = f"outputs/{voice}_{timestamp}.wav" - # Generate speech + # Check if we should use batched generation for longer texts + use_batching = len(text) > 1000 + if use_batching: + print(f"Using batched generation for long text from web form ({len(text)} characters)") + + # Generate speech with batching for longer texts start = time.time() - generate_speech_from_api(prompt=text, voice=voice, output_file=output_path) + generate_speech_from_api( + prompt=text, + voice=voice, + output_file=output_path, + use_batching=use_batching, + max_batch_chars=1000 + ) end = time.time() generation_time = round(end - start, 2) @@ -166,5 +312,43 @@ async def generate_from_web( if __name__ == "__main__": import uvicorn - print("🔥 Starting Orpheus-FASTAPI Server (CUDA)") - uvicorn.run("app:app", host="0.0.0.0", port=5005, reload=True) + + # Check for required settings + required_settings = ["ORPHEUS_HOST", "ORPHEUS_PORT"] + missing_settings = [s for s in required_settings if s not in os.environ] + if missing_settings: + print(f"⚠️ Missing environment variable(s): {', '.join(missing_settings)}") + print(" Using fallback values for server startup.") + + # Get host and port from environment variables with better error handling + try: + host = os.environ.get("ORPHEUS_HOST") + if not host: + print("⚠️ ORPHEUS_HOST not set, using 0.0.0.0 as fallback") + host = "0.0.0.0" + except Exception: + print("⚠️ Error reading ORPHEUS_HOST, using 0.0.0.0 as fallback") + host = "0.0.0.0" + + try: + port = int(os.environ.get("ORPHEUS_PORT", "5005")) + except (ValueError, TypeError): + print("⚠️ Invalid ORPHEUS_PORT value, using 5005 as fallback") + port = 5005 + + print(f"🔥 Starting Orpheus-FASTAPI Server on {host}:{port}") + print(f"💬 Web UI available at http://{host if host != '0.0.0.0' else 'localhost'}:{port}") + print(f"📖 API docs available at http://{host if host != '0.0.0.0' else 'localhost'}:{port}/docs") + + # Read current API_URL for user information + api_url = os.environ.get("ORPHEUS_API_URL") + if not api_url: + print("⚠️ ORPHEUS_API_URL not set. Please configure in .env file before generating speech.") + else: + print(f"🔗 Using LLM inference server at: {api_url}") + + # Include restart.flag in the reload_dirs to monitor it for changes + extra_files = ["restart.flag"] if os.path.exists("restart.flag") else [] + + # Start with reload enabled to allow automatic restart when restart.flag changes + uvicorn.run("app:app", host=host, port=port, reload=True, reload_dirs=["."], reload_includes=["*.py", "*.html", "restart.flag"]) diff --git a/docs/ServerConfig.png b/docs/ServerConfig.png new file mode 100644 index 0000000000000000000000000000000000000000..eff22ba772a04c6124fe6577ea9b5e0f346d73ab GIT binary patch literal 49674 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

|040K&Ah+`1j;@UU;6m_QxL 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ℑ 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

Am88xoV6n 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

vDKJlUnyBn9t#=xycMF#8m_`;1*|~{JH|QV$? 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 diff --git a/requirements.txt b/requirements.txt index ed4ebef..3c32737 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,30 @@ -# Core dependencies -fastapi>=0.103.1 -uvicorn>=0.23.2 -jinja2>=3.1.2 -pydantic>=2.3.0 -numpy>=1.24.0 -requests>=2.31.0 -sounddevice>=0.4.6 -python-multipart>=0.0.6 +# Web Server Dependencies +fastapi==0.103.1 +uvicorn==0.23.2 +jinja2==3.1.2 +pydantic==2.3.0 +python-multipart==0.0.6 -# SNAC is required for audio generation from tokens -snac>=0.3.0 +# API and Communication +requests==2.31.0 +python-dotenv==1.0.0 -# PyTorch - Note: Install PyTorch with CUDA 12.4 support separately: -# pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 +# Audio Processing +numpy==1.24.0 +sounddevice==0.4.6 +snac==1.2.1 # Required for audio generation from tokens + +# System Utilities +psutil==5.9.0 + +# PyTorch - Install separately with CUDA support: +# On Windows/Linux: +# pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 +# On macOS: +# pip3 install torch torchvision torchaudio + +# Optional Dependencies +# For MP3 conversion (not currently implemented) +# pydub==0.25.1 +# For better sentence splitting (potential future improvement) +# nltk==3.8.1 diff --git a/templates/tts.html b/templates/tts.html index c9ca439..3a5c6bf 100644 --- a/templates/tts.html +++ b/templates/tts.html @@ -144,6 +144,7 @@ name="text" id="text" rows="4" + maxlength="8192" class="block w-full rounded-md border-dark-600 bg-dark-700 text-white shadow-sm focus:border-primary-500 focus:ring-primary-500 focus:ring-offset-dark-800 sm:text-sm px-3 py-2" placeholder="Enter text to convert to speech..." required @@ -191,6 +192,8 @@ + +

+ + +
+

Server Configuration

+

These settings will be saved to a .env file. Restart the server to apply changes.

+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + Fixed at 1.1 +
+
+ Value hardcoded to 1.1 for optimal generation quality +
+
+ + +
+ + +
+ +
+ + +
+ + +
+ + +

+ +

+
+
+
@@ -482,6 +565,166 @@ generation_time: "{{ generation_time }}" }); {% endif %} + + // Configuration management + async function loadConfigValues() { + try { + const response = await fetch('/get_config'); + if (!response.ok) { + throw new Error('Failed to load configuration'); + } + + const config = await response.json(); + + // Populate form fields with config values + document.querySelectorAll('input[name^="ORPHEUS_"]').forEach(input => { + const name = input.name; + if (config[name] !== undefined) { + input.value = config[name]; + } + }); + + console.log('Configuration loaded successfully'); + } catch (error) { + console.error('Error loading configuration:', error); + } + } + + // Save configuration + async function saveConfiguration() { + const configData = {}; + + // Collect values from all configuration inputs + document.querySelectorAll('input[name^="ORPHEUS_"]').forEach(input => { + configData[input.name] = input.value; + }); + + try { + const response = await fetch('/save_config', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(configData) + }); + + if (!response.ok) { + throw new Error('Failed to save configuration'); + } + + const result = await response.json(); + + // Show success message + const statusElem = document.getElementById('config-status'); + statusElem.textContent = result.message; + statusElem.classList.remove('hidden'); + statusElem.classList.add('text-green-400'); + + // Hide message after 5 seconds + setTimeout(() => { + statusElem.classList.add('hidden'); + }, 5000); + + } catch (error) { + console.error('Error saving configuration:', error); + + // Show error message + const statusElem = document.getElementById('config-status'); + statusElem.textContent = 'Error saving configuration. Please try again.'; + statusElem.classList.remove('hidden'); + statusElem.classList.add('text-red-400'); + + // Hide message after 5 seconds + setTimeout(() => { + statusElem.classList.add('hidden'); + }, 5000); + } + } + + // Function to restart the server + async function restartServer() { + const restartBtn = document.getElementById('restart-server-btn'); + restartBtn.disabled = true; + restartBtn.textContent = 'Restarting...'; + + try { + const response = await fetch('/restart_server', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + throw new Error('Failed to restart server'); + } + + const result = await response.json(); + + // Show server restarting message and overlay + const statusElem = document.getElementById('config-status'); + statusElem.textContent = result.message; + statusElem.classList.remove('hidden'); + statusElem.classList.add('text-yellow-400'); + + // Show loading overlay with different message + const loadingOverlay = document.getElementById('loading-overlay'); + loadingOverlay.querySelector('p').textContent = 'Server is restarting...'; + loadingOverlay.classList.remove('hidden'); + + // Poll for server readiness, then do a complete page reload with cache busting + function checkServerReady() { + console.log("Checking if server is ready..."); + fetch('/get_config?cache=' + Date.now(), { + cache: 'no-store', + headers: { 'pragma': 'no-cache' } + }) + .then(response => { + if (response.ok) { + console.log("Server is up and running, forcing complete page reload"); + // Force a complete reload with cache busting + window.location = window.location.pathname + '?t=' + Date.now(); + } else { + console.log("Server not ready yet, status: " + response.status); + setTimeout(checkServerReady, 1000); + } + }) + .catch(error => { + console.log("Server not responding yet, waiting..."); + setTimeout(checkServerReady, 1000); + }); + } + + // Start checking after initial delay + setTimeout(checkServerReady, 2000); + + } catch (error) { + console.error('Error restarting server:', error); + + // Show error message + const statusElem = document.getElementById('config-status'); + statusElem.textContent = 'Error restarting server. Please try again.'; + statusElem.classList.remove('hidden'); + statusElem.classList.add('text-red-400'); + + // Reset button + restartBtn.disabled = false; + restartBtn.textContent = 'Restart Server'; + } + } + + // Add event listeners + document.getElementById('save-config-btn').addEventListener('click', function() { + saveConfiguration(); + // Show restart button after saving + const restartBtn = document.getElementById('restart-server-btn'); + restartBtn.classList.remove('hidden'); + }); + + document.getElementById('restart-server-btn').addEventListener('click', restartServer); + + // Load configuration values when page loads + loadConfigValues(); }); diff --git a/tts_engine/inference.py b/tts_engine/inference.py index f746242..fabbce5 100644 --- a/tts_engine/inference.py +++ b/tts_engine/inference.py @@ -12,32 +12,126 @@ import queue import asyncio from concurrent.futures import ThreadPoolExecutor from typing import List, Dict, Any, Optional, Generator, Union, Tuple +from dotenv import load_dotenv -# Detect if we're on a high-end system like RTX 4090 +# Helper to detect if running in Uvicorn's reloader +def is_reloader_process(): + """Check if the current process is a uvicorn reloader""" + return (sys.argv[0].endswith('_continuation.py') or + os.environ.get('UVICORN_STARTED') == 'true') + +# Set a flag to avoid repeat messages +IS_RELOADER = is_reloader_process() +if not IS_RELOADER: + os.environ['UVICORN_STARTED'] = 'true' + +# Load environment variables from .env file +load_dotenv() + +# Detect hardware capabilities and display information import torch +import psutil + +# Detect if we're on a high-end system based on hardware capabilities HIGH_END_GPU = False if torch.cuda.is_available(): - gpu_name = torch.cuda.get_device_name(0).lower() - if any(x in gpu_name for x in ['4090', '3090', 'a100', 'h100']): - HIGH_END_GPU = True - print(f"High-end GPU detected: {torch.cuda.get_device_name(0)}") - print("Enabling high-performance optimizations") + # Get GPU properties + props = torch.cuda.get_device_properties(0) + gpu_name = props.name + gpu_mem_gb = props.total_memory / (1024**3) + compute_capability = f"{props.major}.{props.minor}" + + # Consider high-end if: large VRAM (≥16GB) OR high compute capability (≥8.0) OR large VRAM (≥12GB) with good CC (≥7.0) + HIGH_END_GPU = (gpu_mem_gb >= 16.0 or + props.major >= 8 or + (gpu_mem_gb >= 12.0 and props.major >= 7)) + + if HIGH_END_GPU: + if not IS_RELOADER: + print(f"🖥️ Hardware: High-end CUDA GPU detected") + print(f"📊 Device: {gpu_name}") + print(f"📊 VRAM: {gpu_mem_gb:.2f} GB") + print(f"📊 Compute Capability: {compute_capability}") + print("🚀 Using high-performance optimizations") + else: + if not IS_RELOADER: + print(f"🖥️ Hardware: CUDA GPU detected") + print(f"📊 Device: {gpu_name}") + print(f"📊 VRAM: {gpu_mem_gb:.2f} GB") + print(f"📊 Compute Capability: {compute_capability}") + print("🚀 Using GPU-optimized settings") +else: + # Get CPU info + cpu_cores = psutil.cpu_count(logical=False) + cpu_threads = psutil.cpu_count(logical=True) + ram_gb = psutil.virtual_memory().total / (1024**3) + + if not IS_RELOADER: + print(f"🖥️ Hardware: CPU only (No CUDA GPU detected)") + print(f"📊 CPU: {cpu_cores} cores, {cpu_threads} threads") + print(f"📊 RAM: {ram_gb:.2f} GB") + print("⚙️ Using CPU-optimized settings") + +# Load configuration from environment variables without hardcoded defaults +# Critical settings - will log errors if missing +required_settings = ["ORPHEUS_API_URL"] +missing_settings = [s for s in required_settings if s not in os.environ] +if missing_settings: + print(f"ERROR: Missing required environment variable(s): {', '.join(missing_settings)}") + print("Please set them in .env file or environment. See .env.example for defaults.") + +# API connection settings +API_URL = os.environ.get("ORPHEUS_API_URL") +if not API_URL: + print("WARNING: ORPHEUS_API_URL not set. API calls will fail until configured.") -# Orpheus-FASTAPI settings - make configurable for different endpoints -API_URL = os.environ.get("ORPHEUS_API_URL", "http://your-server-ip:port/v1/completions or v1/chat/completions") HEADERS = { "Content-Type": "application/json" } -# Better timeout handling for API requests -REQUEST_TIMEOUT = int(os.environ.get("ORPHEUS_API_TIMEOUT", "120")) # 120 seconds default for long generations +# Request timeout settings +try: + REQUEST_TIMEOUT = int(os.environ.get("ORPHEUS_API_TIMEOUT", "120")) +except (ValueError, TypeError): + print("WARNING: Invalid ORPHEUS_API_TIMEOUT value, using 120 seconds as fallback") + REQUEST_TIMEOUT = 120 -# Model parameters - optimized defaults for high-end GPUs -MAX_TOKENS = 8192 if HIGH_END_GPU else 1200 # Significantly increased for RTX 4090 to allow ~1.5-2 minutes of audio -TEMPERATURE = 0.6 -TOP_P = 0.9 +# Model generation parameters from environment variables +try: + MAX_TOKENS = int(os.environ.get("ORPHEUS_MAX_TOKENS", "8192")) +except (ValueError, TypeError): + print("WARNING: Invalid ORPHEUS_MAX_TOKENS value, using 8192 as fallback") + MAX_TOKENS = 8192 + +try: + TEMPERATURE = float(os.environ.get("ORPHEUS_TEMPERATURE", "0.6")) +except (ValueError, TypeError): + print("WARNING: Invalid ORPHEUS_TEMPERATURE value, using 0.6 as fallback") + TEMPERATURE = 0.6 + +try: + TOP_P = float(os.environ.get("ORPHEUS_TOP_P", "0.9")) +except (ValueError, TypeError): + print("WARNING: Invalid ORPHEUS_TOP_P value, using 0.9 as fallback") + TOP_P = 0.9 + +# Repetition penalty is hardcoded to 1.1 which is the only stable value for quality output REPETITION_PENALTY = 1.1 -SAMPLE_RATE = 24000 # SNAC model uses 24kHz + +try: + SAMPLE_RATE = int(os.environ.get("ORPHEUS_SAMPLE_RATE", "24000")) +except (ValueError, TypeError): + print("WARNING: Invalid ORPHEUS_SAMPLE_RATE value, using 24000 as fallback") + SAMPLE_RATE = 24000 + +# Print loaded configuration only in the main process, not in the reloader +if not IS_RELOADER: + print(f"Configuration loaded:") + print(f" API_URL: {API_URL}") + print(f" MAX_TOKENS: {MAX_TOKENS}") + print(f" TEMPERATURE: {TEMPERATURE}") + print(f" TOP_P: {TOP_P}") + print(f" REPETITION_PENALTY: {REPETITION_PENALTY}") # Parallel processing settings NUM_WORKERS = 4 if HIGH_END_GPU else 2 @@ -115,10 +209,12 @@ def generate_tokens_from_api(prompt: str, voice: str = DEFAULT_VOICE, temperatur formatted_prompt = format_prompt(prompt, voice) print(f"Generating speech for: {formatted_prompt}") - # Optimize the token generation for high-end GPUs + # Optimize the token generation for GPUs if HIGH_END_GPU: # Use more aggressive parameters for faster generation on high-end GPUs print("Using optimized parameters for high-end GPU") + elif torch.cuda.is_available(): + print("Using optimized parameters for GPU acceleration") # Create the request payload payload = { @@ -329,6 +425,10 @@ def tokens_decoder_sync(syn_token_gen, output_file=None): # Batch processing of tokens for improved throughput batch_size = 32 if HIGH_END_GPU else 16 + # Thread synchronization for proper completion detection + producer_done_event = threading.Event() + producer_started_event = threading.Event() + # Convert the synchronous token generator into an async generator with batching async def async_token_gen(): batch = [] @@ -338,7 +438,7 @@ def tokens_decoder_sync(syn_token_gen, output_file=None): for t in batch: yield t batch = [] - # Process any remaining tokens + # Process any remaining tokens in the final batch for t in batch: yield t @@ -348,82 +448,120 @@ def tokens_decoder_sync(syn_token_gen, output_file=None): chunk_count = 0 last_log_time = start_time - async for audio_chunk in tokens_decoder(async_token_gen()): - audio_queue.put(audio_chunk) - chunk_count += 1 + try: + # Signal that producer has started processing + producer_started_event.set() - # Log performance periodically - current_time = time.time() - if current_time - last_log_time >= 3.0: # Every 3 seconds - elapsed = current_time - start_time - if elapsed > 0: - chunks_per_sec = chunk_count / elapsed - print(f"Audio generation rate: {chunks_per_sec:.2f} chunks/second") - last_log_time = current_time - - # Signal completion - audio_queue.put(None) + async for audio_chunk in tokens_decoder(async_token_gen()): + # Process each audio chunk from the decoder + if audio_chunk: + audio_queue.put(audio_chunk) + chunk_count += 1 + + # Log performance periodically + current_time = time.time() + if current_time - last_log_time >= 3.0: # Every 3 seconds + elapsed = current_time - last_log_time + if elapsed > 0: + recent_chunks = chunk_count + chunks_per_sec = recent_chunks / elapsed + print(f"Audio generation rate: {chunks_per_sec:.2f} chunks/second") + last_log_time = current_time + # Reset chunk counter for next interval + chunk_count = 0 + except Exception as e: + print(f"Error in token processing: {str(e)}") + import traceback + traceback.print_exc() + finally: + # Always signal completion, even if there was an error + print("Producer completed - setting done event") + producer_done_event.set() + # Add sentinel to queue to signal end of stream + audio_queue.put(None) def run_async(): + """Run the async producer in its own thread""" asyncio.run(async_producer()) # Use a separate thread with higher priority for producer - thread = threading.Thread(target=run_async) + thread = threading.Thread(target=run_async, name="TokenProcessor") thread.daemon = True # Allow thread to be terminated when main thread exits thread.start() - # For high-end GPUs, use a ThreadPoolExecutor for parallel file I/O - if HIGH_END_GPU and wav_file: - # Buffer for collecting chunks before writing - write_buffer = [] - buffer_size = 10 # Write every 10 chunks - - def write_chunks_to_file(chunks, file): - for chunk in chunks: - file.writeframes(chunk) - - with ThreadPoolExecutor(max_workers=2) as executor: - future = None + # Wait for producer to actually start before proceeding + # This avoids race conditions where we might try to read from an empty queue + # before the producer has had a chance to add anything + producer_started_event.wait(timeout=5.0) + + # Optimized I/O approach for all systems + # This approach is simpler and more reliable than separate code paths + write_buffer = bytearray() + buffer_max_size = 1024 * 1024 # 1MB max buffer size (adjustable) + + # Keep track of the last time we checked for completion + last_check_time = time.time() + check_interval = 1.0 # Check producer status every second + + # Process audio chunks until we're done + while True: + try: + # Get the next audio chunk with a short timeout + # This allows us to periodically check status and handle other events + audio = audio_queue.get(timeout=0.1) - while True: - audio = audio_queue.get() - if audio is None: - # Write any remaining buffered chunks - if write_buffer and wav_file: - if future: - future.result() # Wait for previous write to complete - write_chunks_to_file(write_buffer, wav_file) - break - - audio_segments.append(audio) - - if wav_file: - write_buffer.append(audio) - if len(write_buffer) >= buffer_size: - if future: - future.result() # Wait for previous write to complete - # Write in a separate thread to avoid blocking - chunks_to_write = write_buffer - write_buffer = [] - future = executor.submit(write_chunks_to_file, chunks_to_write, wav_file) - else: - # Simpler direct approach for lower-end systems - while True: - audio = audio_queue.get() + # None marker indicates end of stream if audio is None: + print("Received end-of-stream marker") break + # Store the audio segment for return value audio_segments.append(audio) - # Write to WAV file if provided + # Write to file if needed if wav_file: - wav_file.writeframes(audio) + write_buffer.extend(audio) + + # Flush buffer if it's large enough + if len(write_buffer) >= buffer_max_size: + wav_file.writeframes(write_buffer) + write_buffer = bytearray() # Reset buffer + + except queue.Empty: + # No data available right now + current_time = time.time() + + # Periodically check if producer is done + if current_time - last_check_time > check_interval: + last_check_time = current_time + + # If producer is done and queue is empty, we're finished + if producer_done_event.is_set() and audio_queue.empty(): + print("Producer done and queue empty - finishing consumer") + break + + # Flush buffer periodically even if not full + if wav_file and len(write_buffer) > 0: + wav_file.writeframes(write_buffer) + write_buffer = bytearray() # Reset buffer + + # Extra safety check - ensure thread is done + if thread.is_alive(): + print("Waiting for token processor thread to complete...") + thread.join(timeout=10.0) + if thread.is_alive(): + print("WARNING: Token processor thread did not complete within timeout") + + # Final flush of any remaining data + if wav_file and len(write_buffer) > 0: + print(f"Final buffer flush: {len(write_buffer)} bytes") + wav_file.writeframes(write_buffer) # Close WAV file if opened if wav_file: wav_file.close() - - thread.join() + if output_file: + print(f"Audio saved to {output_file}") # Calculate and print detailed performance metrics if audio_segments: @@ -461,8 +599,59 @@ def stream_audio(audio_buffer): except Exception as e: print(f"Audio playback error: {e}") +import re +import numpy as np +from io import BytesIO +import wave + +def split_text_into_sentences(text): + """Split text into sentences with a more reliable approach.""" + # We'll use a simple approach that doesn't rely on variable-width lookbehinds + # which aren't supported in Python's regex engine + + # First, split on common sentence ending punctuation + # This isn't perfect but works for most cases and avoids the regex error + parts = [] + current_sentence = "" + + for char in text: + current_sentence += char + + # If we hit a sentence ending followed by a space, consider this a potential sentence end + if char in (' ', '\n', '\t') and len(current_sentence) > 1: + prev_char = current_sentence[-2] + if prev_char in ('.', '!', '?'): + # Check if this is likely a real sentence end and not an abbreviation + # (Simple heuristic: if there's a space before the period, it's likely a real sentence end) + if len(current_sentence) > 3 and current_sentence[-3] not in ('.', ' '): + parts.append(current_sentence.strip()) + current_sentence = "" + + # Add any remaining text + if current_sentence.strip(): + parts.append(current_sentence.strip()) + + # Combine very short segments to avoid tiny audio files + min_chars = 20 # Minimum reasonable sentence length + combined_sentences = [] + i = 0 + + while i < len(parts): + current = parts[i] + + # If this is a short sentence and not the last one, combine with next + while i < len(parts) - 1 and len(current) < min_chars: + i += 1 + current += " " + parts[i] + + combined_sentences.append(current) + i += 1 + + return combined_sentences + def generate_speech_from_api(prompt, voice=DEFAULT_VOICE, output_file=None, temperature=TEMPERATURE, - top_p=TOP_P, max_tokens=MAX_TOKENS, repetition_penalty=REPETITION_PENALTY): + top_p=TOP_P, max_tokens=MAX_TOKENS, repetition_penalty=None, + use_batching=True, max_batch_chars=1000): """Generate speech from text using Orpheus model with performance optimizations.""" print(f"Starting speech generation for '{prompt[:50]}{'...' if len(prompt) > 50 else ''}'") print(f"Using voice: {voice}, GPU acceleration: {'Yes (High-end)' if HIGH_END_GPU else 'Yes' if torch.cuda.is_available() else 'No'}") @@ -473,25 +662,186 @@ def generate_speech_from_api(prompt, voice=DEFAULT_VOICE, output_file=None, temp start_time = time.time() - # Generate speech with optimized settings - result = tokens_decoder_sync( - generate_tokens_from_api( - prompt=prompt, - voice=voice, - temperature=temperature, - top_p=top_p, - max_tokens=max_tokens, - repetition_penalty=repetition_penalty - ), - output_file=output_file - ) + # For shorter text, use the standard non-batched approach + if not use_batching or len(prompt) < max_batch_chars: + # Note: we ignore any provided repetition_penalty and always use the hardcoded value + # This ensures consistent quality regardless of what might be passed in + result = tokens_decoder_sync( + generate_tokens_from_api( + prompt=prompt, + voice=voice, + temperature=temperature, + top_p=top_p, + max_tokens=max_tokens, + repetition_penalty=REPETITION_PENALTY # Always use hardcoded value + ), + output_file=output_file + ) + + # Report final performance metrics + end_time = time.time() + total_time = end_time - start_time + print(f"Total speech generation completed in {total_time:.2f} seconds") + + return result + + # For longer text, use sentence-based batching + print(f"Using sentence-based batching for text with {len(prompt)} characters") + + # Split the text into sentences + sentences = split_text_into_sentences(prompt) + print(f"Split text into {len(sentences)} segments") + + # Create batches by combining sentences up to max_batch_chars + batches = [] + current_batch = "" + + for sentence in sentences: + # If adding this sentence would exceed the batch size, start a new batch + if len(current_batch) + len(sentence) > max_batch_chars and current_batch: + batches.append(current_batch) + current_batch = sentence + else: + # Add separator space if needed + if current_batch: + current_batch += " " + current_batch += sentence + + # Add the last batch if it's not empty + if current_batch: + batches.append(current_batch) + + print(f"Created {len(batches)} batches for processing") + + # Process each batch and collect audio segments + all_audio_segments = [] + batch_temp_files = [] + + for i, batch in enumerate(batches): + print(f"Processing batch {i+1}/{len(batches)} ({len(batch)} characters)") + + # Create a temporary file for this batch if an output file is requested + temp_output_file = None + if output_file: + temp_output_file = f"outputs/temp_batch_{i}_{int(time.time())}.wav" + batch_temp_files.append(temp_output_file) + + # Generate speech for this batch + batch_segments = tokens_decoder_sync( + generate_tokens_from_api( + prompt=batch, + voice=voice, + temperature=temperature, + top_p=top_p, + max_tokens=max_tokens, + repetition_penalty=REPETITION_PENALTY + ), + output_file=temp_output_file + ) + + # Add to our collection + all_audio_segments.extend(batch_segments) + + # If an output file was requested, stitch together the temporary files + if output_file and batch_temp_files: + # Stitch together WAV files + stitch_wav_files(batch_temp_files, output_file) + + # Clean up temporary files + for temp_file in batch_temp_files: + try: + os.remove(temp_file) + except Exception as e: + print(f"Warning: Could not remove temporary file {temp_file}: {e}") # Report final performance metrics end_time = time.time() total_time = end_time - start_time + + # Calculate combined duration + if all_audio_segments: + total_bytes = sum(len(segment) for segment in all_audio_segments) + duration = total_bytes / (2 * SAMPLE_RATE) # 2 bytes per sample at 24kHz + print(f"Generated {len(all_audio_segments)} audio segments") + print(f"Generated {duration:.2f} seconds of audio in {total_time:.2f} seconds") + print(f"Realtime factor: {duration/total_time:.2f}x") + print(f"Total speech generation completed in {total_time:.2f} seconds") - return result + return all_audio_segments + +def stitch_wav_files(input_files, output_file, crossfade_ms=50): + """Stitch multiple WAV files together with crossfading for smooth transitions.""" + if not input_files: + return + + print(f"Stitching {len(input_files)} WAV files together with {crossfade_ms}ms crossfade") + + # If only one file, just copy it + if len(input_files) == 1: + import shutil + shutil.copy(input_files[0], output_file) + return + + # Convert crossfade_ms to samples + crossfade_samples = int(SAMPLE_RATE * crossfade_ms / 1000) + print(f"Using {crossfade_samples} samples for crossfade at {SAMPLE_RATE}Hz") + + # Build the final audio in memory with crossfades + final_audio = np.array([], dtype=np.int16) + first_params = None + + for i, input_file in enumerate(input_files): + try: + with wave.open(input_file, 'rb') as wav: + if first_params is None: + first_params = wav.getparams() + elif wav.getparams() != first_params: + print(f"Warning: WAV file {input_file} has different parameters") + + frames = wav.readframes(wav.getnframes()) + audio = np.frombuffer(frames, dtype=np.int16) + + if i == 0: + # First segment - use as is + final_audio = audio + else: + # Apply crossfade with previous segment + if len(final_audio) >= crossfade_samples and len(audio) >= crossfade_samples: + # Create crossfade weights + fade_out = np.linspace(1.0, 0.0, crossfade_samples) + fade_in = np.linspace(0.0, 1.0, crossfade_samples) + + # Apply crossfade + crossfade_region = (final_audio[-crossfade_samples:] * fade_out + + audio[:crossfade_samples] * fade_in).astype(np.int16) + + # Combine: original without last crossfade_samples + crossfade + new without first crossfade_samples + final_audio = np.concatenate([final_audio[:-crossfade_samples], + crossfade_region, + audio[crossfade_samples:]]) + else: + # One segment too short for crossfade, just append + print(f"Segment {i} too short for crossfade, concatenating directly") + final_audio = np.concatenate([final_audio, audio]) + except Exception as e: + print(f"Error processing file {input_file}: {e}") + if i == 0: + raise # Critical failure if first file fails + + # Write the final audio data to the output file + try: + with wave.open(output_file, 'wb') as output_wav: + if first_params is None: + raise ValueError("No valid WAV files were processed") + + output_wav.setparams(first_params) + output_wav.writeframes(final_audio.tobytes()) + + print(f"Successfully stitched audio to {output_file} with crossfading") + except Exception as e: + print(f"Error writing output file {output_file}: {e}") + raise def list_available_voices(): """List all available voices with the recommended one marked.""" @@ -514,7 +864,7 @@ def main(): parser.add_argument("--temperature", type=float, default=TEMPERATURE, help="Temperature for generation") parser.add_argument("--top_p", type=float, default=TOP_P, help="Top-p sampling parameter") parser.add_argument("--repetition_penalty", type=float, default=REPETITION_PENALTY, - help="Repetition penalty (>=1.1 required for stable generation)") + help="Repetition penalty (fixed at 1.1 for stable generation - parameter kept for compatibility)") args = parser.parse_args() diff --git a/tts_engine/speechpipe.py b/tts_engine/speechpipe.py index 3c1d6b2..f5397bf 100644 --- a/tts_engine/speechpipe.py +++ b/tts_engine/speechpipe.py @@ -145,15 +145,17 @@ token_cache = {} MAX_CACHE_SIZE = 1000 # Limit cache size to prevent memory bloat async def tokens_decoder(token_gen): - """Optimized token decoder with caching and conservative batch processing to ensure correct output""" + """Optimized token decoder with reliable end-of-buffer handling for complete audio generation""" buffer = [] count = 0 - # Start with conservative parameters to ensure we get audio output - min_frames_required = 28 # Default minimum frames (4 chunks of 7) - process_every_n = 7 # Process every 7 tokens + # Use a smaller minimum frame requirement to allow more flexible processing + min_frames_required = 28 # Lower requirement (4 chunks of 7 tokens) + ideal_frames = 49 # Ideal standard frame size (7×7 window) + process_every_n = 7 # Process every 7 tokens (standard for Orpheus model) start_time = time.time() token_count = 0 + last_log_time = start_time async for token_sim in token_gen: token_count += 1 @@ -172,18 +174,70 @@ async def tokens_decoder(token_gen): buffer.append(token) count += 1 - # Process in larger batches for better GPU utilization - if count % process_every_n == 0 and count >= min_frames_required: - buffer_to_proc = buffer[-min_frames_required:] + # Log throughput periodically + current_time = time.time() + if current_time - last_log_time > 5.0: # Every 5 seconds + elapsed = current_time - last_log_time + if elapsed > 0: + recent_tokens = token_count + tokens_per_sec = recent_tokens / elapsed + print(f"Token processing rate: {tokens_per_sec:.1f} tokens/second") + last_log_time = current_time + token_count = 0 + + # Process standard batches when we have enough tokens + if count % process_every_n == 0: + # Best case: we have enough for the ideal frame size + if len(buffer) >= ideal_frames: + buffer_to_proc = buffer[-ideal_frames:] + # Fallback: we have enough for the minimum requirement + elif len(buffer) >= min_frames_required: + buffer_to_proc = buffer[-min_frames_required:] + # For the first few frames, we may not have enough yet + else: + continue + + # Debug output to help diagnose issues + if count % 28 == 0: + print(f"Processing buffer with {len(buffer_to_proc)} tokens, total collected: {len(buffer)}") + + # Process the tokens audio_samples = convert_to_audio(buffer_to_proc, count) if audio_samples is not None: - # Log processing rate occasionally - if count % 140 == 0: # Log every 20 chunks (assuming process_every_n=7) - elapsed = time.time() - start_time - tokens_per_sec = token_count / elapsed if elapsed > 0 else 0 - print(f"Processing speed: {tokens_per_sec:.1f} tokens/sec, buffer size: {len(buffer)}") - yield audio_samples + + # CRITICAL: End-of-generation handling - process all remaining frames + # Process remaining complete frames (ideal size) + if len(buffer) >= ideal_frames: + buffer_to_proc = buffer[-ideal_frames:] + audio_samples = convert_to_audio(buffer_to_proc, count) + if audio_samples is not None: + yield audio_samples + + # Process any additional complete frames (minimum size) + elif len(buffer) >= min_frames_required: + buffer_to_proc = buffer[-min_frames_required:] + audio_samples = convert_to_audio(buffer_to_proc, count) + if audio_samples is not None: + yield audio_samples + + # Final special case: even if we don't have minimum frames, try to process + # what we have by padding with silence tokens that won't affect the audio + elif len(buffer) >= process_every_n: + # Pad to minimum frame requirement with copies of the final token + # This is more continuous than using unrelated tokens from the beginning + last_token = buffer[-1] + padding_needed = min_frames_required - len(buffer) + + # Create a padding array of copies of the last token + # This maintains continuity much better than circular buffering + padding = [last_token] * padding_needed + padded_buffer = buffer + padding + + print(f"Processing final partial frame: {len(buffer)} tokens + {padding_needed} repeated-token padding") + audio_samples = convert_to_audio(padded_buffer, count) + if audio_samples is not None: + yield audio_samples # ------------------ Synchronous Tokens Decoder Wrapper ------------------ # def tokens_decoder_sync(syn_token_gen): """Optimized synchronous decoder with larger queue and parallel processing""" @@ -213,18 +267,25 @@ def tokens_decoder_sync(syn_token_gen): start_time = time.time() chunk_count = 0 - # Process audio chunks from the token decoder - async for audio_chunk in tokens_decoder(async_token_gen()): - audio_queue.put(audio_chunk) - chunk_count += 1 - - # Log performance stats periodically - if chunk_count % 10 == 0: - elapsed = time.time() - start_time - print(f"Generated {chunk_count} chunks in {elapsed:.2f}s ({chunk_count/elapsed:.2f} chunks/sec)") - - # Signal completion - audio_queue.put(None) # Sentinel + try: + # Process audio chunks from the token decoder + async for audio_chunk in tokens_decoder(async_token_gen()): + if audio_chunk: # Validate audio chunk before adding to queue + audio_queue.put(audio_chunk) + chunk_count += 1 + + # Log performance stats periodically + if chunk_count % 10 == 0: + elapsed = time.time() - start_time + print(f"Generated {chunk_count} chunks in {elapsed:.2f}s ({chunk_count/elapsed:.2f} chunks/sec)") + except Exception as e: + print(f"Error in audio producer: {e}") + import traceback + traceback.print_exc() + finally: + # Signal completion + print("Audio producer completed - finalizing all chunks") + audio_queue.put(None) # Sentinel def run_async(): asyncio.run(async_producer())