Spaces:
Runtime error
Runtime error
File size: 7,714 Bytes
9b1ec5f 87fa1b1 b5f663f ff6623d b5f663f e4d904e b5f663f d53f8eb 87fa1b1 56c5e88 f675bf5 87fa1b1 a67c09f 90f7ec7 87fa1b1 b9701ec e14d0da 5e1dfaf 87fa1b1 b9701ec 87fa1b1 e4d904e 87fa1b1 f675bf5 87fa1b1 b9701ec 87fa1b1 31282e2 87fa1b1 f675bf5 87fa1b1 a5d7494 87fa1b1 b9701ec 87fa1b1 bb9a87c 87fa1b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
import cohere
import gradio as gr
import os, json
import random
co = cohere.Client(os.environ['CO_API_KEY'])
# initialize a conversation session id
cohere_chat_res_start = co.chat("Hi", persona = "catgpt")
conv_session_id = cohere_chat_res_start.session_id
whisper = gr.Interface.load(name="spaces/sanchit-gandhi/whisper-large-v2")
def translate_or_transcribe(audio):
return whisper(audio, None, "translate", fn_index=0)
def get_response_from_chatbot(text):
cohere_chat_res = co.chat(text, session_id=conv_session_id, persona = "catgpt")
return cohere_chat_res.reply
def chat(message, chat_history):
out_chat = []
if chat_history != '':
out_chat = json.loads(chat_history)
response = get_response_from_chatbot(message)
out_chat.append((message, response))
chat_history = json.dumps(out_chat)
return out_chat, chat_history
start_work = """async() => {
function isMobile() {
try {
document.createEvent("TouchEvent"); return true;
} catch(e) {
return false;
}
}
function getClientHeight()
{
var clientHeight=0;
if(document.body.clientHeight&&document.documentElement.clientHeight) {
var clientHeight = (document.body.clientHeight<document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;
} else {
var clientHeight = (document.body.clientHeight>document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;
}
return clientHeight;
}
function setNativeValue(element, value) {
const valueSetter = Object.getOwnPropertyDescriptor(element.__proto__, 'value').set;
const prototype = Object.getPrototypeOf(element);
const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype, 'value').set;
if (valueSetter && valueSetter !== prototypeValueSetter) {
prototypeValueSetter.call(element, value);
} else {
valueSetter.call(element, value);
}
}
var gradioEl = document.querySelector('body > gradio-app').shadowRoot;
if (!gradioEl) {
gradioEl = document.querySelector('body > gradio-app');
}
if (typeof window['gradioEl'] === 'undefined') {
window['gradioEl'] = gradioEl;
const page1 = window['gradioEl'].querySelectorAll('#page_1')[0];
const page2 = window['gradioEl'].querySelectorAll('#page_2')[0];
page1.style.display = "none";
page2.style.display = "block";
window['div_count'] = 0;
window['chat_bot'] = window['gradioEl'].querySelectorAll('#chat_bot')[0];
window['chat_bot1'] = window['gradioEl'].querySelectorAll('#chat_bot1')[0];
chat_row = window['gradioEl'].querySelectorAll('#chat_row')[0];
prompt_row = window['gradioEl'].querySelectorAll('#prompt_row')[0];
window['chat_bot1'].children[1].textContent = '';
clientHeight = getClientHeight();
new_height = (clientHeight-300) + 'px';
chat_row.style.height = new_height;
window['chat_bot'].style.height = new_height;
window['chat_bot'].children[2].style.height = new_height;
window['chat_bot1'].style.height = new_height;
window['chat_bot1'].children[2].style.height = new_height;
prompt_row.children[0].style.flex = 'auto';
prompt_row.children[0].style.width = '100%';
window['checkChange'] = function checkChange() {
try {
if (window['chat_bot'].children[2].children[0].children.length > window['div_count']) {
new_len = window['chat_bot'].children[2].children[0].children.length - window['div_count'];
for (var i = 0; i < new_len; i++) {
new_div = window['chat_bot'].children[2].children[0].children[window['div_count'] + i].cloneNode(true);
window['chat_bot1'].children[2].children[0].appendChild(new_div);
}
window['div_count'] = chat_bot.children[2].children[0].children.length;
}
if (window['chat_bot'].children[0].children.length > 1) {
window['chat_bot1'].children[1].textContent = window['chat_bot'].children[0].children[1].textContent;
} else {
window['chat_bot1'].children[1].textContent = '';
}
} catch(e) {
}
}
window['checkChange_interval'] = window.setInterval("window.checkChange()", 500);
}
return false;
}"""
with gr.Blocks(title='Talk to CatGPT') as demo:
gr.Markdown("## Talk to CatGPT with your voice ! ##")
gr.Markdown("### Interact with CatGPT, a cat-based persona created by Cohere AI ! ###")
with gr.Group(elem_id="page_1", visible=True) as page_1:
with gr.Box():
with gr.Row():
start_button = gr.Button("Let's talk to CatGPT!", elem_id="start-btn", visible=True)
start_button.click(fn=None, inputs=[], outputs=[], _js=start_work)
with gr.Group(elem_id="page_2", visible=False) as page_2:
with gr.Row(elem_id="chat_row"):
chatbot = gr.Chatbot(elem_id="chat_bot", visible=False).style(color_map=("green", "blue"))
chatbot1 = gr.Chatbot(elem_id="chat_bot1").style(color_map=("green", "blue"))
with gr.Row():
prompt_input_audio = gr.Audio(
source="microphone",
type="filepath",
label="Record Audio Input",
)
translate_btn = gr.Button("Check text first ?👍")
#whisper_task = gr.Radio(["translate", "transcribe"], value="translate", show_label=False)
with gr.Row(elem_id="prompt_row"):
prompt_input = gr.Textbox(lines=2, label="Input text",show_label=True)
chat_history = gr.Textbox(lines=4, label="prompt", visible=False)
submit_btn = gr.Button(value = "Send to CatGPT",elem_id="submit-btn").style(
margin=True,
rounded=(True, True, True, True),
width=100
)
translate_btn.click(fn=translate_or_transcribe,
inputs=[prompt_input_audio],
outputs=prompt_input
)
submit_btn.click(fn=chat,
inputs=[prompt_input, chat_history],
outputs=[chatbot, chat_history],
)
gr.HTML('''
<p>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 ;)</p>
<div class="footer">
<p>Whisper Model by <a href="https://github.com/openai/whisper" style="text-decoration: underline;" target="_blank">OpenAI</a>
</p>
<p>This demo uses the Cohere API. Cohere provides access to advanced Large Language Models and NLP tools through one easy-to-use API. <a href="https://cohere.ai/" style="text-decoration: underline;" target="_blank">Get started for free!</a>
</p>
</div>
''')
gr.Markdown("")
demo.launch(debug = True) |