3x new API endpoints
/api/voices/ /api/previewvoice/ /api/ready/
This commit is contained in:
1 parent
95659d5b7a
commit
65e257077c
1 file changed
+57
@@ -619,6 +619,53 @@ async def get_audio(filename: str):
|
|||||||
audio_path = this_dir / "outputs" / filename
|
audio_path = this_dir / "outputs" / filename
|
||||||
return FileResponse(audio_path)
|
return FileResponse(audio_path)
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
#### VOICES LIST API ####
|
||||||
|
#########################
|
||||||
|
# Define the new endpoint
|
||||||
|
@app.get("/api/voices")
|
||||||
|
async def get_voices():
|
||||||
|
wav_files = list_files(this_dir / "voices")
|
||||||
|
return {"voices": wav_files}
|
||||||
|
|
||||||
|
###########################
|
||||||
|
#### PREVIEW VOICE API ####
|
||||||
|
###########################
|
||||||
|
@app.post("/api/previewvoice/", response_class=JSONResponse)
|
||||||
|
async def preview_voice(request: Request, voice: str = Form(...)):
|
||||||
|
try:
|
||||||
|
# Hardcoded settings
|
||||||
|
language = "en"
|
||||||
|
output_file_name = "api_preview_voice"
|
||||||
|
|
||||||
|
# Clean the voice filename for inclusion in the text
|
||||||
|
clean_voice_filename = re.sub(r'\.wav$', '', voice.replace(' ', '_'))
|
||||||
|
clean_voice_filename = re.sub(r'[^a-zA-Z0-9]', ' ', clean_voice_filename)
|
||||||
|
|
||||||
|
# Generate the audio
|
||||||
|
text = f"Hello, this is a preview of voice {clean_voice_filename}."
|
||||||
|
|
||||||
|
# Generate the audio
|
||||||
|
output_file_path = this_dir / "outputs" / f"{output_file_name}.wav"
|
||||||
|
await generate_audio(text, voice, language, output_file_path)
|
||||||
|
|
||||||
|
# Generate the URL
|
||||||
|
output_file_url = f'http://{params["ip_address"]}:{params["port_number"]}/audio/{output_file_name}.wav'
|
||||||
|
|
||||||
|
# Return the response with both local file path and URL
|
||||||
|
return JSONResponse(
|
||||||
|
content={
|
||||||
|
"status": "generate-success",
|
||||||
|
"output_file_path": str(output_file_path),
|
||||||
|
"output_file_url": str(output_file_url),
|
||||||
|
},
|
||||||
|
status_code=200,
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An error occurred: {e}")
|
||||||
|
return JSONResponse(content={"error": "An error occurred"}, status_code=500)
|
||||||
|
|
||||||
########################
|
########################
|
||||||
#### GENERATION API ####
|
#### GENERATION API ####
|
||||||
########################
|
########################
|
||||||
@@ -1717,10 +1764,20 @@ template = Template(simple_webpage)
|
|||||||
# Render the template with the dynamic values
|
# Render the template with the dynamic values
|
||||||
rendered_html = template.render(params=params)
|
rendered_html = template.render(params=params)
|
||||||
|
|
||||||
|
###############################
|
||||||
|
#### Internal script ready ####
|
||||||
|
###############################
|
||||||
@app.get("/ready")
|
@app.get("/ready")
|
||||||
async def ready():
|
async def ready():
|
||||||
return Response("Ready endpoint")
|
return Response("Ready endpoint")
|
||||||
|
|
||||||
|
############################
|
||||||
|
#### External API ready ####
|
||||||
|
############################
|
||||||
|
@app.get("/api/ready")
|
||||||
|
async def ready():
|
||||||
|
return Response("Ready")
|
||||||
|
|
||||||
@app.get("/")
|
@app.get("/")
|
||||||
async def read_root():
|
async def read_root():
|
||||||
return HTMLResponse(content=rendered_html, status_code=200)
|
return HTMLResponse(content=rendered_html, status_code=200)
|
||||||
|
|||||||
Reference in new issue
Block a user