ai_sandbox/speech-speech/backend/api.py

52 lines
1.3 KiB
Python

from openai import OpenAI
from fastapi import FastAPI, File, Response, Request
from pydantic import BaseModel
import whisper
app = FastAPI()
openAI_clinet = OpenAI()
model = whisper.load_model("base")
class ConversationMessege(BaseModel):
role: str
content: str
class Conversation(BaseModel):
messages: list[ConversationMessege]
@app.post("/get-text")
def get_text(response: Response, audio: bytes = File()):
response.headers["Access-Control-Allow-Origin"] = "*"
with open("audio", "wb") as f:
f.write(audio)
# transcript = openAI_clinet.audio.transcriptions.create(
# model="whisper-1",
# file=audio,
# response_format="text",
# RequestBody
# )
result = model.transcribe("audio")
data = {"len": len(audio), "user-transcript": result["text"]}
return data
@app.post("/conversation")
async def get_next_response(request: Request, response: Response):
response.headers["Access-Control-Allow-Origin"] = "*"
#role = "test"
#res_msg = "temp test response"
messages = await request.json()
res = openAI_clinet.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
)
res_msg = res.choices[0].message.content
role = res.choices[0].message.role
print(messages)
print(res_msg)
return {"role": role, "content": res_msg}