minha-bark-api / main.py
GuXSs's picture
Update main.py
34da153 verified
from fastapi import FastAPI
from transformers import AutoProcessor, BarkModel
import torch
import scipy.io.wavfile
import io
from fastapi.responses import StreamingResponse
app = FastAPI()
# Força o uso de CPU e modelo leve para não travar
device = "cpu"
MODEL_ID = "suno/bark-small"
print("Iniciando o download do modelo (pode demorar uns minutos)...")
processor = AutoProcessor.from_pretrained(MODEL_ID)
model = BarkModel.from_pretrained(MODEL_ID).to(device)
print("Modelo carregado!")
@app.get("/")
def read_root():
return {"status": "API Bark Online"}
@app.post("/generate/")
async def generate_audio(text: str):
try:
# Prepara o texto
inputs = processor(text, voice_preset="v2/en_speaker_6").to(device)
# Gera o áudio (limitado para ser mais rápido na CPU)
audio_array = model.generate(**inputs, coarse_temperature=0.6)
audio_array = audio_array.cpu().numpy().squeeze()
# Salva em memória
sample_rate = model.generation_config.sample_rate
bytes_wav = io.BytesIO()
scipy.io.wavfile.write(bytes_wav, rate=sample_rate, data=audio_array)
bytes_wav.seek(0)
return StreamingResponse(bytes_wav, media_type="audio/wav")
except Exception as e:
return {"error": str(e)}