File size: 1,122 Bytes
e67afbf
 
 
 
ddd7c5c
e67afbf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ddd7c5c
 
e67afbf
 
 
bbd968d
e67afbf
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from bark import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav
import torch
import os

from fastapi import FastAPI, Request, Form
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates

# Patch torch.load for PyTorch 2.6+
if hasattr(torch, 'serialization'):
    torch.serialization.add_safe_globals([
        "numpy.core.multiarray.scalar"
    ])

# Create FastAPI app
app = FastAPI()

# Mount static and templates folder
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")

# Preload Bark models
preload_models()

@app.get("/")
def index(request: Request):
    return templates.TemplateResponse("index.html", {"request": request})

@app.post("/synthesize")
def synthesize(request: Request, text: str = Form(...)):
    audio_array = generate_audio(text)
    output_path = "static/output.wav"
    write_wav(output_path, SAMPLE_RATE, audio_array)
    return FileResponse(output_path, media_type="audio/wav", filename="output.wav")