File size: 2,367 Bytes
cf3c6a5 |
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 |
import gradio as gr
import edge_tts
import asyncio
import tempfile
import os
from huggingface_hub import InferenceClient
import re
from streaming_stt_nemo import Model
import torch
import random
import pandas as pd
from datetime import datetime
import base64
import io
# ... (previous imports and functions remain the same)
def download_history():
csv_buffer = io.StringIO()
history_df.to_csv(csv_buffer, index=False)
csv_string = csv_buffer.getvalue()
b64 = base64.b64encode(csv_string.encode()).decode()
href = f'data:text/csv;base64,{b64}'
return href
DESCRIPTION = """ # <center><b>JARVIS⚡</b></center>
### <center>A personal Assistant of Tony Stark for YOU
### <center>Voice Chat with your personal Assistant</center>
"""
with gr.Blocks(css="style.css") as demo:
gr.Markdown(DESCRIPTION)
with gr.Row():
select = gr.Dropdown([
'Mixtral 8x7B',
'Llama 3 8B',
'Mistral 7B v0.3',
'Phi 3 mini',
],
value="Mistral 7B v0.3",
label="Model"
)
seed = gr.Slider(
label="Seed",
minimum=0,
maximum=999999,
step=1,
value=0,
visible=False
)
input_audio = gr.Audio(label="User", sources="microphone", type="filepath")
output_audio = gr.Audio(label="AI", type="filepath", autoplay=True)
# Add a DataFrame to display the history
history_display = gr.DataFrame(label="Query History")
# Add a download button for the history
download_button = gr.Button("Download History")
download_link = gr.HTML()
demo.load(fn=lambda: gr.update(visible=True), outputs=[download_button])
def process_audio(audio, model, seed):
response = asyncio.run(respond(audio, model, seed))
return next(response)
input_audio.change(
fn=process_audio,
inputs=[input_audio, select, seed],
outputs=[output_audio]
)
# Update the history display after each interaction
output_audio.change(fn=display_history, outputs=[history_display])
# Connect the download button to the download function
download_button.click(fn=download_history, outputs=[download_link])
if __name__ == "__main__":
demo.queue(max_size=200).launch(share=True) |