Commit graph

55 commits

Author SHA1 Message Date
Richard Roberson
b21bdb3a21 feat(tts): add multi-provider TTS support with Deepinfra and custom OpenAI-compatible endpoints
Add comprehensive multi-provider TTS support enabling users to choose between OpenAI, Deepinfra, and custom OpenAI-compatible endpoints. Implement provider-specific voice management with automatic voice restoration per provider-model combination, and migrate package manager to pnpm for improved dependency handling.

Key changes:
- Add TTS provider selection (OpenAI, Deepinfra, custom-openai) in settings UI
- Implement provider-specific model and voice lists with dynamic fetching
- Add voice persistence per provider-model combination in savedVoices
- Support Deepinfra models: Kokoro-82M, Orpheus-3B, Sesame-1B with their voice libraries
- Migrate to pnpm with frozen lockfile for reproducible builds
- Update Docker configuration to use pnpm and Deepinfra API defaults
- Add migration logic for existing users to infer provider from stored baseUrl
- Update test helpers and Playwright configuration for Deepinfra API
- Add example docker-compose.yml with Kokoro-FastAPI integration

BREAKING CHANGE: Voice selection is now provider-model specific. Previously saved voices will be migrated to the new savedVoices structure, but users may need to reselect voices if switching providers.
2025-11-09 15:47:17 -07:00
Richard Roberson
08480f07ed
Merge pull request #52 from thepycoder/feature/better-speed-control 2025-06-29 15:09:05 -06:00
Victor Sonck
89833d596b Allow for player speed changes as well as native voice speed changes. Kokoro for example swallows parts of words when asked to go faster than maybe 1.3x. This fixes that, by simply speeding up the player instead. Since we're already using the html5 version of howler, by default it will pitch-correct the audio and it sounds quite good! 2025-06-23 14:09:51 +02:00
Victor Sonck
ece8bcd35a Added saving and restoring last location in PDFs 2025-06-23 13:57:27 +02:00
Victor Sonck
f594ca836b Refactored NLP into a single, shared function for splitting to sentences.
now both handleClick and global sentences are the exact same, so the sentenceIndex will always be correct.
2025-06-20 08:25:29 +02:00
Richard Roberson
fc780746aa Bug fixes and readme update 2025-03-30 21:17:16 -06:00
Richard Roberson
7ba807fd95 Pause on page changes + Fix ePub bug when reloading 2025-03-23 17:18:21 -06:00
Richard Roberson
4ed6b17e98 Support gpt-4o-mini-tts with instructions
Some checks failed
Build and Publish Docker Image / build (push) Has been cancelled
2025-03-21 11:32:42 -06:00
Richard Roberson
f464b059e4 Update API settings 2025-03-13 21:00:34 -06:00
Richard Roberson
ce9df9a5ab implement retry logic for TTS API calls and clean up code 2025-03-03 23:03:52 -07:00
Richard Roberson
54dea5da36 Add onloaderror retries 2025-03-02 22:13:08 -07:00
Richard Roberson
4e07e737f0 Stop using audio blobs 2025-03-02 21:16:24 -07:00
Richard Roberson
96376e2324 Environment changes, set in Docker run 2025-02-23 13:20:42 -07:00
Richard Roberson
9ad1f5f117 Pause in background 2025-02-23 04:46:20 -07:00
Richard Roberson
0be34a09fe Re-add AbortController API, fixes duplicate playback 2025-02-23 01:29:10 -07:00
Richard Roberson
0251aae04b Huge iOS playback fix 2025-02-22 13:36:45 -07:00
Richard Roberson
99868f29b2 EPUB resize debounce working perfectly 2025-02-21 12:01:52 -07:00
Richard Roberson
9d6632d2d0 Use server instead of client for open ai request + large refactors and bug fixes 2025-02-21 11:24:07 -07:00
Richard Roberson
86be935737 Fully unified navigation system 2025-02-19 15:19:37 -07:00
Richard Roberson
d447132859 Refactors to fix blank sections 2025-02-19 15:10:11 -07:00
Richard Roberson
0ce14f3aec Refactors + epub location fixes 2025-02-18 02:31:30 -07:00
Richard Roberson
bc790df89e Cleanup imports and ssr cabable components 2025-02-13 00:09:49 -07:00
Richard Roberson
2a9510aa55 Another nlp optimization 2025-02-12 02:19:57 -07:00
Richard Roberson
521eda6cff Move nlp processing to next server 2025-02-12 02:14:56 -07:00
Richard Roberson
297396579b Better nlp + refactors 2025-02-11 00:12:31 -07:00
Richard Roberson
039ac1fe61 Fix epub last location first page 2025-02-10 19:57:33 -07:00
Richard Roberson
e8008b68ab Save last EPUB location 2025-02-10 11:49:49 -07:00
Richard Roberson
b110cafbff Update error handling for TTS API 2025-02-09 18:00:19 -07:00
Richard Roberson
707dd9261a EPUB Working Well 2025-02-09 11:52:42 -07:00
Richard Roberson
25f3375b2f Chapter by chapter auto-play 2025-02-09 02:55:49 -07:00
Richard Roberson
fd6a370bce WIP 2025-02-08 21:43:39 -07:00
Richard Roberson
a3137ed88f Manual page turn - kind of working 2025-02-08 20:35:38 -07:00
Richard Roberson
e3167a18ea Use react-hot-toast for important notifications 2025-02-05 15:07:24 -07:00
Richard Roberson
96e499cc58 Setting to automatically skip blank pages, on by default 2025-02-04 18:53:52 -07:00
Richard Roberson
d025227518 More refactors 2025-01-29 22:04:11 -07:00
Richard Roberson
737ab5f919 Restructure 2025-01-29 21:13:18 -07:00
Richard Roberson
055e87e8c1 Extract TTS extras to hooks 2025-01-28 21:38:44 -07:00
Richard Roberson
dd7154cccf Contexts refactor + commenting 2025-01-28 21:22:22 -07:00
Richard Roberson
ca1e3a83a9 Better mobile styling 2025-01-28 18:14:33 -07:00
Richard Roberson
610167f058 Fix saved speed + voice 2025-01-27 00:15:54 -07:00
Richard Roberson
e830957598 Add voice + speed to indexedDB and config context 2025-01-26 18:39:11 -07:00
Richard Roberson
92ee491363 Apple web app capable changes 2025-01-26 16:49:05 -07:00
Richard Roberson
2201dac391 Text to click fix 2025-01-26 13:55:14 -07:00
Richard Roberson
34d9d4715c Fix increment page 2025-01-25 23:47:19 -07:00
Richard Roberson
de1ad2c4da Implement page forward and back 2025-01-25 22:57:29 -07:00
Richard Roberson
b6880b9910 Fix end of document reached 2025-01-25 22:36:28 -07:00
Richard Roberson
429ec3f264 Single page viewer + Major refactor 2025-01-25 22:23:29 -07:00
Richard Roberson
86c263cb86 use howl for audio playback 2025-01-22 14:59:43 -07:00
Richard Roberson
d78be686c1 Add better zoom + controls 2025-01-22 13:34:48 -07:00
Richard Roberson
5edae0e8ae cleanup 2025-01-22 11:51:08 -07:00