Compare commits

..

2 Commits

Author SHA1 Message Date
Andrei Stoica baab95660b cors 2024-02-24 17:58:26 -05:00
Andrei Stoica 8af852d82c tts backend 2024-02-20 19:35:36 -05:00
3 changed files with 25 additions and 4 deletions

2
.gitignore vendored
View File

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

View File

@ -1,5 +1,7 @@
from openai import OpenAI from openai import OpenAI
from fastapi import FastAPI, File, Response, Request from fastapi import FastAPI, File, Response, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from pydantic import BaseModel from pydantic import BaseModel
import whisper import whisper
@ -8,6 +10,13 @@ app = FastAPI()
openAI_clinet = OpenAI() openAI_clinet = OpenAI()
model = whisper.load_model("base") model = whisper.load_model("base")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
class ConversationMessege(BaseModel): class ConversationMessege(BaseModel):
role: str role: str
@ -20,7 +29,6 @@ class Conversation(BaseModel):
@app.post("/get-text") @app.post("/get-text")
def get_text(response: Response, audio: bytes = File()): def get_text(response: Response, audio: bytes = File()):
response.headers["Access-Control-Allow-Origin"] = "*"
with open("audio", "wb") as f: with open("audio", "wb") as f:
f.write(audio) f.write(audio)
# transcript = openAI_clinet.audio.transcriptions.create( # transcript = openAI_clinet.audio.transcriptions.create(
@ -36,9 +44,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"] = "*" # 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 +56,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):
res = openAI_clinet.audio.speech.create(
model="tts-1",
voice="nova",
input=text,
)
# this works for now but I need to find a way to stream this to response
res.stream_to_file("tts.mp3")
return "tts.mp3"

Binary file not shown.