Spaces:
Sleeping
Sleeping
from openai import OpenAI | |
import requests | |
openai_client = OpenAI() | |
def speech_to_text(audio_binary): | |
# Set up Watson Speech-to-Text HTTP Api url | |
base_url = 'https://sn-watson-stt.labs.skills.network' | |
api_url = base_url+'/speech-to-text/api/v1/recognize' | |
# Set up parameters for our HTTP reqeust | |
params = { | |
'model': 'en-US_Multimedia', | |
} | |
# Set up the body of our HTTP request | |
body = audio_binary | |
# Send a HTTP Post request | |
response = requests.post(api_url, params=params, data=audio_binary).json() | |
# Parse the response to get our transcribed text | |
text = 'null' | |
while bool(response.get('results')): | |
print('speech to text response:', response) | |
text = response.get('results').pop().get('alternatives').pop().get('transcript') | |
print('recognised text: ', text) | |
return text | |
def text_to_speech(text, voice=""): | |
# Set up Watson Text-to-Speech HTTP Api url | |
base_url = 'https://sn-watson-tts.labs.skills.network' | |
api_url = base_url + '/text-to-speech/api/v1/synthesize?output=output_text.wav' | |
# Adding voice parameter in api_url if the user has selected a preferred voice | |
if voice != "" and voice != "default": | |
api_url += "&voice=" + voice | |
# Set the headers for our HTTP request | |
headers = { | |
'Accept': 'audio/wav', | |
'Content-Type': 'application/json', | |
} | |
# Set the body of our HTTP request | |
json_data = { | |
'text': text, | |
} | |
# Send a HTTP Post request to Watson Text-to-Speech Service | |
response = requests.post(api_url, headers=headers, json=json_data) | |
print('text to speech response:', response) | |
return response.content | |
def openai_process_message(user_message): | |
# Set the prompt for OpenAI Api | |
prompt = "Act like a personal assistant. You can respond to questions, translate sentences, summarize news, and give recommendations." | |
# Call the OpenAI Api to process our prompt | |
openai_response = openai_client.chat.completions.create( | |
model="gpt-3.5-turbo", | |
messages=[ | |
{"role": "system", "content": prompt}, | |
{"role": "user", "content": user_message} | |
], | |
max_tokens=4000 | |
) | |
print("openai response:", openai_response) | |
# Parse the response to get the response message for our prompt | |
response_text = openai_response.choices[0].message.content | |
return response_text | |