from database import SessionLocal from db_models.music import Music, AI_Detection_Music from db_models.analysis import Music_Analysis, AnalysisStatus from db_models.user import User from google.cloud import storage import uuid import os import torch from inference import run_inference, load_audio, download_from_gcs from inference import get_model device = 'cuda' backbone_model, input_dim = get_model('MERT',device) def do_web_inference(model, music_id): """ 음악 파일에 대해 AI 생성 탐지 추론을 실행합니다. Args: music_id: 분석할 음악의 ID task: 수행할 작업 유형 (기본값: None) Returns: 분석 결과를 포함하는 딕셔너리 """ try: # 데이터베이스에서 음악 정보 가져오기 db = SessionLocal() music = db.query(Music).filter(Music.id == music_id).first() AI_Detection_Music = music.ai_detection_musics[0] print(music, music_id) print(AI_Detection_Music.id) if not music: return {"status": "error", "message": f"Music ID {music_id} not found"} # 파일 경로 가져오기 wav_path = music.music_path download_from_gcs('mippia-bucket', wav_path, wav_path) segments, padding_mask = load_audio(wav_path, sr=24000) segments = segments.to(device).to(torch.float32) logits,embedding = backbone_model(segments.squeeze(1)) embedding.to(device) # 추론 실행 results = run_inference(model, embedding, padding_mask, device=device) # 임시 파일 삭제 if os.path.exists(wav_path): os.remove(wav_path) print(results) finally: # 데이터베이스 세션 종료 if 'db' in locals(): db.close()