Kleineres Modell
This commit is contained in:
@@ -41,11 +41,11 @@ DGX-Spark-Maschine mit begrenzter GPU-Speichernutzung ausgelegt
|
||||
`vllm/vllm-omni:latest-aarch64`, bindet Port `8091` fuer die API und `8092`
|
||||
fuer die Browser-Oberflaeche, mountet Hugging-Face-Daten sowie Deployment-,
|
||||
Entrypoint- und UI-Dateien.
|
||||
- `entrypoint.sh`: startet die Voice-Cloning-Oberflaeche im Container, startet
|
||||
- `docker/entrypoint.sh`: startet die Voice-Cloning-Oberflaeche im Container, startet
|
||||
den vLLM-Omni-Server und fuehrt nach erfolgreichem Healthcheck einen
|
||||
Warmup-Request aus, damit CUDA-Graph-/Compile-Kosten nicht den ersten echten
|
||||
Nutzerrequest treffen.
|
||||
- `start.sh`: startet den Compose-Service, filtert relevante Containerlogs in
|
||||
- `scripts/start.sh`: startet den Compose-Service, filtert relevante Containerlogs in
|
||||
lesbare Statusmeldungen und wartet auf `/health`.
|
||||
- `deploy/qwen3_tts.yaml`: aktive Deployment-Konfiguration fuer die zweistufige
|
||||
TTS-Pipeline, Streaming-Connectoren, Sampling-Parameter und Speicherlimits.
|
||||
@@ -53,14 +53,14 @@ DGX-Spark-Maschine mit begrenzter GPU-Speichernutzung ausgelegt
|
||||
Deployment-Konfiguration; offenbar als explizite Streaming-Variante abgelegt.
|
||||
- `STREAMING_API.md`: detaillierte API-Dokumentation fuer REST, WebSocket,
|
||||
Session-Protokoll, Audioformate, Segmentierung und bekannte Latenzwerte.
|
||||
- `test_http.py`: einfacher REST-Test gegen `http://localhost:8091`, schreibt
|
||||
- `tests/test_http.py`: einfacher REST-Test gegen `http://localhost:8091`, schreibt
|
||||
`test_output.wav`.
|
||||
- `test_ws.py`: WebSocket-Streaming-Test gegen
|
||||
- `tests/test_ws.py`: WebSocket-Streaming-Test gegen
|
||||
`ws://localhost:8091/v1/audio/speech/stream`, sammelt PCM-Chunks und schreibt
|
||||
`test_stream_output.wav`.
|
||||
- `ui/voice-cloning.html`: einfache Browser-Oberflaeche fuer Voice Cloning mit
|
||||
Referenzaudio, Referenztranskript, Zieltext und Ausgabeplayer.
|
||||
- `voice_clone_ui.py`: kleiner lokaler Webserver, der die HTML-Oberflaeche
|
||||
- `docker/voice_clone_ui.py`: kleiner lokaler Webserver, der die HTML-Oberflaeche
|
||||
ausliefert und REST-Anfragen als Same-Origin-Proxy an den TTS-Service
|
||||
weiterleitet.
|
||||
|
||||
@@ -69,11 +69,11 @@ DGX-Spark-Maschine mit begrenzter GPU-Speichernutzung ausgelegt
|
||||
Der normale TTS/UI-Service wird gestartet und gestoppt ueber:
|
||||
|
||||
```bash
|
||||
./start_tts.sh
|
||||
./stop_tts.sh
|
||||
./scripts/start_tts.sh
|
||||
./scripts/stop_tts.sh
|
||||
```
|
||||
|
||||
`./start.sh` bleibt als kompatibler Wrapper auf `./start_tts.sh` erhalten. Beim
|
||||
`./scripts/start.sh` bleibt als kompatibler Wrapper auf `start_tts.sh` erhalten. Beim
|
||||
Start des TTS-Service wird ein eventuell laufender Clone-Container automatisch
|
||||
gestoppt. Das Skript startet danach `qwen3-tts`, beobachtet die Logs und beendet
|
||||
sich erfolgreich, sobald `http://localhost:8091/health` antwortet. Die UI ist
|
||||
@@ -92,8 +92,8 @@ Voice-Clone-Prompts. Im lokalen vLLM-Omni-Code wird ein gespeicherter oder aus
|
||||
uebergeben. Fuer einen Voice-Dialog ist deshalb der richtige Betriebsmodus:
|
||||
|
||||
```bash
|
||||
./download_qwen3_tts_base.sh # einmalig, falls das Base-Modell noch fehlt
|
||||
./start_dialog_tts.sh # startet qwen3-tts mit Qwen3-TTS-12Hz-1.7B-Base
|
||||
./scripts/download_qwen3_tts_base.sh # einmalig, falls das Base-Modell noch fehlt
|
||||
./scripts/start_dialog_tts.sh # startet qwen3-tts mit Qwen3-TTS-12Hz-1.7B-Base
|
||||
```
|
||||
|
||||
Danach unter `http://localhost:8092/` die Referenzstimme speichern und fuer
|
||||
@@ -104,7 +104,7 @@ Referenzaudio kann alternativ ein passender 2048-dim `speaker_embedding` ueber
|
||||
`/api/voice-vectors` gespeichert und bei jeder Ausgabe mitgesendet werden.
|
||||
|
||||
`seed` bleibt zusaetzlich sinnvoll, ersetzt aber keinen Speaker-Anker. Der
|
||||
Runtime-Patch `patch_qwen3_tts_runtime.py` sorgt dafuer, dass `seed` im
|
||||
Runtime-Patch `docker/patch_qwen3_tts_runtime.py` sorgt dafuer, dass `seed` im
|
||||
WebSocket-Pfad tatsaechlich an jedes Segment weitergereicht wird und die
|
||||
relevanten Werte im Containerlog sichtbar sind.
|
||||
|
||||
@@ -114,7 +114,7 @@ REST eignet sich fuer komplette Eingabetexte und liefert standardmaessig eine
|
||||
WAV-Antwort. Der Testclient nutzt:
|
||||
|
||||
```bash
|
||||
python3 test_http.py
|
||||
python3 tests/test_http.py
|
||||
```
|
||||
|
||||
WebSocket eignet sich fuer Low-Latency-Szenarien, in denen Text schrittweise
|
||||
@@ -123,7 +123,7 @@ eintrifft. Eine Session beginnt mit `session.config`, nimmt danach beliebig viel
|
||||
PCM-Binaerframes oder WAV-Bloecke zurueck. Der Testclient nutzt:
|
||||
|
||||
```bash
|
||||
python3 test_ws.py
|
||||
python3 tests/test_ws.py
|
||||
```
|
||||
|
||||
Details zu Nachrichtentypen, Timeouts, Audioformaten und externem Zugriff stehen
|
||||
@@ -132,7 +132,7 @@ in `STREAMING_API.md`.
|
||||
## Voice-Cloning-Oberflaeche
|
||||
|
||||
Die Browser-Oberflaeche laeuft im selben Container wie der TTS-Service. Beim
|
||||
Start ueber `./start.sh` wird neben der API auf Port `8091` auch die UI auf Port
|
||||
Start ueber `./scripts/start.sh` wird neben der API auf Port `8091` auch die UI auf Port
|
||||
`8092` veroeffentlicht:
|
||||
|
||||
```text
|
||||
@@ -179,7 +179,7 @@ optionalen zweiten Container `qwen3-tts-clone` im Compose-Profil `clone`. Er
|
||||
laeuft auf Port `8093` und wird nur bei Bedarf gestartet:
|
||||
|
||||
```bash
|
||||
QWEN3_TTS_CLONE_MODEL=<lokal-verfuegbares-clone/base-modell> ./start_clone.sh
|
||||
QWEN3_TTS_CLONE_MODEL=<lokal-verfuegbares-clone/base-modell> ./scripts/start_clone.sh
|
||||
```
|
||||
|
||||
Beim Start des Clone-Service wird der normale TTS/UI-Container automatisch
|
||||
@@ -187,15 +187,15 @@ gestoppt. Damit laufen TTS und Clone nicht gleichzeitig auf derselben GPU.
|
||||
`clone_model.sh` bleibt fuer manuelles `status`, `logs` und `unload` erhalten:
|
||||
|
||||
```bash
|
||||
./stop_clone.sh
|
||||
./clone_model.sh status
|
||||
./clone_model.sh logs
|
||||
./clone_model.sh unload
|
||||
./scripts/stop_clone.sh
|
||||
./scripts/clone_model.sh status
|
||||
./scripts/clone_model.sh logs
|
||||
./scripts/clone_model.sh unload
|
||||
```
|
||||
|
||||
Default fuer den Clone-Service ist jetzt `Qwen/Qwen3-TTS-12Hz-1.7B-Base`.
|
||||
Wenn das Modell noch nicht im lokalen Hugging-Face-Cache liegt, zuerst
|
||||
`./download_qwen3_tts_base.sh` ausfuehren oder dem Container funktionierenden
|
||||
`./scripts/download_qwen3_tts_base.sh` ausfuehren oder dem Container funktionierenden
|
||||
Internet-/DNS-Zugriff geben.
|
||||
|
||||
Der UI-Proxy kennt dafuer diese optionalen Routen:
|
||||
@@ -217,7 +217,7 @@ den Haupt-TTS-Service.
|
||||
- `deploy/qwen3_tts.yaml` und `deploy/qwen3_tts.streaming.yaml` sind derzeit
|
||||
doppelt vorhanden. Wenn beide Varianten dauerhaft gebraucht werden, sollte der
|
||||
Unterschied dokumentiert oder eine Datei entfernt werden.
|
||||
- `test_ws.py` installiert `websockets` bei fehlendem Import automatisch per pip.
|
||||
- `tests/test_ws.py` installiert `websockets` bei fehlendem Import automatisch per pip.
|
||||
Das ist praktisch fuer lokale Tests, aber fuer reproduzierbare Umgebungen
|
||||
weniger kontrolliert als eine explizite Requirements-Datei.
|
||||
- Die Voice-Cloning-Oberflaeche ist ein Client fuer vorhandene API-Felder. Sie
|
||||
|
||||
Reference in New Issue
Block a user