Paul Bailey 271a127167 Implement audio generation endpoint
- Add POST /api/tts endpoint with full request validation
- Validate text, language code, speed range, and roles list
- Integrate TTSService to generate multi-voice audiobooks
- Fix Kokoro pipeline generator handling to properly collect audio
- Stream audio response with correct Content-Type (audio/wav)
- Add Content-Disposition header with filename (audiobook.wav)
- Handle errors gracefully with appropriate HTTP status codes
- Add comprehensive test suite for endpoint validation

Requirements: 6.1, 6.7, 6.8, 9.5
2025-12-09 01:21:39 +00:00

Text to Audiobook

A full-stack application that converts long-form text into multi-voice audiobooks using Kokoro TTS (hexgrad/Kokoro-82M). The system automatically detects distinct roles/speakers in text, allows voice assignment per role, and generates high-quality audio.

Features

  • 🎭 Automatic role/speaker detection from text
  • 🎤 Multi-voice synthesis with Kokoro TTS
  • 🌍 Support for multiple languages (English, French, Japanese)
  • ⚡ Fast local processing (no cloud dependencies)
  • 📱 Responsive web interface
  • 🎵 Audio playback and download

Architecture

  • Frontend: React + TypeScript + Vite + Tailwind CSS
  • Backend: Python + FastAPI + Kokoro TTS
  • Deployment: Docker containerization

Quick Start

Prerequisites

  • Python 3.10+
  • Node.js 20.19+ or 22.12+
  • espeak-ng (system dependency)

Backend Setup

  1. Install espeak-ng:
# macOS
brew install espeak-ng

# Linux (Ubuntu/Debian)
sudo apt-get install espeak-ng
  1. Set up Python environment:
cd backend
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt
  1. Run the backend:
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Frontend Setup

  1. Install dependencies:
cd frontend
npm install
  1. Configure environment:
cp .env.example .env
  1. Run the frontend:
npm run dev
  1. Open http://localhost:5173 in your browser

Usage

  1. Enter Text: Paste your text with role markers (e.g., "Alice:", "[Narrator]")
  2. Assign Voices: Select a Kokoro voice for each detected role
  3. Configure: Choose language and playback speed
  4. Generate: Create your multi-voice audiobook
  5. Listen & Download: Play or save the generated audio

Project Structure

.
├── backend/              # FastAPI backend
│   ├── main.py          # API endpoints
│   ├── services/        # Business logic
│   ├── requirements.txt # Python dependencies
│   └── README.md
├── frontend/            # React frontend
│   ├── src/
│   │   ├── api/        # API client
│   │   ├── components/ # React components
│   │   └── App.tsx     # Main app
│   ├── package.json
│   └── README.md
└── README.md           # This file

Documentation

License

MIT

Description
No description provided
Readme 8.8 MiB
Languages
Python 66.6%
TypeScript 25.8%
Shell 2.8%
CSS 2.1%
JavaScript 1.3%
Other 1.4%