Add profile presets and min-p controls, embeddings and VoxCPM workers

This commit is contained in:
Mikei386 committed 2026-10-02 18:42:29 +02:00
1 parent 74dd2ed8ba
commit a7b30b62d2
32 files changed
+615 -64

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
"""Offline one-request VoxCPM2 worker. Never persists prompt text or logs media."""
import contextlib,json,sys
from pathlib import Path
def main():
root=Path(sys.argv[1]);request=json.loads(sys.stdin.read());phase='Modell laden'
try:
# Libraries print progress and occasionally text; discard rather than record it.
with open('/dev/null','w') as sink,contextlib.redirect_stdout(sink),contextlib.redirect_stderr(sink):
import torch,soundfile as sf
from voxcpm import VoxCPM
model=VoxCPM.from_pretrained(str(root/'model'),load_denoiser=False,local_files_only=True,optimize=False,device='cuda:0')
(root/'phase').write_text('Stimme wird erzeugt');phase='Stimme erzeugen'
wave=model.generate(text=request['text'],reference_wav_path=str(root/'reference.wav') if (root/'reference.wav').exists() else None,cfg_value=request['cfg'],inference_timesteps=request['steps'],max_len=2048,normalize=False,denoise=False,seed=request['seed'],retry_badcase_max_times=1)
rate=model.tts_model.sample_rate
sf.write(root/'result.wav',wave,rate,subtype='PCM_16')
result=dict(ok=True,sample_rate=rate,duration=len(wave)/rate)
except Exception as exc:
oom='outofmemory' in type(exc).__name__.lower() or 'out of memory' in str(exc).lower()
result=dict(ok=False,error='GPU-Speicher reicht nicht aus. Andere Deck-Modelle entladen oder andere GPU wählen.' if oom else 'VoxCPM2: '+phase+' fehlgeschlagen ('+type(exc).__name__+'). Laufzeit und Komponenten prüfen.')
(root/'result.json').write_text(json.dumps(result))
return 0 if result['ok'] else 1
if __name__=='__main__':sys.exit(main())