import gradio as gr import os import json import requests whisper = gr.Interface.load(name="spaces/sanchit-gandhi/whisper-large-v2") #input_message.submit([input_message, history], [input_message, chatbot, history]) def translate_or_transcribe(audio, task): text_result = whisper(audio, None, task, fn_index=0) return text_result #Streaming endpoint API_URL = "https://api.openai.com/v1/chat/completions" #os.getenv("API_URL") + "/generate_stream" def predict(inputs, top_p, temperature, openai_api_key, history=[]): payload = { "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": f"{inputs}"}], "temperature" : 1.0, "top_p":1.0, "n" : 1, "stream": True, "presence_penalty":0, "frequency_penalty":0, } headers = { "Content-Type": "application/json", "Authorization": f"Bearer {openai_api_key}" } history.append(inputs) # make a POST request to the API endpoint using the requests.post method, passing in stream=True response = requests.post(API_URL, headers=headers, json=payload, stream=True) #response = requests.post(API_URL, headers=headers, json=payload, stream=True) token_counter = 0 partial_words = "" counter=0 for chunk in response.iter_lines(): if counter == 0: counter+=1 continue counter+=1 # check whether each line is non-empty if chunk : # decode each line as response data is in bytes if len(json.loads(chunk.decode()[6:])['choices'][0]["delta"]) == 0: break #print(json.loads(chunk.decode()[6:])['choices'][0]["delta"]["content"]) partial_words = partial_words + json.loads(chunk.decode()[6:])['choices'][0]["delta"]["content"] if token_counter == 0: history.append(" " + partial_words) else: history[-1] = partial_words chat = [(history[i], history[i + 1]) for i in range(0, len(history) - 1, 2) ] # convert to tuples of list token_counter+=1 yield chat, history # resembles {chatbot: chat, state: history} def reset_textbox(): return gr.update(value='') title = """
Note: Please be aware that audio records from iOS devices will not be decoded as expected by Gradio. For the best experience, record your voice from a computer instead of your smartphone ;)
''') gr.Markdown("![visitor badge](https://visitor-badge.glitch.me/badge?page_id=RamAnanth1.chatGPT_voice)") demo.queue().launch(debug=True)