feat: Refactor voice cloning job submission to use FormData and update VoiceDesignForm instruct property to be optional

This commit is contained in:
2026-02-06 15:59:16 +08:00
parent cbf906574c
commit 26e40039a9
2 changed files with 33 additions and 13 deletions

View File

@@ -177,27 +177,47 @@ const CustomVoiceForm = forwardRef<CustomVoiceFormHandle>((_props, ref) => {
let result let result
if (selectedItem?.source === 'saved-design') { if (selectedItem?.source === 'saved-design') {
if (selectedItem.backendType === 'local') { if (selectedItem.backendType === 'local') {
result = await ttsApi.createVoiceCloneJob({ const formData = new FormData()
text: data.text, formData.append('text', data.text)
language: data.language, formData.append('language', data.language)
ref_audio: null, formData.append('voice_design_id', String(selectedItem.designId))
voice_design_id: selectedItem.designId, formData.append('max_new_tokens', String(data.max_new_tokens ?? 2048))
max_new_tokens: data.max_new_tokens, formData.append('temperature', String(data.temperature ?? 0.9))
temperature: data.temperature, formData.append('backend', 'local')
backend: 'local',
const token = localStorage.getItem('token')
const baseURL = import.meta.env.VITE_API_URL || ''
const response = await fetch(`${baseURL}/tts/voice-clone`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
},
body: formData,
}) })
if (!response.ok) {
throw new Error('Failed to create voice clone job')
}
result = await response.json()
} else { } else {
result = await ttsApi.createVoiceDesignJob({ result = await ttsApi.createVoiceDesignJob({
text: data.text, text: data.text,
language: data.language, language: data.language,
instruct: selectedItem.instruct!,
saved_design_id: selectedItem.designId, saved_design_id: selectedItem.designId,
max_new_tokens: data.max_new_tokens, max_new_tokens: data.max_new_tokens ?? 2048,
temperature: data.temperature, temperature: data.temperature ?? 0.9,
}) })
} }
} else { } else {
result = await ttsApi.createCustomVoiceJob(data) result = await ttsApi.createCustomVoiceJob({
text: data.text,
language: data.language,
speaker: data.speaker,
instruct: data.instruct,
max_new_tokens: data.max_new_tokens ?? 2048,
temperature: data.temperature ?? 0.9,
})
} }
toast.success(t('taskCreated')) toast.success(t('taskCreated'))

View File

@@ -24,7 +24,7 @@ export interface CustomVoiceForm {
export interface VoiceDesignForm { export interface VoiceDesignForm {
text: string text: string
language: string language: string
instruct: string instruct?: string
saved_design_id?: number saved_design_id?: number
max_new_tokens?: number max_new_tokens?: number
temperature?: number temperature?: number