Rhueue commited on
Commit
a1d239c
·
1 Parent(s): 7c58da8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -12
app.py CHANGED
@@ -1,5 +1,8 @@
1
  import streamlit as st
2
  import speech_recognition as sr
 
 
 
3
 
4
  def transcribe_audio(audio_file):
5
  recognizer = sr.Recognizer()
@@ -15,18 +18,34 @@ def transcribe_audio(audio_file):
15
 
16
  def filter_audio(audio_file, input_text):
17
  transcribed_text = transcribe_audio(audio_file)
18
- transcribed_words = set(transcribed_text.split())
19
- input_words = set(input_text.split())
20
 
21
- # Retain only the words in the transcribed text that match the input text
22
- filtered_words = transcribed_words.intersection(input_words)
23
 
24
- # Create a new transcription with the filtered words
25
- filtered_transcription = " ".join(filtered_words)
26
 
27
- return filtered_transcription
 
28
 
29
- st.title("Audio Word Filter")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  uploaded_audio = st.file_uploader("Upload an audio file", type=["wav", "mp3", "ogg"])
32
  input_text = st.text_area("Enter input text")
@@ -36,10 +55,13 @@ if uploaded_audio is not None:
36
 
37
  if st.button("Filter Audio"):
38
  if uploaded_audio is not None:
39
- filtered_text = filter_audio(uploaded_audio, input_text)
40
- st.subheader("Filtered Audio Transcript:")
41
- st.write(filtered_text)
 
 
 
42
 
43
  st.write(
44
- "Note: This app transcribes the uploaded audio and filters it to retain only the words mentioned in the input text."
45
  )
 
1
  import streamlit as st
2
  import speech_recognition as sr
3
+ import os
4
+ from pydub import AudioSegment
5
+ from tempfile import NamedTemporaryFile
6
 
7
  def transcribe_audio(audio_file):
8
  recognizer = sr.Recognizer()
 
18
 
19
  def filter_audio(audio_file, input_text):
20
  transcribed_text = transcribe_audio(audio_file)
21
+ transcribed_words = transcribed_text.split()
22
+ input_words = input_text.split()
23
 
24
+ filtered_words = [word for word in transcribed_words if word in input_words]
 
25
 
26
+ return " ".join(filtered_words)
 
27
 
28
+ def create_filtered_audio(original_audio, matching_words):
29
+ original_audio = AudioSegment.from_file(original_audio, format="wav")
30
 
31
+ matching_segments = []
32
+ matching_words = matching_words.split()
33
+
34
+ for word in matching_words:
35
+ word_start = transcribed_text.index(word)
36
+ word_end = word_start + len(word)
37
+ matching_segments.append(original_audio[word_start * 1000 : word_end * 1000])
38
+
39
+ filtered_audio = AudioSegment.silent(duration=len(original_audio))
40
+ for segment in matching_segments:
41
+ filtered_audio = filtered_audio.overlay(segment)
42
+
43
+ with NamedTemporaryFile(suffix=".wav", delete=False) as temp_audio_file:
44
+ filtered_audio.export(temp_audio_file.name, format="wav")
45
+
46
+ return temp_audio_file.name
47
+
48
+ st.title("Audio Word Filter and Regeneration")
49
 
50
  uploaded_audio = st.file_uploader("Upload an audio file", type=["wav", "mp3", "ogg"])
51
  input_text = st.text_area("Enter input text")
 
55
 
56
  if st.button("Filter Audio"):
57
  if uploaded_audio is not None:
58
+ matching_words = filter_audio(uploaded_audio, input_text)
59
+ st.subheader("Matching Words:")
60
+ st.write(matching_words)
61
+ filtered_audio = create_filtered_audio(uploaded_audio, matching_words)
62
+ st.subheader("Filtered Audio:")
63
+ st.audio(filtered_audio, format="audio/wav")
64
 
65
  st.write(
66
+ "Note: This app transcribes the uploaded audio, filters it to retain only the words mentioned in the input text, and generates filtered audio without altering the original audio."
67
  )