Звук к тексту медленный, а слова отбрасываются - PullRequest
0 голосов
/ 08 марта 2019

У меня есть код, который берет видео из входной папки, конвертирует его в аудиофайл (.wav) с помощью ffmpeg. Затем он преобразует аудиофайл в текст, записав 30-секундное аудио (dura = 30) и преобразовав его в текст с помощью API Google Translate.

Проблема в том, что для преобразования видео в текст коду требуется много времени, и каждые 30 секунд отбрасываются первые два слова и некоторые слова.

import speech_recognition as sr
import sys
import shutil
from googletrans import Translator
from pathlib import Path
import os
import wave
def audio_to_text(self,video_lst,deploy_path,video_path,audio_path):
    try:
        txt_lst=[]
        for video_file in video_lst:
            file_part=video_file.split('.')
            audio_path_mod = audio_path +'/'+ '.'.join(file_part[:-1])
            dir_path=video_path+'.'.join(file_part[:-1])
            self.createDirectory(audio_path_mod)
            audio_file='.'.join(file_part[:-1])+'.wav'
            command_ffmpeg='set PATH=%PATH%;'+deploy_path.replace('config','script')+'audio_video/ffmpeg/bin/'
            command='ffmpeg -i '+video_path+'/'+video_file+' '+audio_path_mod+'/'+audio_file
            os.system(command_ffmpeg)
            os.system(command)
            r=sr.Recognizer()
            dura=30
            lang='en'
            wav_filename=audio_path_mod+'/'+audio_file

            f = wave.open(wav_filename, 'r')
            frames = f.getnframes()
            rate = f.getframerate()
            audio_duration = frames / float(rate)
            final_text_lst=[]
            counter=0

            with sr.AudioFile(wav_filename) as source:
                while counter<audio_duration:
                    audio=r.record(source,duration=dura)
                    counter+=dura
                    try:
                        str=r.recognize_google(audio)
                        final_text_lst.append(str)
                    except Exception as e:
                        print(e)
            print('Text data generated..')

            text_path=audio_path_mod+'/'+audio_file.replace('.wav','_audio_text.csv')
            with open(text_path, 'w') as f:
                f.write(' '.join(final_text_lst))

    except Exception as e:
        print(e)

Любая помощь / предложение будут полезны. Заранее спасибо.

...