Zum Hauptinhalt springen

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.