Add isolated Qwen3 TTS runtime, GUI setup and speech endpoint
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
"""One isolated offline Qwen-TTS request; stdin is never persisted."""
|
||||
import json,sys
|
||||
from pathlib import Path
|
||||
|
||||
def main():
|
||||
request=json.load(sys.stdin);root=Path(request['output'])
|
||||
try:
|
||||
import torch,soundfile as sf
|
||||
from qwen_tts import Qwen3TTSModel
|
||||
model=Qwen3TTSModel.from_pretrained(request['model'],device_map='cuda:0',dtype=torch.bfloat16,attn_implementation='sdpa',local_files_only=True)
|
||||
waves,rate=model.generate_custom_voice(text=request['text'],language=request['language'],speaker=request['speaker'],max_new_tokens=1024)
|
||||
wave=waves[0]
|
||||
if request['speed']!=1:
|
||||
import librosa
|
||||
wave=librosa.effects.time_stretch(wave,rate=request['speed'])
|
||||
sf.write(root/'result.wav',wave,rate,subtype='PCM_16')
|
||||
(root/'result.json').write_text(json.dumps(dict(ok=True,sample_rate=rate,duration=len(wave)/rate)))
|
||||
except Exception as exc:
|
||||
(root/'result.json').write_text(json.dumps(dict(ok=False,error='CUDA-Speicher reicht nicht aus.' if 'outofmemory' in type(exc).__name__.lower() or 'out of memory' in str(exc).lower() else 'TTS-Ausführung fehlgeschlagen: '+type(exc).__name__)))
|
||||
sys.exit(1)
|
||||
if __name__=='__main__':main()
|
||||
Reference in New Issue
Block a user