Fix voice clone NotSupportedError and improve subscription services

This commit is contained in:
ajaysi
2026-04-22 12:27:51 +05:30
parent 641143a7d6
commit cbd68fa43f
13 changed files with 221 additions and 72 deletions

View File

@@ -43,16 +43,9 @@ def _resolve_asset_path(user_id: str, category: str, filename: str) -> Path:
safe_user_id = sanitize_user_id(user_id)
repo_root = get_repo_root()
logger.warning(f"[Assets] repo_root: {repo_root}")
logger.warning(f"[Assets] user_id: {user_id}, safe_user_id: {safe_user_id}")
file_path = (repo_root / "workspace" / f"workspace_{safe_user_id}" / "assets" / category / filename).resolve()
workspace_dir = (repo_root / "workspace" / f"workspace_{safe_user_id}").resolve()
logger.warning(f"[Assets] resolved path: {file_path}")
logger.warning(f"[Assets] workspace_dir: {workspace_dir}")
logger.warning(f"[Assets] path exists: {file_path.exists()}")
if not str(file_path).startswith(str(workspace_dir)):
raise HTTPException(status_code=403, detail="Access denied")

View File

@@ -539,6 +539,7 @@ async def create_voice_clone(
# 3. Save Preview Audio (if generated)
preview_url = None
preview_mime_type = "audio/wav"
actual_filename = None # Default if preview save fails
if preview_audio_bytes:
from utils.media_utils import detect_audio_format, ensure_audio_extension
@@ -579,14 +580,16 @@ async def create_voice_clone(
logger.warning(f"[VoiceClone] Failed to save preview audio: {error}")
# 4. Save to Asset Library
# Use the preview file (with corrected .wav extension) as the main asset file
stored_filename = actual_filename if preview_audio_bytes and saved_preview_path else filename
asset_id = save_asset_to_library(
db=db,
user_id=user_id,
file_path=file_path,
asset_type="audio",
source_module="voice_cloner",
filename=filename,
file_url=f"/api/assets/{user_id}/voice_samples/{filename}",
filename=stored_filename,
file_url=f"/api/assets/{user_id}/voice_samples/{stored_filename}",
asset_metadata={
"voice_name": voice_name,
"engine": engine,
@@ -599,12 +602,12 @@ async def create_voice_clone(
)
logger.warning(f"[VoiceClone] Response preview_url: {preview_url}")
logger.warning(f"[VoiceClone] Response filename: {filename}")
logger.warning(f"[VoiceClone] Response stored_filename: {stored_filename}")
return {
"success": True,
"custom_voice_id": custom_voice_id,
"preview_audio_url": preview_url or f"/api/assets/{user_id}/voice_samples/{filename}",
"preview_audio_url": preview_url or f"/api/assets/{user_id}/voice_samples/{stored_filename}",
"asset_id": asset_id,
"message": "Voice clone created successfully"
}