5 Commits

Author SHA1 Message Date
63bdf57593 fix: Improve Ollama prompt to always detect Narrator role
Updated the speaker detection prompt to explicitly instruct the AI to:
- Identify narrative text and assign it to 'Narrator'
- Detect character dialogue and list character names
- Include BOTH Narrator and characters when story has mixed content

This ensures stories with narrative descriptions get proper voice
assignments for both the narrator and speaking characters.

Example: Story with 'Once upon a time...' narrative and dialogue from
Lily, Benny, Sammy now correctly detects all 4 roles.
2025-12-09 12:26:15 +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
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