Tune ACE-Step XL-SFT test defaults
This commit is contained in:
@@ -16,8 +16,8 @@ Python-Modulen und teilweise aus dem Browser-`localStorage`. Deshalb bindet der
|
|||||||
Compose-Dienst vier kleine, versionierte Overrides aus `./overrides` read-only
|
Compose-Dienst vier kleine, versionierte Overrides aus `./overrides` read-only
|
||||||
in den Container ein. Sie setzen fuer das XL-SFT-Modell:
|
in den Container ein. Sie setzen fuer das XL-SFT-Modell:
|
||||||
|
|
||||||
- 50 DiT-Schritte, Guidance 7, ODE/Euler und CFG-Intervall 0 bis 1 (Upstream-Defaults)
|
- 80 DiT-Schritte, Guidance 8, Shift 3, ODE/Euler und CFG-Intervall 0 bis 1
|
||||||
- Shift 1 statt des fehlerhaften UI-Werts 3
|
- reine Stilreferenzen werden entsprechend der ACE-Step-API-Empfehlung automatisch mit Stärke 0,2 übertragen; Cover-/Quellaudio behält seine eigene Stärke
|
||||||
- ADG aus, keine benutzerdefinierten Timesteps
|
- ADG aus, keine benutzerdefinierten Timesteps
|
||||||
- FLAC als verlustfreie Standardausgabe
|
- FLAC als verlustfreie Standardausgabe
|
||||||
- 320 kbit/s als MP3-Ausweichwert
|
- 320 kbit/s als MP3-Ausweichwert
|
||||||
@@ -49,7 +49,7 @@ Image-Build ab. Die Community-UI unter `http://192.168.1.212:7861` ist bis zu
|
|||||||
vollstaendigen Ende-zu-Ende-Tests von Cover und Remix als experimentell
|
vollstaendigen Ende-zu-Ende-Tests von Cover und Remix als experimentell
|
||||||
gekennzeichnet.
|
gekennzeichnet.
|
||||||
|
|
||||||
Die Community-UI startet XL-SFT mit 50 Schritten, Guidance 7, Shift 1, FLAC
|
Die Community-UI startet XL-SFT mit 80 Schritten, Guidance 8, Shift 3, FLAC
|
||||||
und aktivem Thinking ueber den 1,7B-Planer. `AI Enhance` wird als `use_format`
|
und aktivem Thinking ueber den 1,7B-Planer. `AI Enhance` wird als `use_format`
|
||||||
uebertragen. Vor jedem Auftrag zeigt sie die tatsaechlich gesendeten Parameter
|
uebertragen. Vor jedem Auftrag zeigt sie die tatsaechlich gesendeten Parameter
|
||||||
und faengt offensichtliche Widersprueche ab. Referenzaudio steuert nur Klang
|
und faengt offensichtliche Widersprueche ab. Referenzaudio steuert nur Klang
|
||||||
|
|||||||
@@ -72,6 +72,11 @@ function buildReleaseTaskPayload(params: GenerationParams): Record<string, unkno
|
|||||||
const thinking = params.thinking ?? true;
|
const thinking = params.thinking ?? true;
|
||||||
const enhance = params.enhance ?? false;
|
const enhance = params.enhance ?? false;
|
||||||
const taskType = params.taskType === 'audio2audio' ? 'cover' : (params.taskType || 'text2music');
|
const taskType = params.taskType === 'audio2audio' ? 'cover' : (params.taskType || 'text2music');
|
||||||
|
// A reference in text-to-music mode is only a global style/timbre guide.
|
||||||
|
// ACE-Step's own API guide recommends a low value (~0.2) for style transfer.
|
||||||
|
// Cover/source-audio jobs retain the explicitly selected cover strength.
|
||||||
|
const isStyleReference = taskType === 'text2music' && Boolean(params.referenceAudioUrl) && !params.sourceAudioUrl;
|
||||||
|
const effectiveAudioStrength = isStyleReference ? 0.2 : (params.audioCoverStrength ?? 1.0);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
prompt,
|
prompt,
|
||||||
@@ -82,9 +87,9 @@ function buildReleaseTaskPayload(params: GenerationParams): Record<string, unkno
|
|||||||
key_scale: params.keyScale || '',
|
key_scale: params.keyScale || '',
|
||||||
time_signature: params.timeSignature || '',
|
time_signature: params.timeSignature || '',
|
||||||
audio_duration: params.duration && params.duration > 0 ? params.duration : -1,
|
audio_duration: params.duration && params.duration > 0 ? params.duration : -1,
|
||||||
inference_steps: params.inferenceSteps ?? 50,
|
inference_steps: params.inferenceSteps ?? 80,
|
||||||
guidance_scale: params.guidanceScale ?? 7.0,
|
guidance_scale: params.guidanceScale ?? 8.0,
|
||||||
shift: params.shift ?? 1.0,
|
shift: params.shift ?? 3.0,
|
||||||
infer_method: params.inferMethod || 'ode',
|
infer_method: params.inferMethod || 'ode',
|
||||||
batch_size: Math.min(Math.max(params.batchSize ?? 1, 1), 16),
|
batch_size: Math.min(Math.max(params.batchSize ?? 1, 1), 16),
|
||||||
use_random_seed: params.randomSeed !== false,
|
use_random_seed: params.randomSeed !== false,
|
||||||
@@ -109,7 +114,7 @@ function buildReleaseTaskPayload(params: GenerationParams): Record<string, unkno
|
|||||||
audio_codes: params.audioCodes || '',
|
audio_codes: params.audioCodes || '',
|
||||||
repainting_start: params.repaintingStart ?? 0.0,
|
repainting_start: params.repaintingStart ?? 0.0,
|
||||||
repainting_end: params.repaintingEnd ?? -1,
|
repainting_end: params.repaintingEnd ?? -1,
|
||||||
audio_cover_strength: params.audioCoverStrength ?? 1.0,
|
audio_cover_strength: effectiveAudioStrength,
|
||||||
use_adg: params.useAdg ?? false,
|
use_adg: params.useAdg ?? false,
|
||||||
cfg_interval_start: params.cfgIntervalStart ?? 0.0,
|
cfg_interval_start: params.cfgIntervalStart ?? 0.0,
|
||||||
cfg_interval_end: params.cfgIntervalEnd ?? 1.0,
|
cfg_interval_end: params.cfgIntervalEnd ?? 1.0,
|
||||||
@@ -324,7 +329,7 @@ patch('App.tsx', (text) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
patch('components/CreatePanel.tsx', (text) => {
|
patch('components/CreatePanel.tsx', (text) => {
|
||||||
text = replaceOnce(text, 'useState(9.0);', 'useState(7.0);', 'guidance default');
|
text = replaceOnce(text, 'useState(9.0);', 'useState(8.0);', 'guidance default');
|
||||||
text = replaceOnce(
|
text = replaceOnce(
|
||||||
text,
|
text,
|
||||||
'useState(false); // Default false for GPU compatibility',
|
'useState(false); // Default false for GPU compatibility',
|
||||||
@@ -332,9 +337,9 @@ patch('components/CreatePanel.tsx', (text) => {
|
|||||||
'thinking default',
|
'thinking default',
|
||||||
);
|
);
|
||||||
text = replaceOnce(text, "useState<'mp3' | 'flac'>('mp3');", "useState<'mp3' | 'flac'>('flac');", 'lossless default');
|
text = replaceOnce(text, "useState<'mp3' | 'flac'>('mp3');", "useState<'mp3' | 'flac'>('flac');", 'lossless default');
|
||||||
text = replaceOnce(text, 'useState(12);', 'useState(50);', 'XL-SFT steps default');
|
text = replaceOnce(text, 'useState(12);', 'useState(80);', 'XL-SFT steps default');
|
||||||
text = replaceOnce(text, "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-0.6B'", "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-1.7B'", 'planner model default');
|
text = replaceOnce(text, "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-0.6B'", "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-1.7B'", 'planner model default');
|
||||||
text = replaceOnce(text, 'useState(3.0);', 'useState(1.0);', 'shift default');
|
// Upstream already defaults to Shift 3. Keep it instead of replacing it.
|
||||||
|
|
||||||
text = replaceOnce(
|
text = replaceOnce(
|
||||||
text,
|
text,
|
||||||
@@ -347,6 +352,10 @@ patch('components/CreatePanel.tsx', (text) => {
|
|||||||
window.alert('Widerspruch: Der Auftrag verlangt Gesang, aber das Liedtextfeld ist leer. Bitte Text eintragen oder „Instrumental“ wählen.');
|
window.alert('Widerspruch: Der Auftrag verlangt Gesang, aber das Liedtextfeld ist leer. Bitte Text eintragen oder „Instrumental“ wählen.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (instrumental && asksForVocals) {
|
||||||
|
window.alert('Widerspruch: „Instrumental“ ist aktiv, aber die Beschreibung verlangt Gesang. Bitte Gesangsbegriffe aus der Beschreibung entfernen oder „Instrumental“ deaktivieren und einen Liedtext eintragen.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ((taskType === 'cover' || taskType === 'audio2audio') && !sourceAudioUrl.trim() && !audioCodes.trim()) {
|
if ((taskType === 'cover' || taskType === 'audio2audio') && !sourceAudioUrl.trim() && !audioCodes.trim()) {
|
||||||
window.alert('Für einen Cover-Auftrag fehlt das Quellaudio. Bitte unter „Quellaudio / Cover“ eine Datei auswählen.');
|
window.alert('Für einen Cover-Auftrag fehlt das Quellaudio. Bitte unter „Quellaudio / Cover“ eine Datei auswählen.');
|
||||||
return;
|
return;
|
||||||
@@ -368,6 +377,7 @@ patch('components/CreatePanel.tsx', (text) => {
|
|||||||
\`Gesang: \${instrumental ? 'nein (Instrumental)' : 'ja'}\`,
|
\`Gesang: \${instrumental ? 'nein (Instrumental)' : 'ja'}\`,
|
||||||
\`Referenzaudio (nur Klang/Produktion): \${referenceAudioUrl ? 'vorhanden' : 'keines'}\`,
|
\`Referenzaudio (nur Klang/Produktion): \${referenceAudioUrl ? 'vorhanden' : 'keines'}\`,
|
||||||
\`Quellaudio (Melodie/Rhythmus/Akkorde): \${sourceAudioUrl ? 'vorhanden' : 'keines'}\`,
|
\`Quellaudio (Melodie/Rhythmus/Akkorde): \${sourceAudioUrl ? 'vorhanden' : 'keines'}\`,
|
||||||
|
\`Audio-Einfluss: \${referenceAudioUrl && !sourceAudioUrl && taskType === 'text2music' ? '0,2 (sichere Stilreferenz)' : audioCoverStrength}\`,
|
||||||
\`Ausgabe: \${audioFormat.toUpperCase()}, \${batchSize} Variation(en), \${bulkCount} Auftrag/Aufträge\`,
|
\`Ausgabe: \${audioFormat.toUpperCase()}, \${batchSize} Variation(en), \${bulkCount} Auftrag/Aufträge\`,
|
||||||
'',
|
'',
|
||||||
'Auftrag jetzt starten?',
|
'Auftrag jetzt starten?',
|
||||||
|
|||||||
Reference in New Issue
Block a user