cfc-tech commited on
Commit
7b1110c
·
verified ·
1 Parent(s): b2e37a3
Files changed (1) hide show
  1. app.py +19 -4
app.py CHANGED
@@ -3,6 +3,7 @@ from pytube import YouTube
3
  from moviepy.editor import AudioFileClip
4
  import speech_recognition as sr
5
  from transformers import pipeline
 
6
  import os
7
 
8
  def download_and_extract_audio(youtube_link):
@@ -27,10 +28,24 @@ def download_and_extract_audio(youtube_link):
27
  def transcribe_audio(audio_path):
28
  try:
29
  recognizer = sr.Recognizer()
30
- with sr.AudioFile(audio_path) as source:
31
- audio_data = recognizer.record(source)
32
- text = recognizer.recognize_google(audio_data)
33
- return text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  except Exception as e:
35
  st.error(f"Error transcribing audio: {e}")
36
  return None
 
3
  from moviepy.editor import AudioFileClip
4
  import speech_recognition as sr
5
  from transformers import pipeline
6
+ from pydub import AudioSegment, silence
7
  import os
8
 
9
  def download_and_extract_audio(youtube_link):
 
28
  def transcribe_audio(audio_path):
29
  try:
30
  recognizer = sr.Recognizer()
31
+ audio = AudioSegment.from_wav(audio_path)
32
+
33
+ # Split the audio into non-silent chunks
34
+ audio_chunks = silence.split_on_silence(audio, min_silence_len=1000, silence_thresh=-40)
35
+
36
+ full_text = ""
37
+ for i, chunk in enumerate(audio_chunks):
38
+ chunk.export(f"/tmp/chunk{i}.wav", format="wav")
39
+ with sr.AudioFile(f"/tmp/chunk{i}.wav") as source:
40
+ audio_data = recognizer.record(source)
41
+ try:
42
+ text = recognizer.recognize_google(audio_data)
43
+ full_text += " " + text
44
+ except sr.UnknownValueError:
45
+ # Skip segments that the recognizer can't understand
46
+ continue
47
+
48
+ return full_text.strip()
49
  except Exception as e:
50
  st.error(f"Error transcribing audio: {e}")
51
  return None