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