Принудительное выравнивание с использованием Aeneas с несколькими текстовыми файлами Aeneas
Мы начали проект по созданию набора данных распознавания турецкой речи для использования с DeepSpeech.
Мы закончили задачу предварительной обработки Ebook. Но мы не смогли закончить процесс принудительного выравнивания с Энеем.
Согласно его учебникам для принудительного выравнивания, вам нужен текстовый файл и записанный аудиофайл. Во время предварительной обработки Ebook мы создали 430 текстовых файлов, которые были отредактированы и очищены для формата aeneas (разделены на абзацы и предложения с использованием библиотеки nltk).
Но, обрабатывая созданный нами объект задачи и создавая его выходной файл (файл Json), мы не смогли объединить выходные файлы. Для каждого файла Aeneas он начинается с начала аудиофайла.
Кажется, нам нужно разделить наш аудиофайл на 430 частей, но это не простой процесс.
Я попытался объединить файлы Json с:
import json
import glob
result = []
for f in glob.glob("*.json"):
with open(f, "rb") as infile:
result.append(json.load(infile))
with open("merged_file.json", "w") as outfile:
json.dump(result, outfile)
Но это не сработало, потому что при принудительном процессе выравнивания, aeneas начинались с начала аудиофайла для каждого текстового файла aeneas.
Можно ли создать объект задачи, который включает в себя все 430 текстовых файлов aeneas, и добавить их в один выходной файл (файл Json) по времени (секундам), используя также один аудиофайл?
Наша задача объекта:
# create Task object
config_string = "task_language=tur|is_text_type=plain|os_task_file_format=json"
task = Task(config_string=config_string)
task.audio_file_path_absolute = "/content/gdrive/My Drive/TASR/kitaplar/nutuk/Nutuk_sesli.mp3"
task.text_file_path_absolute = "/content/gdrive/My Drive/TASR/kitaplar/nutuk/nutuk_aeneas_data_1.txt")
task.sync_map_file_path_absolute = "/content/gdrive/My Drive/TASR/kitaplar/nutuk/syncmap.json")
Кстати, мы работаем над Google Colab с Python 3.
1 ответ
Я разобрался, чтобы решить мой вопрос, и нашел решение.
Вместо объединения файлов JSON я мог бы объединить текстовые файлы aeneas с этим кодом:
with open("/content/gdrive/My Drive/TASR/kitaplar/{0}/{1}/{2}_aeneas_data_all.txt".format(book_name,chapter,
book_name), "wb") as outfile:
for i in range(1,count-1):
file_name = "/content/gdrive/My Drive/TASR/kitaplar/{0}/{1}/{2}_aeneas_data_{3}.txt".format(book_name, chapter, book_name, str(i))
#print(file_name)
with open(file_name, "rb") as infile:
outfile.write(infile.read())
Поэтому после объединения файлов aeneas я могу создать файл json, содержащий все абзацы.