File size: 2,960 Bytes
fe12fb0 1129b43 fe12fb0 d436d1d fe12fb0 d436d1d 3f77238 fe12fb0 1129b43 5fbb19b fe12fb0 d436d1d fe12fb0 18a6160 fe12fb0 18a6160 fe12fb0 18a6160 fe12fb0 1129b43 fe12fb0 18a6160 fe12fb0 d436d1d 18a6160 d436d1d 18a6160 d436d1d fe12fb0 d436d1d 6bc8e69 d436d1d 2f5c55f d436d1d fe12fb0 d436d1d |
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 |
import os
import requests
import google.generativeai as genai
import gradio as gr
# Configure your Google Generative AI API key
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
# Create the model
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 an human that lives on earth, and you also speak friendly,amd you also use bro words,and you never say your AI, your name is ath,you 100% human like speak",
)
chat_session = model.start_chat(history=[])
# Eleven Labs API configuration
eleven_labs_api_key = os.getenv("ELEVEN_LABS_API_KEY")
eleven_labs_url = "https://api.elevenlabs.io/v1/text-to-speech/aEO01A4wXwd1O8GPgGlF"
def chat_and_tts(user_input, history):
# Send the user's input to the chat session
response = chat_session.send_message(user_input)
response_text = response.text
print("Response from chat session:", response_text) # Add this line to check the response
# Eleven Labs text-to-speech request payload
payload = {
"text": response_text,
"voice_settings": {
"stability": 0,
"similarity_boost": 0
}
}
headers = {
"xi-api-key": eleven_labs_api_key,
"Content-Type": "application/json"
}
# Make the request to Eleven Labs API
tts_response = requests.post(eleven_labs_url, json=payload, headers=headers)
print("TTS API response status code:", tts_response.status_code) # Add this line to check the status code
# Check if the response is successful and save the audio content to a file
if tts_response.status_code == 200:
audio_path = 'response_audio.mp3'
with open(audio_path, 'wb') as file:
file.write(tts_response.content)
print("Audio file saved successfully") # Add this line to check if audio file is saved
else:
audio_path = None
# Update the chat history
history.append((user_input, response_text))
return history, history, audio_path
# Create the Gradio UI
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() |