PyBot / app.py
Sad44587's picture
Update app.py
8e766a8 verified
import gradio as gr
import requests
import asyncio
import edge_tts
# Fonction pour générer du texte avec PyBotChat API (simulée ici)
def generate_text(prompt):
# Simulation d'une génération de texte depuis Hugging Face (remplacer l'URL par une API réelle)
url = "https://huggingface.co/spaces/Sad44587/PyBotChat/resolve/main/app.py"
# Paramètres de la requête, ajuster selon le modèle spécifique
payload = {
"inputs": prompt,
"options": {"use_gpu": False}
}
response = requests.post(url, json=payload)
if response.status_code == 200:
response_data = response.json()
return response_data.get('generated_text', 'Désolé, je n\'ai pas pu générer de texte.')
else:
return "Erreur de génération du texte."
# Fonction pour générer la voix à partir du texte avec Edge TTS
async def generate_voice(text):
communicate = edge_tts.Communicate(text, voice="fr-FR-DeniseNeural", rate="0%")
await communicate.save("generated_audio.mp3")
return "generated_audio.mp3" # Retourne le chemin vers l'audio généré
# Fonction principale qui combine les deux processus
def generate_and_speak(prompt):
# Générer le texte avec PyBotChat API
generated_text = generate_text(prompt)
# Générer la voix à partir du texte généré
audio_path = asyncio.run(generate_voice(generated_text))
return generated_text, audio_path
# Interface Gradio
def create_interface():
with gr.Blocks() as demo:
gr.Markdown("### Chatbot avec génération vocale")
with gr.Row():
prompt_input = gr.Textbox(label="Entrez votre message", placeholder="Tapez ici...")
text_output = gr.Textbox(label="Réponse générée")
audio_output = gr.Audio(label="Réponse vocale")
prompt_input.submit(generate_and_speak, inputs=prompt_input, outputs=[text_output, audio_output])
return demo
# Lancer l'interface
if __name__ == "__main__":
demo = create_interface()
demo.launch()