1 import speech_recognition as sr
2
3
4 def main():
5
6 r = sr.Recognizer()
7
8 with sr.Microphone() as source:
9 r.adjust_for_ambient_noise(source)
10
11 audio = r.listen(source)
12
13 try:
14
15 print(r.recognize_google(audio))
16
17 except Exception as e:
18 print("Error : " + str(e))
19
20
21 with open("recorded.wav", "wb") as f:
22 f.write(audio.get_wav_data())
23
24
25 if __name__ == "__main__":
26 main()
1# importing libraries
2import speech_recognition as sr
3import os
4from pydub import AudioSegment
5from pydub.silence import split_on_silence
6
7# create a speech recognition object
8r = sr.Recognizer()
9
10# a function that splits the audio file into chunks
11# and applies speech recognition
12def get_large_audio_transcription(path):
13 """
14 Splitting the large audio file into chunks
15 and apply speech recognition on each of these chunks
16 """
17 # open the audio file using pydub
18 sound = AudioSegment.from_wav(path)
19 # split audio sound where silence is 700 miliseconds or more and get chunks
20 chunks = split_on_silence(sound,
21 # experiment with this value for your target audio file
22 min_silence_len = 500,
23 # adjust this per requirement
24 silence_thresh = sound.dBFS-14,
25 # keep the silence for 1 second, adjustable as well
26 keep_silence=500,
27 )
28 folder_name = "audio-chunks"
29 # create a directory to store the audio chunks
30 if not os.path.isdir(folder_name):
31 os.mkdir(folder_name)
32 whole_text = ""
33 # process each chunk
34 for i, audio_chunk in enumerate(chunks, start=1):
35 # export audio chunk and save it in
36 # the `folder_name` directory.
37 chunk_filename = os.path.join(folder_name, f"chunk{i}.wav")
38 audio_chunk.export(chunk_filename, format="wav")
39 # recognize the chunk
40 with sr.AudioFile(chunk_filename) as source:
41 audio_listened = r.record(source)
42 # try converting it to text
43 try:
44 text = r.recognize_google(audio_listened)
45 except sr.UnknownValueError as e:
46 print("Error:", str(e))
47 else:
48 text = f"{text.capitalize()}. "
49 print(chunk_filename, ":", text)
50 whole_text += text
51 # return the text for all chunks detected
52 return whole_text