GuXSs commited on
Commit
34da153
verified
1 Parent(s): 96796a2

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +42 -0
main.py CHANGED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from transformers import AutoProcessor, BarkModel
3
+ import torch
4
+ import scipy.io.wavfile
5
+ import io
6
+ from fastapi.responses import StreamingResponse
7
+
8
+ app = FastAPI()
9
+
10
+ # For莽a o uso de CPU e modelo leve para n茫o travar
11
+ device = "cpu"
12
+ MODEL_ID = "suno/bark-small"
13
+
14
+ print("Iniciando o download do modelo (pode demorar uns minutos)...")
15
+ processor = AutoProcessor.from_pretrained(MODEL_ID)
16
+ model = BarkModel.from_pretrained(MODEL_ID).to(device)
17
+ print("Modelo carregado!")
18
+
19
+ @app.get("/")
20
+ def read_root():
21
+ return {"status": "API Bark Online"}
22
+
23
+ @app.post("/generate/")
24
+ async def generate_audio(text: str):
25
+ try:
26
+ # Prepara o texto
27
+ inputs = processor(text, voice_preset="v2/en_speaker_6").to(device)
28
+
29
+ # Gera o 谩udio (limitado para ser mais r谩pido na CPU)
30
+ audio_array = model.generate(**inputs, coarse_temperature=0.6)
31
+ audio_array = audio_array.cpu().numpy().squeeze()
32
+
33
+ # Salva em mem贸ria
34
+ sample_rate = model.generation_config.sample_rate
35
+ bytes_wav = io.BytesIO()
36
+ scipy.io.wavfile.write(bytes_wav, rate=sample_rate, data=audio_array)
37
+ bytes_wav.seek(0)
38
+
39
+ return StreamingResponse(bytes_wav, media_type="audio/wav")
40
+
41
+ except Exception as e:
42
+ return {"error": str(e)}