Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from io import BytesIO
- from pathlib import Path
- from pydub import AudioSegment
- from pydub.silence import split_on_silence
- import speech_recognition as sr
- from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
- def save_in_buffer(chunk):
- buffer = BytesIO()
- chunk.export(buffer, 'wav')
- buffer.seek(0)
- return buffer
- def process_chapter(counter):
- chapter_nr = str(counter).zfill(2)
- chapter = AudioSegment.from_mp3(Path(rf'D:\Windows\Pulpit\Big data\{chapter_nr}_Big data.mp3'))
- chunks = split_on_silence(chapter, keep_silence=500, silence_thresh=-40)
- r = sr.Recognizer()
- def load_audio(buffer):
- with sr.AudioFile(buffer) as source:
- audio = r.record(source)
- return audio
- def recognize_text(audio):
- try:
- return r.recognize_google(audio, language='pl-PL')
- except sr.UnknownValueError:
- return '!-NotRecognized-!'
- except sr.RequestError as e:
- return '!-RequestError-!'
- audio_chunks = map(load_audio, map(save_in_buffer, chunks))
- with ThreadPoolExecutor(10) as pool:
- recognized_texts = pool.map(recognize_text, audio_chunks)
- recognized_texts = ' '.join(recognized_texts)
- with open(Path(f'results_{chapter_nr}.txt'), mode='w', encoding='utf-8') as file:
- file.write(recognized_texts)
- if __name__ == '__main__':
- with ProcessPoolExecutor(4) as p:
- for i in range(2, 11):
- p.submit(process_chapter, i)
Advertisement
Add Comment
Please, Sign In to add comment