recipes_arabic / app.py
ayajoharji's picture
Update app.py
1e3b362 verified
raw
history blame
2.79 kB
import gradio as gr
import pandas as pd
import speech_recognition as sr
pip install gradio pandas speechrecognition pyaudio
# Load recipes from CSV file
def load_recipes(file_path):
df = pd.read_csv(file_path)
recipes = []
for _, row in df.iterrows():
recipes.append({
"name": row["name"],
"ingredients": [i.strip() for i in row["ingredients"].split(',')],
"steps": row["steps"]
})
return recipes
# Load recipes
recipes = load_recipes('recipes_arabic.csv')
def suggest_recipes(user_ingredients):
user_ingredients = [i.strip().lower() for i in user_ingredients.split(',')]
matching_recipes = []
for recipe in recipes:
recipe_ingredients = [i.strip().lower() for i in recipe['ingredients']]
if all(ingredient in recipe_ingredients for ingredient in user_ingredients):
ingredient_list = ', '.join(recipe['ingredients'])
matching_recipes.append(f"{recipe['name']}\nIngredients: {ingredient_list}\nSteps: {recipe['steps']}")
if not matching_recipes:
return "لا توجد وصفات تتناسب مع المكونات المدخلة."
return "\n\n".join(matching_recipes)
# Define the function to convert audio to text
def audio_to_text(audio_file):
recognizer = sr.Recognizer()
with sr.AudioFile(audio_file) as source:
audio_data = recognizer.record(source)
try:
text = recognizer.recognize_google(audio_data, language="ar")
return text
except sr.UnknownValueError:
return "لم أتمكن من فهم الصوت."
except sr.RequestError:
return "حدث خطأ في الاتصال بخدمة تحويل الصوت إلى نص."
def process_input(text_input, audio_file):
if audio_file:
user_ingredients = audio_to_text(audio_file)
else:
user_ingredients = text_input
if not user_ingredients:
return "يرجى إدخال المكونات."
return suggest_recipes(user_ingredients)
# Create the Gradio interface
iface = gr.Interface(
fn=process_input,
inputs=[
gr.Textbox(label="ادخل المكونات (مفصولة بفواصل)", placeholder="أدخل المكونات هنا", optional=True),
gr.Audio(source="microphone", type="filepath", label="تحدث لتحديد المكونات", optional=True)
],
outputs=gr.Textbox(label="الوصفات المقترحة"),
title="اقتراحات الوصفات العربية",
description="ادخل المكونات التي لديك للحصول على اقتراحات لوصفات عربية تقليدية. يمكنك أيضاً التحدث لتحديد المكونات."
)
if __name__ == "__main__":
iface.launch()