Syncanto Voice lokal ohne Docker testen
Syncanto Voice lokal ohne Docker testen
Für die lokale Entwicklung unter macOS/Herd braucht Syncanto Voice keinen Docker-Container. Der Laravel-Queue-Job ruft den Python-Renderer direkt über dessen CLI auf.
1. Renderer auschecken
Das Repository databaseDog/voice.syncanto sollte lokal neben oder unabhängig von eintube liegen.
git clone git@github.com:databaseDog/voice.syncanto.git
cd voice.syncanto
2. Runtime und SoundFont installieren
Im Voice-Repository:
bash scripts/setup-local-macos.sh
Das Setup installiert über Homebrew:
- Python 3.12
- FluidSynth
- FFmpeg
Anschließend wird eine .venv angelegt und MuseScore_General.sf3 nach .local/soundfonts/ geladen.
Der SoundFont stammt aus dem offiziellen MuseScore-Projekt und wird unter MIT-Lizenz veröffentlicht. Dieselbe Datei ist als Default für den späteren Voice-Container vorgesehen, damit lokale Tests denselben Klang wie die produktive Render-Pipeline verwenden.
3. eintube .env konfigurieren
Das Setup-Script gibt am Ende die konkreten absoluten Pfade aus. Diese in die lokale .env übernehmen:
SYNCANTO_VOICE_RENDERER=/absolute/path/to/voice.syncanto/.venv/bin/syncanto-voice
SYNCANTO_VOICE_SOUNDFONT=/absolute/path/to/voice.syncanto/.local/soundfonts/MuseScore_General.sf3
SYNCANTO_VOICE_TIMEOUT=120
Danach Laravel-Konfiguration neu laden:
php artisan config:clear
4. Installation prüfen
php artisan voice:doctor
Erwartet werden grüne Checks für Renderer, FluidSynth, FFmpeg und SoundFont.
5. Renderer direkt testen
Im Voice-Repository kann eine MusicXML-/MXL-Datei unabhängig von Laravel gerendert werden:
.venv/bin/syncanto-voice \
/absolute/path/to/score.mxl \
./output \
--soundfont ./.local/soundfonts/MuseScore_General.sf3
Erwartete Ausgabe:
output/
├── <stimme-1>.mp3
├── <stimme-2>.mp3
├── ...
├── click.mp3
├── manifest.json
└── timeline.json
6. End-to-End über Syncanto testen
Für einen echten Queue-Test sollte lokal ein asynchroner Queue-Treiber verwendet werden. Bei QUEUE_CONNECTION=sync wird das Rendering direkt im HTTP-Request ausgeführt; das funktioniert zwar, ist aber für längere Partituren unpraktisch.
Mit dem lokal üblichen Queue-Setup dann einen Worker starten:
php artisan queue:work
Anschließend in Syncanto bei einem Song eine MusicXML/MXL-Datei als Syncanto-Voice-Partitur hochladen. Nach erfolgreichem Rendern sollten die Einzelstimmen und der Click-Track als Voice-Tracks am Song verfügbar sein und die Timeline gespeichert sein.
SoundFont
Als Default verwenden wir MuseScore_General.sf3 statt eines beliebigen Community-SoundFonts:
- offizieller MuseScore-General-MIDI-SoundFont
- MIT-Lizenz
- ca. 36 MB als SF3
- FluidSynth unterstützt SF3 direkt
- ausreichend klarer Piano-/GM-Klang für Übetracks
- identischer SoundFont für lokale und containerisierte Renderings
Die SoundFont-Datei selbst wird nicht in Git committed. Das Setup lädt sie von der offiziellen MuseScore-Distribution und speichert die zugehörige Lizenz daneben.