Как я могу искать содержимое в аудиофайле?

#python #amazon-web-services #audio #full-text-search #speech-to-text

#python #amazon-веб-сервисы #Аудио #полнотекстовый поиск #преобразование речи в текст

Вопрос:

У меня есть аудиофайл, я использовал AWS transcribe для получения текста из аудио. Теперь у меня есть файл json, содержащий расшифровку. Файл json также содержит время начала и окончания каждого слова. Например :

введите описание изображения здесь

Мне интересно, как я могу выполнить поиск полного предложения и вернуть время, когда оно было сказано? Для этого я использую python.

Спасибо за вашу помощь.

Ответ №1:

Я бы извлек все слова и время в списках и искал вхождение предложения. Что-то вроде этого, если я правильно получил ваш формат данных (всегда используя первую альтернативу в качестве извлеченного слова):

 def extract_words_and_time(data):
    word_list = []
    time_list = []
    for item in data['items']:
        word_list.append(item['alternatives'][0]['content'].lower())
        time_list.append((item['start_time'], item['end_time']))
    return word_list, time_list

def get_sub_list_index(sub_list, complete_list):
    sublist_length = len(sub_list)
    for ind in (i for i, element in enumerate(complete_list) if element == sub_list[0]):
        if complete_list[ind:ind   sublist_length] == sub_list:
            return ind, ind   sublist_length - 1

def get_start_and_end_time(sentence, word_list):
    matching_start_stop = get_sub_list_index(sentence.lower().split(), word_list)
    if matching_start_stop:
        start_time = time_list[matching_start_stop[0]][0]
        end_time = time_list[matching_start_stop[1]][1]
        return start_time, end_time

word_list, time_list = extract_words_and_time(your_data_from_json)
sentence = 'Bonjour mon petit chien'
sentence_timing = get_start_and_end_time(sentence, word_list)

if sentence_timing:
    print(f'Start: {sentence_timing[0]}, Stop: {sentence_timing[1]}')
else:
    print('Sentence was not found')
  

Не могу его протестировать, теоретически он должен работать 😉