使用Aeneas与Multible Aeneas文本文件强制对齐

时间:2019-01-22 14:11:53

标签: dataset speech-recognition mozilla-deepspeech

我们已经启动了一个项目,以创建用于DeepSpeech的土耳其语语音识别数据集。

我们完成了电子书的预处理任务。 但是我们无法完成与埃涅阿斯的强制对中过程。

根据其强制对齐的教程,您需要一个文本文件及其记录的音频文件。在对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)

但是它不起作用,因为在强制对齐过程中,每个音频文件的音频文件的开头都有音频文件的开头。

是否可以创建一个包含所有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")

顺便说一句,我们正在使用python 3开发Google Colab。

1 个答案:

答案 0 :(得分:0)

我想出办法解决我的问题,并找到了解决方案。

我可以使用以下代码来组合aeneas文本文件,而不是组合JSON文件:

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文件。