| import gradio as gr |
| import requests |
| import asyncio |
| import edge_tts |
|
|
| |
| def generate_text(prompt): |
| |
| url = "https://huggingface.co/spaces/Sad44587/PyBotChat/resolve/main/app.py" |
| |
| |
| 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." |
|
|
| |
| 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" |
|
|
| |
| def generate_and_speak(prompt): |
| |
| generated_text = generate_text(prompt) |
| |
| |
| audio_path = asyncio.run(generate_voice(generated_text)) |
| |
| return generated_text, audio_path |
|
|
| |
| 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 |
|
|
| |
| if __name__ == "__main__": |
| demo = create_interface() |
| demo.launch() |