CoolFace
Apppublic

Tilakraj0308/Gen_AI

sourceHugging Facemitupdated 4y agoView on Hugging Face
0likes
app.py101 linesDownload Raw Back to root
1import gradio as gr2from dotenv import load_dotenv3import gradio as gr4import openai5import os6import soundfile7from espnet2.bin.tts_inference import Text2Speech8 9 10 11 12def tts(text):13    14    text2speech = Text2Speech.from_pretrained("kan-bayashi/ljspeech_vits")15    speech = text2speech(text)["wav"]16    speech = speech.numpy()17 18    # Save the waverform19    soundfile.write('example_TTS.wav', speech, 22050, 'PCM_24')20    return os.path.join(os.path.dirname(__file__), "example_TTS.wav")21 22 23def transcribe(audio):24    # print(audio)25    # global conv26    file = open(audio, "rb")27    transcription = openai.Audio.transcribe("whisper-1", file=file)28    req = transcription['text']29    # conv.append(req)30    return req31    32 33def conversation(audio):34    # global conv35    req = transcribe(audio)36    completion = openai.ChatCompletion.create(37        model="gpt-3.5-turbo",38        messages=[39            {"role": "user", "content": req}]40            # {"role": "user", "content" : line} for line in conv]41    )42    req2 = completion['choices'][0]['message']['content']43    fin_text = 'You: ' + req + '\n' + 'AI: ' + req2.strip()44    tts_data = tts(req2)45    return fin_text, tts_data46 47def generate_image(audio):48    text = transcribe(audio)49    response = openai.Image.create(50    prompt=text,51    n=1,52    size="1024x1024"53    )54    return response['data'][0]['url']55 56 57with gr.Blocks() as demo:58    # global conv59    load_dotenv()60    openai.api_key=os.getenv('api_key')61    conv = []62    with gr.Tab("Start a conversation"):63        with gr.Row():64            audio_input_conv=gr.Audio(source="microphone", type="filepath")65            text_output_conv=gr.Textbox(lines=10)66        audio_output_conv = gr.Audio()67        with gr.Row():68            clear_button_conv = gr.Button("Clear")69            submit_button_conv = gr.Button("Submit")70 71    with gr.Tab("Generate image"):72        with gr.Row():73            audio_input_img=gr.Audio(source="microphone", type="filepath")74            image_output_img = gr.Image()75        with gr.Row():76            clear_button_img = gr.Button("Clear")77            submit_button_img = gr.Button("Submit")78        # image_button = gr.Button("Flip")79 80    # with gr.Accordion("Open for More!"):81    #     gr.Markdown("Look at me...")82 83    84    with gr.Accordion("How to use"):85        gr.Markdown("Record and submit your voice to talk to AI or to generate an image!!")86 87    submit_button_conv.click(conversation, inputs=audio_input_conv, outputs=[text_output_conv, audio_output_conv])88    clear_button_conv.click(lambda: None, None, audio_input_conv, queue=False)89    submit_button_img.click(generate_image, inputs=audio_input_img, outputs=image_output_img)90    clear_button_img.click(lambda: None, None, audio_input_img, queue=False)91    clear_button_img.click(lambda: None, None, image_output_img, queue=False)92 93 94# def same_auth(username, password):95#     return username == password96 97 98# demo.launch(auth=same_auth)99 100demo.launch()101