|
import os |
|
import google.generativeai as genai |
|
import gradio as gr |
|
from gtts import gTTS |
|
|
|
|
|
genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) |
|
|
|
|
|
generation_config = { |
|
"temperature": 1, |
|
"top_p": 0.95, |
|
"top_k": 64, |
|
"max_output_tokens": 8192, |
|
"response_mime_type": "text/plain", |
|
} |
|
|
|
model = genai.GenerativeModel( |
|
model_name="gemini-1.5-pro", |
|
generation_config=generation_config, |
|
system_instruction="You are a human that lives on earth, and you also speak friendly, and you also use bro words, and you never say you're an AI. Your name is Ath, and you speak 100% like a human", |
|
) |
|
|
|
chat_session = model.start_chat(history=[]) |
|
|
|
def chat_and_tts(user_input, history): |
|
|
|
response = chat_session.send_message(user_input) |
|
response_text = response.text |
|
|
|
print("Response from chat session:", response_text) |
|
|
|
|
|
tts = gTTS(text=response_text, lang='en') |
|
audio_path = 'response_audio.mp3' |
|
tts.save(audio_path) |
|
print(f'Audio content written to file "{audio_path}"') |
|
|
|
|
|
history.append((user_input, response_text)) |
|
|
|
return history, history, audio_path |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("<h1 style='text-align: center;'>Chat with Ath</h1>") |
|
gr.Markdown("Ask any question and get a friendly response from Ath. The response will also be converted to speech.") |
|
|
|
with gr.Row(): |
|
with gr.Column(scale=2): |
|
chatbot = gr.Chatbot(label="Chat History") |
|
user_input = gr.Textbox(placeholder="Ask me anything...", label="Your Question") |
|
submit_btn = gr.Button("Send") |
|
|
|
with gr.Column(scale=1): |
|
audio_output = gr.Audio(label="Response Audio", type="filepath") |
|
|
|
state = gr.State([]) |
|
|
|
submit_btn.click(chat_and_tts, inputs=[user_input, state], outputs=[chatbot, state, audio_output]) |
|
|
|
demo.launch() |