awacke1's picture
Create app.py
cf3c6a5 verified
raw
history blame
2.37 kB
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)