move cli and api into wrapper

This commit is contained in:
Ftps
2024-03-07 21:50:15 +09:00
parent 0c3c512396
commit 785abd7830
12 changed files with 75 additions and 19 deletions

11
rvc/wrapper/api/api.py Normal file
View File

@@ -0,0 +1,11 @@
import uvicorn
from dotenv import load_dotenv
from fastapi import FastAPI
from rvc.wrapper.api.endpoints import inference
load_dotenv()
app = FastAPI()
app.include_router(inference.router)

View File

@@ -0,0 +1,49 @@
from io import BytesIO
from pathlib import Path
from fastapi import APIRouter, Response, UploadFile, responses
from pydantic import BaseModel
from scipy.io import wavfile
from rvc.modules.vc.modules import VC
router = APIRouter()
@router.post("/inference")
def inference(
modelpath: str | UploadFile,
input: Path | UploadFile,
sid: int = 0,
f0_up_key: int = 0,
f0_method: str = "rmvpe",
f0_file: Path | None = None,
index_file: Path | None = None,
index_rate: float = 0.75,
filter_radius: int = 3,
resample_sr: int = 0,
rms_mix_rate: float = 0.25,
protect: float = 0.33,
):
vc = VC()
vc.get_vc(modelpath)
tgt_sr, audio_opt, times, _ = vc.vc_single(
sid,
input,
f0_up_key,
f0_method,
f0_file,
index_file,
index_rate,
filter_radius,
resample_sr,
rms_mix_rate,
protect,
)
wavfile.write(wv := BytesIO(), tgt_sr, audio_opt)
print(times)
return responses.StreamingResponse(
wv,
media_type="audio/wav",
headers={"Content-Disposition": "attachment; filename=inference.wav"},
)

View File

@@ -0,0 +1,18 @@
from fastapi import APIRouter, Response, UploadFile, responses
from rvc.modules.uvr5.modules import UVR
router = APIRouter()
@router.post("/inference")
def uvr(inputpath, outputpath, modelname, format):
uvr_module = UVR()
uvr_module.uvr_wrapper(
inputpath, outputpath, model_name=modelname, export_format=format
)
return responses.StreamingResponse(
audio,
media_type="audio/wav",
headers={"Content-Disposition": "attachment; filename=inference.wav"},
)