Paul Bailey e92d0349bf Implement voice assignment component (Task 10)
- Created VoiceAssignmentSection component with role-to-voice mapping
- Added language selector with American English, British English, French, Japanese
- Added speed slider (0.5x - 1.5x range)
- Implemented Generate Audiobook button with proper disabled state
- Integrated component into App.tsx with state management
- Added role detection API call on text submission
- Validates all roles have assigned voices before enabling generation

Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 4.1, 4.2, 4.3, 4.4, 5.1, 5.2, 5.3
2025-12-09 07:48:19 +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%