feat: add KittenTTS-FastAPI support and update documentation
Some checks failed
Create and publish Docker images / prepare (push) Has been cancelled
Version Docs on Tag / version-docs (push) Has been cancelled
Create and publish Docker images / build (amd64, linux/amd64, ubuntu-24.04) (push) Has been cancelled
Create and publish Docker images / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images / merge (push) Has been cancelled
Some checks failed
Create and publish Docker images / prepare (push) Has been cancelled
Version Docs on Tag / version-docs (push) Has been cancelled
Create and publish Docker images / build (amd64, linux/amd64, ubuntu-24.04) (push) Has been cancelled
Create and publish Docker images / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images / merge (push) Has been cancelled
This commit is contained in:
parent
230b614b90
commit
7810a6329a
9 changed files with 61 additions and 8 deletions
|
|
@ -18,7 +18,7 @@ OpenReader is an open source, self-host-friendly text-to-speech document reader
|
|||
|
||||
## ✨ Highlights
|
||||
|
||||
- 🎯 **Multi-provider TTS** with OpenAI-compatible endpoints (OpenAI, DeepInfra, Kokoro, Orpheus, custom).
|
||||
- 🎯 **Multi-provider TTS** with OpenAI-compatible endpoints (OpenAI, DeepInfra, Kokoro, KittenTTS-FastAPI, Orpheus, custom).
|
||||
- 📖 **Read-along playback** for PDF/EPUB with sentence-aware narration.
|
||||
- ⏱️ **Word-by-word highlighting** via optional `whisper.cpp` timestamps.
|
||||
- 🛜 **Sync + library import** to bring docs across devices and from server-mounted folders.
|
||||
|
|
@ -38,6 +38,7 @@ OpenReader is an open source, self-host-friendly text-to-speech document reader
|
|||
| Configure object storage | [Object / Blob Storage](https://docs.openreader.richardr.dev/configure/object-blob-storage) |
|
||||
| Configure TTS providers | [TTS Providers](https://docs.openreader.richardr.dev/configure/tts-providers) |
|
||||
| Run Kokoro locally | [Kokoro-FastAPI](https://docs.openreader.richardr.dev/configure/tts-provider-guides/kokoro-fastapi) |
|
||||
| Run KittenTTS locally | [KittenTTS-FastAPI](https://docs.openreader.richardr.dev/configure/tts-provider-guides/kitten-tts-fastapi) |
|
||||
| Get support or contribute | [Support and Contributing](https://docs.openreader.richardr.dev/about/support-and-contributing) |
|
||||
|
||||
## 🧭 Community
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ Use any custom OpenAI-compatible TTS service with OpenReader.
|
|||
|
||||
Use this integration when your endpoint is not directly covered by built-in dropdown defaults.
|
||||
|
||||
Known compatible examples include Kokoro-FastAPI, KittenTTS-FastAPI, and Orpheus-FastAPI.
|
||||
|
||||
## Provider
|
||||
|
||||
- Provider: `Custom OpenAI-Like`
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
---
|
||||
title: KittenTTS-FastAPI
|
||||
---
|
||||
|
||||
Use [KittenTTS-FastAPI](https://github.com/richardr1126/KittenTTS-FastAPI) as an OpenAI-compatible TTS backend for OpenReader.
|
||||
|
||||
## Provider
|
||||
|
||||
- Provider: `Custom OpenAI-Like`
|
||||
- Typical model: `kitten-tts`
|
||||
- `API_BASE`: required (usually your KittenTTS URL ending with `/v1`)
|
||||
- `API_KEY`: set only if your deployment requires one
|
||||
|
||||
## Run KittenTTS (CPU)
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
--name kittentts-fastapi \
|
||||
-e KITTEN_MODEL_REPO_ID="KittenML/kitten-tts-nano-0.8-fp32" \
|
||||
-p 8005:8005 \
|
||||
ghcr.io/richardr1126/kittentts-fastapi-cpu
|
||||
```
|
||||
|
||||
## OpenReader setup
|
||||
|
||||
1. Start your KittenTTS-FastAPI server.
|
||||
2. In OpenReader Settings, choose provider `Custom OpenAI-Like`.
|
||||
3. Set `API_BASE` to your KittenTTS base URL (typically ending with `/v1`).
|
||||
4. Set `API_KEY` only if your deployment requires one.
|
||||
5. Choose model `kitten-tts` (or another model exposed by your deployment).
|
||||
|
||||
## Notes
|
||||
|
||||
:::info OpenAI-compatible API
|
||||
OpenReader expects OpenAI-compatible audio endpoints when using KittenTTS through `Custom OpenAI-Like`.
|
||||
:::
|
||||
|
||||
:::tip Endpoint shape
|
||||
Use an `API_BASE` that points at the KittenTTS API root (typically ending with `/v1`).
|
||||
:::
|
||||
|
||||
## References
|
||||
|
||||
- [richardr1126/KittenTTS-FastAPI](https://github.com/richardr1126/KittenTTS-FastAPI)
|
||||
- [TTS Providers](../tts-providers)
|
||||
- [TTS Environment Variables](../../reference/environment-variables#tts-provider-and-request-behavior)
|
||||
|
|
@ -8,7 +8,7 @@ import TabItem from '@theme/TabItem';
|
|||
OpenReader supports OpenAI-compatible TTS providers through a common API shape.
|
||||
|
||||
:::tip
|
||||
If you are running a self-hosted TTS server (Kokoro/Orpheus/etc.), use **Custom OpenAI-Like** in Settings.
|
||||
If you are running a self-hosted TTS server (Kokoro/KittenTTS/Orpheus/etc.), use **Custom OpenAI-Like** in Settings.
|
||||
:::
|
||||
|
||||
## Quick Setup by Provider
|
||||
|
|
@ -46,7 +46,7 @@ In Settings, provider options include:
|
|||
|
||||
- `OpenAI`
|
||||
- `Deepinfra`
|
||||
- `Custom OpenAI-Like` (Kokoro, Orpheus, and other OpenAI-compatible endpoints)
|
||||
- `Custom OpenAI-Like` (Kokoro, KittenTTS-FastAPI, Orpheus, and other OpenAI-compatible endpoints)
|
||||
|
||||
`API_BASE` guidance:
|
||||
|
||||
|
|
@ -67,6 +67,7 @@ TTS requests are sent from the Next.js server, not directly from the browser. `A
|
|||
## Provider Guides
|
||||
|
||||
- [Kokoro-FastAPI](./tts-provider-guides/kokoro-fastapi)
|
||||
- [KittenTTS-FastAPI](./tts-provider-guides/kitten-tts-fastapi)
|
||||
- [Orpheus-FastAPI](./tts-provider-guides/orpheus-fastapi)
|
||||
- [DeepInfra](./tts-provider-guides/deepinfra)
|
||||
- [OpenAI](./tts-provider-guides/openai)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import TabItem from '@theme/TabItem';
|
|||
## Prerequisites
|
||||
|
||||
- A recent Docker version installed
|
||||
- A TTS API server that OpenReader can reach (Kokoro-FastAPI, Orpheus-FastAPI, DeepInfra, OpenAI, or equivalent)
|
||||
- A TTS API server that OpenReader can reach (Kokoro-FastAPI, KittenTTS-FastAPI, Orpheus-FastAPI, DeepInfra, OpenAI, or equivalent)
|
||||
|
||||
:::note
|
||||
If you have suitable hardware, you can run Kokoro locally with Docker. See [Kokoro-FastAPI](./configure/tts-provider-guides/kokoro-fastapi).
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@ OpenReader is an open source text-to-speech document reader built with Next.js.
|
|||
|
||||
> Previously named **OpenReader-WebUI**.
|
||||
|
||||
It supports multiple TTS providers including OpenAI, DeepInfra, and custom OpenAI-compatible endpoints such as [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) and [Orpheus-FastAPI](https://github.com/Lex-au/Orpheus-FastAPI).
|
||||
It supports multiple TTS providers including OpenAI, DeepInfra, and custom OpenAI-compatible endpoints such as [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI), [KittenTTS-FastAPI](https://github.com/richardr1126/KittenTTS-FastAPI), and [Orpheus-FastAPI](https://github.com/Lex-au/Orpheus-FastAPI).
|
||||
|
||||
## ✨ Highlights
|
||||
|
||||
- 🎯 **Multi-Provider TTS Support**
|
||||
- [**Kokoro-FastAPI**](https://github.com/remsky/Kokoro-FastAPI): supports multi-voice combinations (for example `af_heart+af_bella`)
|
||||
- [**KittenTTS-FastAPI**](https://github.com/richardr1126/KittenTTS-FastAPI): lightweight, CPU-friendly self-hosted TTS
|
||||
- [**Orpheus-FastAPI**](https://github.com/Lex-au/Orpheus-FastAPI)
|
||||
- **Custom OpenAI-compatible**: any TTS API with `/v1/audio/voices` and `/v1/audio/speech` endpoints
|
||||
- **Cloud TTS providers**:
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ const sidebars: SidebarsConfig = {
|
|||
},
|
||||
items: [
|
||||
'configure/tts-provider-guides/kokoro-fastapi',
|
||||
'configure/tts-provider-guides/kitten-tts-fastapi',
|
||||
'configure/tts-provider-guides/orpheus-fastapi',
|
||||
'configure/tts-provider-guides/deepinfra',
|
||||
'configure/tts-provider-guides/openai',
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ export const metadata: Metadata = {
|
|||
description:
|
||||
'OpenReader lets you upload EPUB, PDF, TXT, MD, and DOCX files for synchronized text-to-speech reading with multi-provider TTS support.',
|
||||
keywords:
|
||||
'PDF reader, EPUB reader, text to speech, tts open ai, kokoro tts, OpenReader, TTS PDF reader, ebook reader, epub tts, document reader',
|
||||
'PDF reader, EPUB reader, text to speech, tts open ai, kokoro tts, kitten tts, OpenReader, TTS PDF reader, ebook reader, epub tts, document reader',
|
||||
alternates: {
|
||||
canonical: '/',
|
||||
},
|
||||
|
|
@ -388,7 +388,7 @@ export default function LandingPage() {
|
|||
OpenReader highlights every word as it’s spoken, turning
|
||||
any document into a synchronized read-along experience. Connect
|
||||
any OpenAI-compatible TTS provider — including Kokoro,
|
||||
Deepinfra, or your own self-hosted endpoint.
|
||||
KittenTTS, Deepinfra, or your own self-hosted endpoint.
|
||||
</p>
|
||||
</div>
|
||||
<ul className="landing-tts-list">
|
||||
|
|
@ -403,7 +403,7 @@ export default function LandingPage() {
|
|||
<span className="landing-tts-list-icon" aria-hidden="true">•</span>
|
||||
<div>
|
||||
<h4>Multiple voices & providers</h4>
|
||||
<p>Choose from dozens of voices across OpenAI, Kokoro, Deepinfra, or any compatible endpoint.</p>
|
||||
<p>Choose from dozens of voices across OpenAI, Kokoro, KittenTTS, Deepinfra, or any compatible endpoint.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ export function SettingsModal({ className = '' }: { className?: string }) {
|
|||
case 'custom-openai':
|
||||
return [
|
||||
{ id: 'kokoro', name: 'Kokoro' },
|
||||
{ id: 'kitten-tts', name: 'KittenTTS' },
|
||||
{ id: 'orpheus', name: 'Orpheus' },
|
||||
{ id: 'custom', name: 'Other' }
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in a new issue