使用具有多个 aeneas 文本文件的 Aeneas 强制对齐
Forced alignment using Aeneas with multible aeneas text files
我们已经启动了一个项目来创建与 DeepSpeech 一起使用的土耳其语语音识别数据集。
我们完成了电子书的预处理任务。
但是我们无法完成与埃涅阿斯的强制对齐过程。
根据它的强制对齐教程,你需要一个文本文件和它录制的音频文件。在对电子书进行预处理时,我们创建了 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.
我想到了解决我的问题,并找到了解决方案。
我可以将 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 文件。
我们已经启动了一个项目来创建与 DeepSpeech 一起使用的土耳其语语音识别数据集。
我们完成了电子书的预处理任务。 但是我们无法完成与埃涅阿斯的强制对齐过程。
根据它的强制对齐教程,你需要一个文本文件和它录制的音频文件。在对电子书进行预处理时,我们创建了 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.
我想到了解决我的问题,并找到了解决方案。
我可以将 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 文件。