Serverseitige Sprachsynthese (deutsche Thorsten-Stimme, Piper) für den EPUB-Reader: /tts/synthesize/ nimmt einen Satz (max. 500 Zeichen) entgegen, synthetisiert und streamt WAV zurück, ohne zu persistieren, zu loggen oder zu cachen — eine bewusste, eng begrenzte Ausnahme vom "Server sieht nie Klartext"-Prinzip (siehe CLAUDE.md). Der neue ▶-Button im Reader-Header liest ab der aktuellen Position satzweise vor, hebt den gerade gesprochenen Satz hervor und scrollt mit; eine kleine Leiste bietet Pause/Stop. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xb6yX2S9aTGepYA9JFba9x
19 lines
696 B
Text
19 lines
696 B
Text
# Pinned to exact versions. These are what production runs and what the test
|
|
# suite is green against — with `>=` the image you get depends on the day you
|
|
# build it, which is how a rebuild once swapped in a gunicorn that could not
|
|
# boot the gevent worker at all.
|
|
#
|
|
# Nothing here updates on its own any more, so bump deliberately: change a
|
|
# version, let CI run, then deploy.
|
|
Django==6.1
|
|
pylast==7.1.0
|
|
requests==2.34.2
|
|
python-dotenv==1.2.3
|
|
whitenoise==6.12.0
|
|
feedparser==6.0.14
|
|
gevent==26.8.0
|
|
# gunicorn 26.2.0 imports packaging.version in ggevent.py while declaring no
|
|
# dependencies of its own, so packaging has to be requested explicitly.
|
|
gunicorn==26.2.0
|
|
packaging==26.3
|
|
piper-tts==1.7.0
|