tts backend

This commit is contained in:
Andrei Stoica 2024-02-20 19:35:36 -05:00
parent c8fa61e0c3
commit 8af852d82c
2 changed files with 17 additions and 2 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
**/.venv/ **/.venv/
**/__pycache__/ **/__pycache__/
**/audio
*.mp3

View File

@ -1,5 +1,6 @@
from openai import OpenAI from openai import OpenAI
from fastapi import FastAPI, File, Response, Request from fastapi import FastAPI, File, Response, Request
from fastapi.responses import FileResponse
from pydantic import BaseModel from pydantic import BaseModel
import whisper import whisper
@ -37,8 +38,8 @@ def get_text(response: Response, audio: bytes = File()):
@app.post("/conversation") @app.post("/conversation")
async def get_next_response(request: Request, response: Response): async def get_next_response(request: Request, response: Response):
response.headers["Access-Control-Allow-Origin"] = "*" response.headers["Access-Control-Allow-Origin"] = "*"
#role = "test" # role = "test"
#res_msg = "temp test response" # res_msg = "temp test response"
messages = await request.json() messages = await request.json()
res = openAI_clinet.chat.completions.create( res = openAI_clinet.chat.completions.create(
model="gpt-3.5-turbo", model="gpt-3.5-turbo",
@ -49,3 +50,15 @@ async def get_next_response(request: Request, response: Response):
print(messages) print(messages)
print(res_msg) print(res_msg)
return {"role": role, "content": res_msg} return {"role": role, "content": res_msg}
@app.post("/speak", response_class=FileResponse)
def tts(text: str, response: Response):
response.headers["Access-Control-Allow-Origin"] = "*"
res = openAI_clinet.audio.speech.create(
model="tts-1",
voice="nova",
input=text,
)
res.stream_to_file("tts.mp3")
return "tts.mp3"