Spaces:
Sleeping
Sleeping
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) |