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