如何搜索音频文件中的内容?
How can I search content in an audio file?
我有一个音频文件,我使用 AWS 转录从音频中获取文本。我现在有一个包含成绩单的 json 文件。 json 文件还包含每个单词的开始时间和结束时间。例如:
我想知道如何搜索一个完整的句子并返回它说的时间?我正在使用 python 来执行此操作。
感谢您的帮助。
我会提取列表中的所有单词和时间并查找句子的出现。
像这样,如果我正确地得到了你的数据格式(总是使用第一个替代词作为提取的词):
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')
无法真正测试,理论上应该可以;)
我有一个音频文件,我使用 AWS 转录从音频中获取文本。我现在有一个包含成绩单的 json 文件。 json 文件还包含每个单词的开始时间和结束时间。例如:
我想知道如何搜索一个完整的句子并返回它说的时间?我正在使用 python 来执行此操作。
感谢您的帮助。
我会提取列表中的所有单词和时间并查找句子的出现。 像这样,如果我正确地得到了你的数据格式(总是使用第一个替代词作为提取的词):
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')
无法真正测试,理论上应该可以;)