Spaces:
Runtime error
Runtime error
| import openai | |
| import time | |
| # from elevenlabs import set_api_key | |
| import requests | |
| import whisper | |
| import os | |
| # from elevenlabs import generate, play , stream , save | |
| import gradio as gr | |
| from typing import Optional | |
| from deta import Deta | |
| deta = Deta("d0uj3nfpeok_kuCKpWGv4jeHCqKZVANdW8z37ksTJzUZ") | |
| db1 = deta.Base("elevenlab") | |
| openai.api_key = os.getenv("openaiapikey") | |
| model = whisper.load_model("base") | |
| os.environ['PATH'] += os.pathsep + '/path/to/mpv/' | |
| class Chat: | |
| def __init__(self , system: Optional[str] = None): | |
| self.system = system | |
| self.messages = [] | |
| if system is not None: | |
| self.messages.append({ | |
| "role": "system", | |
| "content": system | |
| }) | |
| def prompt(self, content: str) -> str: | |
| self.messages.append({ | |
| "role": "user", | |
| "content": content | |
| }) | |
| response = openai.ChatCompletion.create( | |
| model="gpt-3.5-turbo", | |
| messages=self.messages | |
| ) | |
| response_content = response["choices"][0]["message"]["content"] | |
| self.messages.append({ | |
| "role": "assistant", | |
| "content": response_content | |
| }) | |
| return response_content | |
| def read_and_print_file(file_path): | |
| with open(file_path, 'r') as file: | |
| return file.read() | |
| # Example usage: | |
| file_path = 'the_interview_questions' | |
| contents = read_and_print_file(file_path) | |
| chat = Chat(system="""You are a helpfull assistant | |
| """) | |
| from gradio_client import Client | |
| API_URL = "https://sanchit-gandhi-whisper-jax.hf.space/" | |
| # set up the Gradio client | |
| client = Client(API_URL) | |
| def transcribe_audio(audio_path, task="transcribe", return_timestamps=False): | |
| """Function to transcribe an audio file using the Whisper JAX endpoint.""" | |
| if task not in ["transcribe", "translate"]: | |
| raise ValueError("task should be one of 'transcribe' or 'translate'.") | |
| text, runtime = client.predict( | |
| audio_path, | |
| task, | |
| return_timestamps, | |
| api_name="/predict_1", | |
| ) | |
| return text | |
| def convert_tuples_to_list(tuples_list): | |
| result = [] | |
| conversation = "" | |
| for tuple_item in tuples_list: | |
| result.append(tuple_item[0]) # Append question | |
| result.append(tuple_item[1]) # Append answer | |
| for i in result: | |
| conversation = conversation + i + " \n" | |
| return conversation | |
| def run_text_prompt(message, chat_history): | |
| bot_message = chat.prompt(content=message) | |
| db1.update( | |
| {"value": bot_message}, | |
| "my-key", | |
| ) | |
| # audio = generate( | |
| # text=bot_message, | |
| # voice="Antoni", | |
| # ) | |
| # | |
| # (audio) | |
| # save(audio, 'myvoice.mp3') | |
| chat_history.append((message, bot_message)) | |
| return "", chat_history | |
| def run_audio_prompt(audio, chat_history): | |
| if audio is None: | |
| return None, chat_history | |
| message_transcription = transcribe_audio(audio) | |
| # message_transcription = model.transcribe(audio)["text"] | |
| _, chat_history = run_text_prompt(message_transcription, chat_history) | |
| return None, chat_history | |
| def process_text(conversation, text): | |
| # print(text) | |
| completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", | |
| messages=[{ | |
| "role": | |
| "user", | |
| "content": | |
| conversation + text | |
| }]) | |
| # completion = text; | |
| # print(completion) | |
| print(completion.choices[0].message.content.strip()) | |
| return completion.choices[0].message.content.strip() | |
| with gr.Blocks(title="hi") as app2: | |
| chatbot = gr.Chatbot(label="Agent") | |
| msg = gr.Textbox(label="Write") | |
| msg.submit(run_text_prompt, [msg, chatbot], [msg, chatbot]) | |
| with gr.Row(): | |
| audio = gr.Audio(source="microphone", type="filepath", label="Speak") | |
| fn = run_audio_prompt, | |
| inputs = [audio, chatbot], | |
| outputs = [audio, chatbot] | |
| # fn = run_audio_prompt, | |
| # inputs = [audio, chatbot], | |
| # outputs = [audio, chatbot] | |
| audio.change(run_audio_prompt, [audio, chatbot], [audio, chatbot]) | |
| # send_audio_button = gr.Button("Send Audio", interactive=True) | |
| # send_audio_button.click(run_audio_prompt, [audio, chatbot], [audio, chatbot]) | |
| demo = gr.TabbedInterface([app2], [ "Interview"]) | |
| demo.launch(share=False, | |
| debug=False, | |
| ) | |