Compare commits

...

1 Commits

Author SHA1 Message Date
SaaS Frontend 088ef64b68 fix: 预览模式配音降级处理 - ASR 不可用时走整段配音模式
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 28s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m31s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m45s
AI Code Review / AI Code Review (pull_request) Successful in 2m2s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m2s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m3s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 2m8s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m3s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m38s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m14s
CI/CD Pipeline / CI Gate (pull_request) Failing after 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 21s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 25s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 933h5m15s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 933h5m15s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 933h5m16s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 933h5m16s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 933h7m50s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 933h7m50s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 933h8m16s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 933h8m16s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 933h8m18s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 933h8m20s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 933h8m20s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 933h38m39s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 933h38m41s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 933h41m15s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 933h41m40s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 933h41m44s
- render_adapter.py: 修复 import 路径 (services -> apps.worker.services)
- unified_render_service.py: 方式B 条件调整
  - ASR 可用时走字幕对齐模式(方式B)
  - ASR 不可用时降级为整段配音模式(方式A),使用 subtitle.text 作为配音内容
- 解决预览模式下配音完全不生效的问题

关联 Issue #1294
2026-08-08 18:17:54 +08:00
2 changed files with 35 additions and 15 deletions
@@ -465,7 +465,7 @@ class RenderAdapter:
失败不阻断主流程,返回 None。
"""
try:
from services.asr_service_factory import get_asr_service
from apps.worker.services.asr_service_factory import get_asr_service
return get_asr_service()
except Exception as e:
@@ -679,20 +679,40 @@ class UnifiedRenderService:
len(top_text),
)
# 方式B:voice_id + 自动字幕 → 字幕对齐配音(预设配音模式)
elif top_voice_id and subtitle_cfg.get("auto_generated", False) and self.asr_service is not None:
tts_cfg = {
"enabled": True,
"voice_id": top_voice_id,
"text": "",
"align_mode": "subtitle",
"overlap_mode": "replace",
}
use_subtitle_align = True
logger.info(
"[unified-render] 检测到预设配音+自动字幕,使用字幕对齐模式: plan_id=%s voice_id=%s",
self.plan.id,
top_voice_id,
)
# ASR 可用时走字幕对齐模式,不可用时降级为整段配音
elif top_voice_id and subtitle_cfg.get("auto_generated", False):
if self.asr_service is not None:
# 字幕对齐模式
tts_cfg = {
"enabled": True,
"voice_id": top_voice_id,
"text": "",
"align_mode": "subtitle",
"overlap_mode": "replace",
}
use_subtitle_align = True
logger.info(
"[unified-render] 检测到预设配音+自动字幕,使用字幕对齐模式: plan_id=%s voice_id=%s",
self.plan.id,
top_voice_id,
)
else:
# 降级:整段配音(预览模式 ASR 不可用时)
# 拼接字幕文本作为配音内容
subtitle_text_content = subtitle_cfg.get("text", "") or ""
tts_cfg = {
"enabled": True,
"voice_id": top_voice_id,
"text": subtitle_text_content,
"align_mode": "full",
"overlap_mode": "replace",
}
logger.info(
"[unified-render] ASR 不可用,降级为整段配音模式: plan_id=%s voice_id=%s text_len=%d",
self.plan.id,
top_voice_id,
len(subtitle_text_content),
)
# 兼容前端顶层字段:voice_id / custom_text / voice_clone_profile_id
# 前端一键生成页面传 config.voice_id + config.custom_text,