Принудительное выравнивание с использованием 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, содержащий все абзацы.

Другие вопросы по тегам