SHAKAZAMBA commited on
Commit
6b89706
1 Parent(s): 0a2bde4

Create infer.py

Browse files
Files changed (1) hide show
  1. infer.py +63 -0
infer.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, File, UploadFile, HTTPException
2
+ from fastapi.responses import FileResponse
3
+ from gradio_client import Client
4
+ import os
5
+ import tempfile
6
+
7
+ app = FastAPI()
8
+
9
+ # Crea il client Gradio
10
+ client = Client("http://127.0.0.1:6969/")
11
+
12
+ # Cartella di output in assets
13
+ output_folder = "assets/generated"
14
+ os.makedirs(output_folder, exist_ok=True)
15
+
16
+ @app.post("/process_audio/")
17
+ async def process_audio(file: UploadFile = File(...)):
18
+ # Verifica l'estensione del file
19
+ if not file.filename.lower().endswith(('.wav', '.mp3')):
20
+ raise HTTPException(status_code=400, detail="Solo file WAV e MP3 sono supportati.")
21
+
22
+ # Salva temporaneamente il file caricato
23
+ with tempfile.NamedTemporaryFile(delete=False, suffix=os.path.splitext(file.filename)[1]) as temp_file:
24
+ temp_file.write(await file.read())
25
+ input_file = temp_file.name
26
+
27
+ try:
28
+ # Prepara il percorso di output
29
+ output_filename = f"generated_{os.path.basename(file.filename)}"
30
+ output_path = os.path.join(output_folder, output_filename)
31
+
32
+ # Esegui la predizione
33
+ result = client.predict(
34
+ -24, # Pece
35
+ 0, # Raggio del filtro
36
+ 0, # Rapporto feature di ricerca
37
+ 0, # Inviluppo del volume
38
+ 0, # Proteggi le consonanti sorde
39
+ 1, # Lunghezza del luppolo
40
+ "pm", # Algoritmo di estrazione del passo
41
+ input_file, # Percorso del file audio di input
42
+ output_path, # Percorso del file audio di output
43
+ "logs/master/master.pth", # Modello vocale
44
+ "logs/master/added_IVF124_Flat_nprobe_1_master-v2_v2.index", # File di indice
45
+ True, # Dividere l'audio
46
+ True, # Sintonizzazione automatica
47
+ True, # Audio pulito
48
+ 0, # Forza pulita
49
+ "WAV", # Export Format
50
+ api_name="/run_infer_script"
51
+ )
52
+
53
+ # Restituisci il file elaborato
54
+ return FileResponse(output_path, media_type="audio/wav", filename=output_filename)
55
+
56
+ except Exception as e:
57
+ raise HTTPException(status_code=500, detail=f"Errore durante l'elaborazione: {str(e)}")
58
+
59
+ finally:
60
+ # Pulisci il file temporaneo
61
+ os.unlink(input_file)
62
+
63
+ # Non è necessario includere il blocco if __name__ == "__main__" in uno spazio Hugging Face