Add configurable TTS and STT residency policies

This commit is contained in:
Mikei386
2026-09-29 20:47:47 +02:00
parent 90a97567f3
commit b2256647e9
9 changed files with 209 additions and 40 deletions
+7
View File
@@ -11,6 +11,7 @@ from auth import CredentialStore, verify_password
from catalog import Catalog
from tts_runtime import TTSRuntime
from stt import STT,read_upload
from audio_policy import AudioPolicy
from tts_test import TTSTests
from profiles import Profiles
from capacity import assess, overview
@@ -110,6 +111,7 @@ class Server(ThreadingHTTPServer):
if self.endpoint.config['autostart']:
try:self.endpoint.start()
except ValueError as exc:self.endpoint.error=str(exc)
self.audio_policy=AudioPolicy(self.catalog.root.parent/'audio-policy.json',self.profiles,self.tts_tests,self.stt,self.scheduler,self.endpoint)
self.sessions = {}
self.login_attempts = []
self.auth_lock = threading.Lock()
@@ -279,6 +281,7 @@ class Handler(BaseHTTPRequestHandler):
if self.path == '/api/v1/docker':return self.respond(self.server.docker.status())
if self.path == '/api/v1/stt':return self.respond(self.server.stt.status())
if self.path == '/api/v1/tts':return self.respond(self.server.tts_tests.status())
if self.path == '/api/v1/audio-policy':return self.respond(self.server.audio_policy.status())
if urlsplit(self.path).path == '/api/v1/tts/audio':
try:return self.respond(self.server.tts_tests.audio(parse_qs(urlsplit(self.path).query).get('id',[''])[0]),mime='audio/wav')
except (OSError,ValueError):return self.respond({'error':'Audio nicht verfügbar.'},404)
@@ -351,6 +354,10 @@ class Handler(BaseHTTPRequestHandler):
return self.login()
if not self.authenticated():
return self.respond({'error':'Anmeldung oder gültiger API-Token erforderlich.'},401)
if self.path == '/api/v1/audio-policy':
try:return self.respond(self.server.audio_policy.configure(self.read_json()))
except ValueError as exc:return self.respond({'error':str(exc)},400)
except OSError:return self.respond({'error':'Audio-Einstellung konnte nicht gespeichert werden.'},503)
if self.path == '/api/v1/huggingface':
try:
data=self.read_json()