fix: 确保预览和生成API始终传递voice_library_id #1518

Closed
xiaoxia wants to merge 1 commits from fix/voice-library-id-passthrough into develop
2 changed files with 13 additions and 7 deletions
@@ -71,9 +71,12 @@ export function useGenerateVideo(props: UseGenerateVideoProps) {
// 封面 URL:优先 AI 生成缩略图,兜底用户上传
const coverUrl = props.coverSettings?.thumbnail_url || props.coverSettings?.upload_url || ""
// 解析配音参数:voiceMode=clone 时用 selectedClonedVoice,否则用 selectedVoice
// 解析配音参数:voice_library_id 是配音素材库 asset ID
// 优先用当前 voiceMode 对应的选择,兜底用 selectedVoice(防止 voiceMode 切换后丢失)
const voiceLibraryId =
props.voiceMode === "clone" ? props.selectedClonedVoice || "" : props.selectedVoice || ""
props.voiceMode === "clone"
? props.selectedClonedVoice || props.selectedVoice || ""
: props.selectedVoice || ""
// 创建生成任务(服务器渲染)
const taskResp = await createGenerationTask({
@@ -85,8 +88,9 @@ export function useGenerateVideo(props: UseGenerateVideoProps) {
custom_title: props.titleSettings?.title || "",
duration: props.duration || undefined,
video_ratio: props.videoRatio,
// 配音:优先用 voice_library_id(配音素材库 asset),兜底 voice_ids
...(voiceLibraryId ? { voice_library_id: voiceLibraryId } : {}),
// 配音:始终传递 voice_library_id,确保后端能正确接收
voice_library_id: voiceLibraryId,
// 兜底:如果 voice_library_id 为空但 selectedVoice 有值,也传 voice_ids
...(props.selectedVoice && !voiceLibraryId ? { voice_ids: [props.selectedVoice] } : {}),
// BGM 配置:受 bgm 开关控制,enabled=false 时也显式传覆盖模板 BGM
bgm_config: {
@@ -178,13 +178,15 @@ export function useStep6Cover({
previewParamsRef.current = JSON.stringify({ selectedTemplate, assetIds, titleSettings })
// 解析配音参数:voiceMode=clone 时用 selectedClonedVoice,否则用 selectedVoice
const previewVoiceLibraryId =
voiceMode === "clone" ? selectedClonedVoice || "" : selectedVoice || ""
voiceMode === "clone" ? selectedClonedVoice || selectedVoice || "" : selectedVoice || ""
const previewResp = await createPreview({
template_id: selectedTemplate,
asset_ids: assetIds,
duration: duration || 30,
// 配音:voice_library_id 是配音素材库 asset ID(用户上传的音频或 AI 配音)
...(previewVoiceLibraryId ? { voice_library_id: previewVoiceLibraryId } : {}),
// 配音:始终传递 voice_library_id,确保后端能正确接收
voice_library_id: previewVoiceLibraryId,
// 兜底:如果 voice_library_id 为空但 selectedVoice 有值,也传 voice_ids
...(selectedVoice && !previewVoiceLibraryId ? { voice_ids: [selectedVoice] } : {}),
// BGM 配置:受 bgm 开关控制
bgm_config: {
enabled: bgm !== false,