Запустив следующий код и пытаясь организовать поток вызовов через облачную речь Google с помощью python, я получаю следующую ошибку: IndexError: список индекса выходит за пределы диапазона.
Я не могу понять, куда он падаетвниз, это работает, небольшие партии из 2 потоков и 10 файлов.Но когда я масштабируюсь дальше, я получаю следующую ошибку.Любая помощь будет принята с благодарностью.
def transcribe_c_gcs(gcs_uri):
from google.cloud import speech_v1p1beta1 as speech
client = speech.SpeechClient()
audio = speech.types.RecognitionAudio(uri=gcs_uri)
config = speech.types.RecognitionConfig(
language_code='en-US',
enable_word_time_offsets=True,
enable_automatic_punctuation=True
)
operation = client.long_running_recognize(config, audio)
reading = operation.result(timeout=90000)
transcript_dict = {'Word':[], 'start_time': [], 'end_time':[]}
for result in reading.results:
alternative = result.alternatives[0]
for word_info in alternative.words:
word = word_info.word
start_time = word_info.start_time
end_time = word_info.end_time
transcript_dict['Word'].append(word)
transcript_dict['start_time'].append(
start_time.seconds + start_time.nanos * 1e-9)
transcript_dict['end_time'].append(
end_time.seconds + end_time.nanos * 1e-9)
comp = pd.DataFrame(transcript_dict)
comp['id'] = [gcs_uri.split('_')[2] for _ in range(len(comp.index))]
comp['version'] = [gcs_uri.split('_')[3] for _ in range(len(comp.index))]
return comp
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=2) as executor:
results = executor.map(transcribe_c_gcs, filelist)
asyncres = pd.concat(results, axis=0)
asyncres.to_csv('out.csv')