sehaj13 commited on
Commit
76dcfba
·
verified ·
1 Parent(s): d973189

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -14
app.py CHANGED
@@ -9,6 +9,8 @@ from gtts import gTTS
9
  import speech_recognition as sr
10
  import os
11
  import tempfile
 
 
12
 
13
  # ---------------------------
14
  # Gemini Configuration
@@ -38,31 +40,36 @@ def predict_crop(N, P, K, temperature, humidity, ph, rainfall):
38
  crop_name = le.inverse_transform([pred])[0]
39
  return f"🌾 ਸਿਫਾਰਸ਼ੀ ਫਸਲ: *{crop_name}*"
40
 
41
- # ---------------------------
42
- # Voice to Text Utility
43
- # ---------------------------
44
  def transcribe_audio(audio_path):
45
  recognizer = sr.Recognizer()
46
  with sr.AudioFile(audio_path) as source:
47
  audio = recognizer.record(source)
48
  try:
49
- return recognizer.recognize_google(audio, language='pa-IN')
 
 
50
  except sr.UnknownValueError:
51
- return "❌ ਆਵਾਜ਼ ਨੂੰ ਸਮਝਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।"
52
  except sr.RequestError:
53
- return "❌ ਗੂਗਲ ਸਪੀਚ ਐਪੀਆਈ ਨਾਲ ਕਨੇਕਟ ਨਹੀਂ ਹੋ ਸਕਿਆ।"
54
 
55
  # ---------------------------
56
- # Gemini Response & TTS
57
  # ---------------------------
58
- def get_gemini_response(query):
59
  try:
60
- response = gemini_model.generate_content(f"ਪੰਜਾਬੀ ਵਿੱਚ ਜਵਾਬ ਦਿਓ: {query}")
 
61
  return response.text
62
  except Exception as e:
63
- return f"❌ Gemini ਤਰਫੋਂ ਗਲਤੀ: {str(e)}"
64
 
65
- def text_to_speech(text, lang='pa'):
 
 
 
66
  tts = gTTS(text=text, lang=lang)
67
  temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
68
  tts.save(temp_file.name)
@@ -72,9 +79,12 @@ def text_to_speech(text, lang='pa'):
72
  # Combined Function
73
  # ---------------------------
74
  def handle_voice_query(audio_file):
75
- query = transcribe_audio(audio_file)
76
- response = get_gemini_response(query)
77
- audio_path = text_to_speech(response)
 
 
 
78
  return query, response, audio_path
79
 
80
  # ---------------------------
 
9
  import speech_recognition as sr
10
  import os
11
  import tempfile
12
+ from langdetect import detect
13
+
14
 
15
  # ---------------------------
16
  # Gemini Configuration
 
40
  crop_name = le.inverse_transform([pred])[0]
41
  return f"🌾 ਸਿਫਾਰਸ਼ੀ ਫਸਲ: *{crop_name}*"
42
 
43
+
44
+
 
45
  def transcribe_audio(audio_path):
46
  recognizer = sr.Recognizer()
47
  with sr.AudioFile(audio_path) as source:
48
  audio = recognizer.record(source)
49
  try:
50
+ text = sr.Recognizer().recognize_google(audio)
51
+ lang = detect(text) # Detect the language of the transcribed text
52
+ return text, lang
53
  except sr.UnknownValueError:
54
+ return "❌ Could not understand audio.", None
55
  except sr.RequestError:
56
+ return "❌ Could not connect to Google API.", None
57
 
58
  # ---------------------------
59
+ # Gemini Response in Detected Language
60
  # ---------------------------
61
+ def get_gemini_response(query, lang_code):
62
  try:
63
+ system_prompt = f"Answer the following in language code '{lang_code}': {query}"
64
+ response = gemini_model.generate_content(system_prompt)
65
  return response.text
66
  except Exception as e:
67
+ return f"❌ Gemini error: {str(e)}"
68
 
69
+ # ---------------------------
70
+ # Text to Speech in Same Language
71
+ # ---------------------------
72
+ def text_to_speech(text, lang):
73
  tts = gTTS(text=text, lang=lang)
74
  temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
75
  tts.save(temp_file.name)
 
79
  # Combined Function
80
  # ---------------------------
81
  def handle_voice_query(audio_file):
82
+ query, lang = transcribe_audio(audio_file)
83
+ if lang is None:
84
+ return query, "⚠️ No response", None
85
+
86
+ response = get_gemini_response(query, lang)
87
+ audio_path = text_to_speech(response, lang)
88
  return query, response, audio_path
89
 
90
  # ---------------------------