Commit Graph

28 Commits

Author SHA1 Message Date
e2196c592a Implement script generation endpoint (Task 18)
- Added ScriptRequest, ScriptResponse, and ScriptSegment Pydantic models
- Created /api/tts/script POST endpoint in main.py
- Integrated with TTSService to generate script segments using AI
- Added generate_script_segments method to TTSService
- Returns segments with unique IDs for frontend tracking
- Handles errors gracefully when AI segmentation fails
- Falls back to pattern-based segmentation when Ollama unavailable
- Added comprehensive tests for the endpoint
- Validates: Requirements 15.1, 15.2
2025-12-09 11:43:04 +00:00
1c495079eb First Push 2025-12-09 11:17:24 +00:00
5c7b339bdf Add all 54 Kokoro TTS voices and 9 language support
- Expanded from 8 to 54 voices across 9 languages
- American English: 21 voices (11 female, 10 male)
- British English: 8 voices (4 female, 4 male)
- Spanish: 3 voices (1 female, 2 male)
- French: 1 voice (1 female)
- Hindi: 4 voices (2 female, 2 male)
- Italian: 2 voices (1 female, 1 male)
- Japanese: 5 voices (4 female, 1 male)
- Portuguese: 3 voices (1 female, 2 male)
- Chinese: 7 voices (4 female, 4 male)
- Updated backend to support all language codes (a,b,e,f,h,i,j,p,z)
- Added comprehensive voice documentation
2025-12-09 11:14:28 +00:00
7ef969314b Add comprehensive testing guide for AI-powered features
- Step-by-step testing instructions
- Multiple test scenarios with expected results
- Troubleshooting section
- Tips for best results
- Comparison of before/after AI features
2025-12-09 11:05:22 +00:00
e3dcb89bb7 Add comprehensive end-to-end test for AI-powered audiobook generation
- Tests complete workflow from unmarked text to segmented audio
- Demonstrates AI role detection on narrative text
- Shows AI text segmentation with intelligent speaker assignment
- Validates dialogue detection and speaker distribution
- Provides quality analysis of segmentation results
2025-12-09 11:02:53 +00:00
4180527821 Update documentation for AI-powered features
- Added comprehensive documentation for AI speaker detection
- Documented AI text segmentation capabilities
- Added Ollama setup instructions
- Explained benefits of AI-powered vs pattern-based detection
- Updated API endpoint documentation with AI feature details
2025-12-09 11:00:57 +00:00
d18fddef57 Add AI-powered text segmentation for intelligent speaker assignment
- Added segment_text() method to OllamaService for AI-based text splitting
- OllamaService now annotates each text segment with the appropriate speaker
- Updated TTSService to use AI segmentation when available
- Falls back to pattern-based segmentation when Ollama unavailable
- AI intelligently assigns dialogue to speakers and narrative to Narrator
- Added comprehensive test suite for AI segmentation
- Verified AI correctly splits unmarked dialogue between multiple speakers

This makes the tool much more powerful - users can now input plain narrative
text without explicit role markers and the AI will intelligently assign voices
to different characters and the narrator.
2025-12-09 10:59:00 +00:00
b48e53ce63 Fix Ollama model name to use llama3:latest instead of llama3:8b
- Changed model from 'llama3:8b' to 'llama3:latest' to match available models
- Verified Ollama integration is working correctly
- AI detection now successfully identifies speakers in unmarked text
2025-12-09 10:54:05 +00:00
f56f8086e5 Integrate Ollama into role detection with fallback to pattern matching
- Updated RoleDetector to use OllamaService for AI-based speaker detection
- Implemented _detect_with_ollama() method with availability check
- Added fallback logic: tries Ollama first, then pattern matching
- Implemented role merging and deduplication across both methods
- Handles Ollama unavailable gracefully with logging
- Logs detection method used (AI vs pattern)
- Updated main.py endpoint to await async detect_roles
- Added comprehensive integration tests

Requirements: 14.1, 14.4, 14.5
2025-12-09 10:49:37 +00:00
73dc5695ca Improve Ollama speaker detection with multi-sample strategy
- Sample up to 4 chunks of 5000 characters from different text positions
- Distribute samples evenly across beginning, middle, and end of text
- Deduplicate speakers across all samples for comprehensive detection
- Log individual sample results for debugging
- Handle short texts efficiently (single sample)
- Updated tests to verify multi-sample behavior

This ensures speakers introduced anywhere in long texts are detected,
not just those appearing in the first 2000 characters.
2025-12-09 10:40:59 +00:00
a8802fd765 Implement Ollama integration service for AI-based speaker detection
- Created OllamaService class with httpx for API communication
- Implemented detect_speakers() method with structured prompts
- Added JSON response parser supporting multiple formats
- Implemented is_available() health check method
- Added 30-second timeout handling
- Configured OLLAMA_BASE_URL environment variable
- Added comprehensive unit tests with 100% coverage
- Updated requirements.txt with httpx dependency

Requirements: 14.1, 14.2, 14.3, 14.6
2025-12-09 10:35:30 +00:00
20e6cd1f9d feat: Add Ollama integration for AI-based speaker detection
- Added Requirement 14 for intelligent speaker detection using Ollama/llama3:8B
- Updated design document with OllamaService component and integration details
- Added 4 new correctness properties for Ollama functionality
- Added tasks 15-17 for implementing Ollama integration
- Updated technology stack to include httpx and Ollama
- Added error handling guidelines for Ollama integration
- Configured fallback to pattern-based detection when Ollama unavailable

This enhancement allows users to paste raw dialogue text without manual role markers.
The system will use AI to intelligently detect speakers, making the tool more user-friendly.
2025-12-09 10:31:38 +00:00
ff2c8f8404 docs: Create comprehensive README documentation
- Updated main README with detailed setup, Kokoro model configuration, and troubleshooting
- Enhanced backend README with API documentation, Docker setup, and testing instructions
- Improved frontend README with component details, deployment guide, and development tips
- Added workflow testing steps and common error solutions
- Documented all supported languages, voices, and configuration options

Implements task 14 from text-to-audiobook spec
Requirements: 13.1, 13.2, 13.3, 13.4, 13.5
2025-12-09 10:11:15 +00:00
50b0ef792a feat: Add responsive styling and mobile support
- Applied Tailwind CSS responsive classes across all components
- Implemented mobile-first design approach with breakpoints (sm, md, lg)
- Added touch-friendly interactions with min-h-[44px] touch targets
- Enhanced App.tsx with responsive padding, headings, and alerts
- Updated TextInputSection with responsive textarea and full-width mobile button
- Improved VoiceAssignmentSection with flexible layouts and mobile-optimized controls
- Enhanced AudioPlayerSection with responsive sizing and touch support
- Added custom CSS for range slider with larger thumb for mobile
- Improved select dropdowns with visible arrows and proper padding
- Added touch-manipulation class to prevent double-tap zoom
- Added active states for better mobile feedback
- Updated index.html with proper title and meta description
- Created RESPONSIVE_IMPROVEMENTS.md documentation

Requirements: 12.1, 12.2, 12.3, 12.4
2025-12-09 09:34:23 +00:00
e5bd7dcd74 feat: implement main App component with workflow orchestration
- Add complete state management for text, phases, roles, voice assignments
- Implement phase transitions: input → assignment → generated
- Wire up text input to role detection API
- Wire up voice assignment to audio generation API
- Add loading states for async operations (role detection and generation)
- Implement comprehensive error handling and display
- Add warning messages for long text (>5000 chars) in assignment and generation phases
- Ensure text persists across all workflow phases
- Validates Requirements: 1.5, 6.1, 8.1, 8.2, 8.3, 8.4
2025-12-09 09:30:34 +00:00
ea77b17363 Implement audio player component with HTML5 audio and download functionality 2025-12-09 09:29:05 +00:00
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
85a71fac2c Implement text input component (Task 9)
- Create TextInputSection component with large multiline textarea
- Add 'Next: Assign voices' button
- Implement text validation (non-empty)
- Show validation message for empty text
- Disable button when text is empty
- Update App.tsx to integrate TextInputSection
- Requirements: 1.1, 1.2, 1.3, 1.4
2025-12-09 07:39:36 +00:00
50d657f501 feat: implement API client module for frontend
- Create TypeScript interfaces (Role, RoleWithVoice, RolesResponse, GenerateRequest)
- Implement detectRoles() function for role detection
- Implement generateAudiobook() function for audio generation
- Implement checkHealth() function for backend health checks
- Add comprehensive error handling for network failures
- Use VITE_API_BASE_URL environment variable for configuration
- Add ApiError class for structured error handling

Requirements: 9.6, 9.7
2025-12-09 01:31:01 +00:00
1f759c36dc Complete task 7: Set up React frontend project structure
- Vite project with React and TypeScript initialized
- TypeScript configured with strict mode enabled
- Tailwind CSS set up for styling
- Component and API directory structure created
- Environment variables configured (.env with VITE_API_BASE_URL)
- Build and dev server verified working

Requirements: 9.6, 12.3
2025-12-09 01:26:25 +00:00
ffd079dbcb feat: Add Docker configuration for backend
- Create Dockerfile with Python 3.10 base image
- Install system dependencies (espeak-ng) for Kokoro TTS
- Install Python dependencies from requirements.txt
- Copy backend code and expose port 8000
- Configure Uvicorn server startup
- Add docker-compose.yml for easy orchestration
- Include health checks and environment variables
- Add .dockerignore to optimize build context

Implements task 6 - Requirements 11.1-11.6
2025-12-09 01:23:00 +00:00
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
4f7c4c915d Update tasks.md: Mark task 4 as completed 2025-12-09 01:07:09 +00:00
e6f4e2ea32 Implement TTS service with Kokoro integration
- Created TTSService class with pipeline caching per language
- Implemented text segmentation to identify role markers (colon and bracket patterns)
- Implemented segment synthesis with voice assignment
- Implemented audio concatenation at 24 kHz sample rate
- Added fallback to default voice (af_bella) for unmapped roles
- Supports language codes: a, b, f, j
- Handles long text by chunking on sentence boundaries
- Added comprehensive unit tests (13 tests, all passing)

Requirements: 10.1, 10.3, 10.4, 6.2, 6.3, 6.4, 6.5, 6.6
2025-12-09 01:06:59 +00:00
77437348ed Implement role detection service with pattern matching
- Created RoleDetector class with colon and bracket pattern extraction
- Implemented role deduplication logic
- Added fallback to default 'Narrator' role when no patterns found
- Created /api/tts/roles endpoint using RoleDetector
- Added comprehensive test suite for role detection
- All tests passing (7/7)

Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
2025-12-09 01:04:09 +00:00
31da896e56 Implement backend API foundation
- Created FastAPI application with CORS middleware
- Defined Pydantic models (RoleDetectionRequest, RolesResponse, TTSRequest, ErrorResponse)
- Implemented /api/health endpoint
- Set up error handling middleware for validation and general exceptions
- Configured logging with INFO level
- Added test script to verify API functionality
- Validates Requirements: 9.1, 9.2, 9.4
2025-12-09 00:57:46 +00:00
f4bc759007 Task 1: Set up project structure and dependencies
- Created backend directory with FastAPI project structure
- Created frontend directory with React + TypeScript + Vite
- Configured Python virtual environment and installed dependencies (fastapi, uvicorn, kokoro, soundfile, python-multipart)
- Verified espeak-ng system dependency is installed
- Configured Node.js project with TypeScript, React, and Vite
- Set up Tailwind CSS for styling
- Set up environment variable configuration for both projects
- Created comprehensive README documentation

Requirements: 9.6, 10.2, 11.1
2025-12-09 00:47:44 +00:00
81b8f004d2 Initialize project using Create React App 2025-12-09 00:27:53 +00:00