From 00cff1eb7eb1400ebef66d37b0138f5837c348be Mon Sep 17 00:00:00 2001 From: latte Date: Sun, 5 Apr 2026 15:21:26 +0200 Subject: [PATCH] first audio thing that i want to try --- .env.example | 13 ++ README.md | 45 +++++++ scripts/tts_generate.py | 215 +++++++++++++++++++++++++++++++++ src/content/config.ts | 1 + src/pages/blog/[...slug].astro | 28 +++++ 5 files changed, 302 insertions(+) create mode 100644 scripts/tts_generate.py diff --git a/.env.example b/.env.example index ee072c2..03f8e53 100644 --- a/.env.example +++ b/.env.example @@ -15,6 +15,19 @@ DB_PATH=/data/guestbook.db HOST=0.0.0.0 PORT=3000 +# --- TTS (scripts/tts_generate.py) --- +# Provider: "google" (default, 1M chars/month free), "mistral", or "openai" +TTS_PROVIDER=google + +# Google Cloud TTS — https://console.cloud.google.com/apis/credentials +GOOGLE_API_KEY= + +# Mistral Voxtral TTS — https://console.mistral.ai/api-keys +# MISTRAL_API_KEY= + +# OpenAI TTS-1 — https://platform.openai.com/api-keys +# OPENAI_API_KEY= + # --- Development overrides --- # For local dev (npm run dev), override with: # COOKIE_SECURE=false diff --git a/README.md b/README.md index 54473f2..bab98a2 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,51 @@ docker login git.hiddenden.cafe docker push git.hiddenden.cafe/mats/cozy-den:latest ``` +## Blog Text-to-Speech + +Blog posts kunnen automatisch omgezet worden naar audio met `scripts/tts_generate.py`. + +### Setup + +1. Kopieer `.env.example` naar `.env` en vul je API key in +2. Exporteer de variabelen: +```bash +export GOOGLE_API_KEY=jouw_sleutel_hier +# of: export MISTRAL_API_KEY=... / export OPENAI_API_KEY=... +``` + +### Audio genereren + +```bash +# Eén post — output: .mp3 in de huidige map +python scripts/tts_generate.py src/content/blog/hello-world.md + +# Andere output directory +python scripts/tts_generate.py src/content/blog/hello-world.md --output-dir public/audio + +# Andere provider +TTS_PROVIDER=openai python scripts/tts_generate.py src/content/blog/hello-world.md +``` + +Beschikbare providers (via `TTS_PROVIDER`): + +| Provider | Env var | Prijs | +|---|---|---| +| `google` (standaard) | `GOOGLE_API_KEY` | 1M chars/maand gratis | +| `mistral` | `MISTRAL_API_KEY` | ~$16/M chars | +| `openai` | `OPENAI_API_KEY` | ~$15/M chars | + +### Audio tonen op een blogpost + +Voeg `audio: true` toe aan het frontmatter van de post. De `