Rahul-Crudcook commited on
Commit
13d84f6
·
verified ·
1 Parent(s): 1a467d9

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +90 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import speech_recognition as sr
3
+ from deep_translator import GoogleTranslator
4
+ from pydub import AudioSegment
5
+ from io import BytesIO
6
+ import tempfile
7
+
8
+ # Title of the app
9
+ st.title("Speech-to-Text with Translation to English")
10
+
11
+ # Initialize recognizer
12
+ recognizer = sr.Recognizer()
13
+
14
+ # Choice for input method
15
+ input_method = st.radio("Select Input Method", ("Record from Microphone", "Upload Audio File"))
16
+
17
+ # Choice for input language
18
+ language_options = {"English": "en", "Hindi": "hi"}
19
+ input_language = st.selectbox("Select Input Language", options=language_options.keys())
20
+ selected_lang_code = language_options[input_language]
21
+
22
+ # Function to convert audio chunk to text
23
+ def speech_to_text(audio_data, lang="en"): # Default language to English
24
+ try:
25
+ # Recognize speech
26
+ st.info("Converting speech to text...")
27
+ detected_text = recognizer.recognize_google(audio_data, language=lang)
28
+ return detected_text
29
+ except Exception as e:
30
+ st.error(f"Error in speech recognition: {e}")
31
+ return None
32
+
33
+ # Handle recording from microphone
34
+ if input_method == "Record from Microphone":
35
+ if st.button("Start Recording"):
36
+ with st.spinner("Recording... Please speak into the microphone."):
37
+ try:
38
+ # Capture audio input from the microphone
39
+ with sr.Microphone() as source:
40
+ st.info("Listening... Please speak now.")
41
+ recognizer.adjust_for_ambient_noise(source) # Adjust for background noise
42
+ audio_data = recognizer.listen(source)
43
+ st.success("Recording complete!")
44
+
45
+ # Process and convert speech to text
46
+ detected_text = speech_to_text(audio_data, lang=selected_lang_code)
47
+ if detected_text:
48
+ st.write("Detected Speech Text:", detected_text)
49
+
50
+ # Translate to English
51
+ translator = GoogleTranslator(source='auto', target='en')
52
+ translated_text = translator.translate(detected_text)
53
+ st.write("Translated Text (English):", translated_text)
54
+
55
+ except sr.UnknownValueError:
56
+ st.error("Could not understand the audio. Please try again.")
57
+ except sr.RequestError as e:
58
+ st.error(f"Could not request results from the service; {e}")
59
+
60
+ # Process uploaded audio file
61
+ if input_method == "Upload Audio File":
62
+ uploaded_file = st.file_uploader("Upload an audio file", type=["wav", "mp3", "ogg"])
63
+ if uploaded_file:
64
+ with st.spinner("Processing uploaded audio..."):
65
+ try:
66
+ # Convert uploaded file to WAV format using pydub
67
+ audio = AudioSegment.from_file(BytesIO(uploaded_file.read()))
68
+ # Split audio into 30-second chunks
69
+ chunk_duration_ms = 30000
70
+ chunks = [audio[i:i+chunk_duration_ms] for i in range(0, len(audio), chunk_duration_ms)]
71
+ text_output = ""
72
+
73
+ for i, chunk in enumerate(chunks):
74
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_wav_file:
75
+ chunk.export(tmp_wav_file.name, format="wav")
76
+ with sr.AudioFile(tmp_wav_file.name) as source:
77
+ audio_data = recognizer.record(source)
78
+ detected_text = speech_to_text(audio_data, lang=selected_lang_code)
79
+ if detected_text:
80
+ text_output += detected_text + " "
81
+
82
+ # Display detected text and translate
83
+ if text_output:
84
+ st.write("Detected Speech Text:", text_output)
85
+ translator = GoogleTranslator(source='auto', target='en')
86
+ translated_text = translator.translate(text_output)
87
+ st.write("Translated Text (English):", translated_text)
88
+
89
+ except Exception as e:
90
+ st.error(f"Error processing the audio file: {e}")
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ streamlit
2
+ speechrecognition
3
+ deep-translator
4
+ pydub