Refactor localization files and remove Aliyun references

This commit is contained in:
2026-04-07 11:37:47 +08:00
parent 2662b494c5
commit b395cb0b98
47 changed files with 136 additions and 1311 deletions

View File

@@ -70,14 +70,7 @@ async def process_custom_voice_job(
logger.info(f"Processing custom-voice job {job_id} with backend {backend_type}")
user_api_key = None
if backend_type == "aliyun":
from db.crud import get_system_setting
encrypted = get_system_setting(db, "aliyun_api_key")
if encrypted:
user_api_key = decrypt_api_key(encrypted)
backend = await TTSServiceFactory.get_backend(backend_type, user_api_key)
backend = await TTSServiceFactory.get_backend()
audio_bytes, sample_rate = await backend.generate_custom_voice(request_data)
@@ -133,19 +126,9 @@ async def process_voice_design_job(
logger.info(f"Processing voice-design job {job_id} with backend {backend_type}")
user_api_key = None
if backend_type == "aliyun":
from db.crud import get_system_setting
encrypted = get_system_setting(db, "aliyun_api_key")
if encrypted:
user_api_key = decrypt_api_key(encrypted)
backend = await TTSServiceFactory.get_backend()
backend = await TTSServiceFactory.get_backend(backend_type, user_api_key)
if backend_type == "aliyun" and saved_voice_id:
audio_bytes, sample_rate = await backend.generate_voice_design(request_data, saved_voice_id)
else:
audio_bytes, sample_rate = await backend.generate_voice_design(request_data)
audio_bytes, sample_rate = await backend.generate_voice_design(request_data)
timestamp = datetime.utcnow().strftime("%Y%m%d_%H%M%S")
filename = f"{user_id}_{job_id}_{timestamp}.wav"
@@ -200,14 +183,6 @@ async def process_voice_clone_job(
logger.info(f"Processing voice-clone job {job_id} with backend {backend_type}")
from core.security import decrypt_api_key
user_api_key = None
if backend_type == "aliyun":
from db.crud import get_system_setting
encrypted = get_system_setting(db, "aliyun_api_key")
if encrypted:
user_api_key = decrypt_api_key(encrypted)
with open(ref_audio_path, 'rb') as f:
ref_audio_data = f.read()
@@ -233,7 +208,7 @@ async def process_voice_clone_job(
ref_audio_data = f.read()
ref_audio_hash = cache_manager.get_audio_hash(ref_audio_data)
if request_data.get('x_vector_only_mode', False) and backend_type == "local":
if request_data.get('x_vector_only_mode', False):
x_vector = None
cache_id = None
@@ -287,9 +262,9 @@ async def process_voice_clone_job(
logger.info(f"Job {job_id} completed (x_vector_only_mode)")
return
backend = await TTSServiceFactory.get_backend(backend_type, user_api_key)
backend = await TTSServiceFactory.get_backend()
if voice_design_id and backend_type == "local":
if voice_design_id:
from db.crud import get_voice_design
design = get_voice_design(db, voice_design_id, user_id)
cached = await cache_manager.get_cache_by_id(design.voice_cache_id, db)
@@ -339,34 +314,20 @@ async def create_custom_voice_job(
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
from core.security import decrypt_api_key
from db.crud import get_user_preferences, can_user_use_local_model
from db.crud import can_user_use_local_model
user_prefs = get_user_preferences(db, current_user.id)
preferred_backend = user_prefs.get("default_backend", "aliyun")
can_use_local = can_user_use_local_model(current_user)
backend_type = req_data.backend if hasattr(req_data, 'backend') and req_data.backend else preferred_backend
if backend_type == "local" and not can_use_local:
if not can_user_use_local_model(current_user):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Local model is not available. Please contact administrator."
)
if backend_type == "aliyun":
from db.crud import get_system_setting
if not get_system_setting(db, "aliyun_api_key"):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Aliyun API key not configured. Please contact administrator."
)
backend_type = "local"
try:
validate_text_length(req_data.text)
language = validate_language(req_data.language)
speaker = validate_speaker(req_data.speaker, backend_type)
speaker = validate_speaker(req_data.speaker)
params = validate_generation_params({
'max_new_tokens': req_data.max_new_tokens,
@@ -430,48 +391,24 @@ async def create_voice_design_job(
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
from core.security import decrypt_api_key
from db.crud import get_user_preferences, can_user_use_local_model, get_voice_design, update_voice_design_usage
from db.crud import can_user_use_local_model, get_voice_design, update_voice_design_usage
user_prefs = get_user_preferences(db, current_user.id)
preferred_backend = user_prefs.get("default_backend", "aliyun")
if not can_user_use_local_model(current_user):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Local model is not available. Please contact administrator."
)
can_use_local = can_user_use_local_model(current_user)
backend_type = req_data.backend if hasattr(req_data, 'backend') and req_data.backend else preferred_backend
saved_voice_id = None
backend_type = "local"
if req_data.saved_design_id:
saved_design = get_voice_design(db, req_data.saved_design_id, current_user.id)
if not saved_design:
raise HTTPException(status_code=404, detail="Saved voice design not found")
if saved_design.backend_type != backend_type:
raise HTTPException(
status_code=400,
detail=f"Saved design backend ({saved_design.backend_type}) doesn't match current backend ({backend_type})"
)
req_data.instruct = saved_design.instruct
saved_voice_id = saved_design.aliyun_voice_id
update_voice_design_usage(db, req_data.saved_design_id, current_user.id)
if backend_type == "local" and not can_use_local:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Local model is not available. Please contact administrator."
)
if backend_type == "aliyun":
from db.crud import get_system_setting
if not get_system_setting(db, "aliyun_api_key"):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Aliyun API key not configured. Please contact administrator."
)
try:
validate_text_length(req_data.text)
language = validate_language(req_data.language)
@@ -553,29 +490,15 @@ async def create_voice_clone_job(
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
from core.security import decrypt_api_key
from db.crud import get_user_preferences, can_user_use_local_model, get_voice_design
from db.crud import can_user_use_local_model, get_voice_design
user_prefs = get_user_preferences(db, current_user.id)
preferred_backend = user_prefs.get("default_backend", "aliyun")
can_use_local = can_user_use_local_model(current_user)
backend_type = backend if backend else preferred_backend
if backend_type == "local" and not can_use_local:
if not can_user_use_local_model(current_user):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Local model is not available. Please contact administrator."
)
if backend_type == "aliyun":
from db.crud import get_system_setting
if not get_system_setting(db, "aliyun_api_key"):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Aliyun API key not configured. Please contact administrator."
)
backend_type = "local"
ref_audio_data = None
ref_audio_hash = None
@@ -600,9 +523,6 @@ async def create_voice_clone_job(
if not design:
raise ValueError("Voice design not found")
if design.backend_type != backend_type:
raise ValueError(f"Voice design backend ({design.backend_type}) doesn't match request backend ({backend_type})")
if not design.voice_cache_id:
raise ValueError("Voice design has no prepared clone prompt. Please call /voice-designs/{id}/prepare-clone first")