Turbiling commited on
Commit
2b2420e
·
verified ·
1 Parent(s): d80887b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -17
app.py CHANGED
@@ -5,17 +5,15 @@ import yt_dlp
5
  import subprocess
6
  from huggingface_hub import InferenceClient
7
 
8
- # ✅ Initialize Hugging Face client
9
- client = InferenceClient("openai/whisper-large-v3")
10
-
11
- # Summarization and tutorial generation models
12
  english_summarizer = InferenceClient("facebook/bart-large-cnn")
13
  urdu_summarizer = InferenceClient("openai/gpt-oss-120b")
14
 
15
  # --- Helper Functions ---
16
 
17
  def download_youtube_audio(url):
18
- """Download audio from YouTube video"""
19
  try:
20
  with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp:
21
  ydl_opts = {
@@ -34,8 +32,11 @@ def convert_to_wav(audio_path):
34
  """Ensure audio is in .wav format"""
35
  wav_path = tempfile.mktemp(suffix=".wav")
36
  try:
37
- subprocess.run(["ffmpeg", "-y", "-i", audio_path, "-ar", "16000", "-ac", "1", wav_path],
38
- check=True, capture_output=True)
 
 
 
39
  return wav_path
40
  except subprocess.CalledProcessError as e:
41
  raise RuntimeError(f"❌ ffmpeg conversion failed: {e}")
@@ -51,12 +52,11 @@ def transcribe_audio(audio_file=None, youtube_url=None):
51
  wav_path = convert_to_wav(audio_path)
52
 
53
  with open(wav_path, "rb") as f:
54
- text = client.text_generation(
55
- prompt="Transcribe this English audio accurately:",
56
- inputs=f.read(),
57
- max_new_tokens=5000,
58
- )
59
- return text
60
  except Exception as e:
61
  return f"❌ Error during transcription: {e}"
62
 
@@ -65,13 +65,13 @@ def summarize_text(transcribed_text, language):
65
  try:
66
  if language == "English":
67
  response = english_summarizer.text_generation(
68
- prompt="Summarize this text comprehensively:\n" + transcribed_text,
69
  max_new_tokens=1024,
70
  )
71
  return response
72
  else:
73
  response = urdu_summarizer.text_generation(
74
- prompt="مندرجہ ذیل انگریزی متن کا جامع اردو خلاصہ تحریر کریں:\n" + transcribed_text,
75
  max_new_tokens=2048,
76
  )
77
  return response
@@ -83,8 +83,8 @@ def generate_tutorial(transcribed_text, summary, language):
83
  try:
84
  model = urdu_summarizer if language == "Urdu" else english_summarizer
85
  prompt = (
86
- f"Write a simple, step-by-step tutorial in {language} for beginners based on this transcript:\n\n"
87
- f"Transcript:\n{transcribed_text}\n\nSummary:\n{summary}\n"
88
  )
89
  response = model.text_generation(prompt=prompt, max_new_tokens=2500)
90
  return response
 
5
  import subprocess
6
  from huggingface_hub import InferenceClient
7
 
8
+ # ✅ Initialize clients
9
+ whisper_client = InferenceClient("openai/whisper-large-v3")
 
 
10
  english_summarizer = InferenceClient("facebook/bart-large-cnn")
11
  urdu_summarizer = InferenceClient("openai/gpt-oss-120b")
12
 
13
  # --- Helper Functions ---
14
 
15
  def download_youtube_audio(url):
16
+ """Download YouTube audio using yt_dlp"""
17
  try:
18
  with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp:
19
  ydl_opts = {
 
32
  """Ensure audio is in .wav format"""
33
  wav_path = tempfile.mktemp(suffix=".wav")
34
  try:
35
+ subprocess.run(
36
+ ["ffmpeg", "-y", "-i", audio_path, "-ar", "16000", "-ac", "1", wav_path],
37
+ check=True,
38
+ capture_output=True
39
+ )
40
  return wav_path
41
  except subprocess.CalledProcessError as e:
42
  raise RuntimeError(f"❌ ffmpeg conversion failed: {e}")
 
52
  wav_path = convert_to_wav(audio_path)
53
 
54
  with open(wav_path, "rb") as f:
55
+ audio_data = f.read()
56
+
57
+ # ✅ Correct way to call Whisper for transcription
58
+ response = whisper_client.post(json=None, data=audio_data)
59
+ return response.get("text", "❌ No transcription returned.")
 
60
  except Exception as e:
61
  return f"❌ Error during transcription: {e}"
62
 
 
65
  try:
66
  if language == "English":
67
  response = english_summarizer.text_generation(
68
+ prompt=f"Summarize the following text in detail:\n\n{transcribed_text}",
69
  max_new_tokens=1024,
70
  )
71
  return response
72
  else:
73
  response = urdu_summarizer.text_generation(
74
+ prompt=f"مندرجہ ذیل انگریزی متن کا جامع اردو خلاصہ لکھیں:\n\n{transcribed_text}",
75
  max_new_tokens=2048,
76
  )
77
  return response
 
83
  try:
84
  model = urdu_summarizer if language == "Urdu" else english_summarizer
85
  prompt = (
86
+ f"Write a simple, step-by-step tutorial in {language} for absolute beginners "
87
+ f"based on the following transcript and summary.\n\nTranscript:\n{transcribed_text}\n\nSummary:\n{summary}"
88
  )
89
  response = model.text_generation(prompt=prompt, max_new_tokens=2500)
90
  return response