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()