@webgal-tools/voice
Version:
WebGAL GPT-SoVITS语音合成应用
36 lines • 1.57 kB
JavaScript
import { parseSceneScript, applySceneScript } from '@webgal-tools/parser';
export class WebGALScriptCompiler {
static parseScript(filePath, configuredCharacters) {
const parsedResult = parseSceneScript(filePath, configuredCharacters);
return parsedResult.dialogues.map(d => ({
character: d.character,
text: d.text,
audioFile: d.params.find(p => p.key.endsWith('.wav'))?.key,
volume: d.params.find(p => p.key === 'volume')?.value,
lineNumber: d.lineNumber,
originalLine: d.originalLine,
id: d.id,
statementId: d.statementId,
otherArgs: d.params.filter(p => p.key !== 'volume' && !p.key.endsWith('.wav')).map(p => p.key + (p.value ? '=' + p.value : ''))
}));
}
static rebuildScript(filePath, newDialogues) {
return applySceneScript(filePath, newDialogues.map(d => ({
character: d.character,
text: d.text,
params: [
...(d.audioFile ? [{ key: d.audioFile, value: '' }] : []),
...(d.volume ? [{ key: 'volume', value: d.volume }] : []),
...((d.otherArgs || []).map(arg => {
const [key, value] = arg.includes('=') ? arg.split('=') : [arg, ''];
return { key, value };
}))
],
lineNumber: d.lineNumber,
originalLine: d.originalLine,
id: d.id,
statementId: d.statementId
})));
}
}
//# sourceMappingURL=compiler.js.map