TimEthing是将文本成绩单与音频对齐的库。您提供一个音频文件以及带有完整文本成绩单的文本文件。 TimEthing将输出每个单词和字符的时间编码列表,该列表指示您在提供的音频中使用此单词或字母何时。 Timething努力快速准确,并且可以在GPU或CPU上进行运行。
Timething使用了基于WAV2VEC的强大语音识别模型,该模型由拥抱面对AI社区主持。该方法在本Pytorch教程以及本文中描述了。
要安装TimEthing,您需要安装Python 3.7或3.8。然后,您可以使用PIP安装它:
pip install timething在许多情况下,您可能想将长音频内容与相应的成绩单对齐。例如,您可能想将播客与其转录对齐。这一集可能需要几个小时,而转录由PodCaster给出。在另一种情况下,您可能需要将一本音频书与书面文字保持一致。
timething align-long
--audio-file fixtures/audio/keanu.mp3
--transcript-file fixtures/keanu.cleaned.txt
--alignments-dir aligned
--batch-size 10
--n-workers 5
TimEthing可以将语音级别音频片段的数据集与其文本抄录相一致。这在机器学习设置中特别有用,可以使用Timething来清理数据集。
Timething目前希望以以下形式找到一个包含一个或多个章节的文件夹:
└── dir/
├── text.csv
├── aligned/
└── audio/
├── chapter01.mp3
├── chapter02.mp3
└── chapter03.mp3
TimEthing可以处理许多音频格式,包括MP3,WAV,FLACC和OGG/Vorbis。
文件text.csv应以以下格式包含每个WAV文件的一个条目:
audio/chapter01.mp3|The transcript for chapter01 on a single line here
audio/chapter02.mp3|The transcript for chapter02 on a single line here
audio/chapter03.mp3|The transcript for chapter03 on a single line here
例如,您可以在CPU或GPU上运行timething,例如:
timething align-short --metadata text.csv --alignments-dir aligned您还可以指定更多选项,例如:
timething align-short
--language german
--metadata text.csv
--alignments-dir aligned
--batch-size 8
--n-workers 8运行timething --help以进行完整描述。
结果将写入给定的文件夹中,例如aligned 。它们将写入以每个音频ID命名的单个JSON文件中。每个文件将包含字符级别和单词级别对齐。对于单词级别的对齐,每个单词都将在几秒钟内的起始时间,几秒钟内结束时间,该单词的置信度和单词标签。字符级别对准具有相应的结果。
您可以在fixtures/ 。这是仅包含“一个”一词的“ One.mp3”的对齐方式,看起来像:
{
"n_model_frames" : 72 ,
"n_audio_samples" : 23392 ,
"sampling_rate" : 16000 ,
"chars" : [
{
"label" : " O " ,
"start" : 0.5888611111111111 ,
"end" : 0.6497777777777777 ,
"score" : 0.9999777873357137
},
{
"label" : " n " ,
"start" : 0.6497777777777777 ,
"end" : 0.7106944444444444 ,
"score" : 0.99994424978892
},
{
"label" : " e! " ,
"start" : 0.7106944444444444 ,
"end" : 0.731 ,
"score" : 0.9999799728393555
}
],
"chars_cleaned" : [
{
"label" : " o " ,
"start" : 0.5888611111111111 ,
"end" : 0.6497777777777777 ,
"score" : 0.9999777873357137
},
{
"label" : " n " ,
"start" : 0.6497777777777777 ,
"end" : 0.7106944444444444 ,
"score" : 0.99994424978892
},
{
"label" : " e " ,
"start" : 0.7106944444444444 ,
"end" : 0.731 ,
"score" : 0.9999799728393555
}
],
"words" : [
{
"label" : " One! " ,
"start" : 0.5888611111111111 ,
"end" : 0.731 ,
"score" : 0.9999637263161796
}
],
"words_cleaned" : [
{
"label" : " one " ,
"start" : 0.5888611111111111 ,
"end" : 0.731 ,
"score" : 0.9999637263161796
}
]
}运行对齐后,您可以将文件切成较小的文件,并将结果写入新文件夹。例如,如果您不希望任何录音超过8秒,那么您可以创建一个新目录并将数据重新列入此类目录:
timething recut
--from-metadata text.csv
--to-metadata ~ /smaller-recordings/text.csv
--alignments-dir alignments
--cut-threshold-seconds 8.0在此示例中的结果写入〜/较小的录制中。
当前支持的语言可以在型号中找到。目前,其中包括英语,德语,荷兰,波兰,意大利语,葡萄牙语,西班牙语,法语,俄语,日语,希腊语和阿拉伯模型。到目前为止,我们仅测试了德国模型。
由于拥抱面对AI社区上可用的CTC语音模型大量,因此可以轻松添加新语言。另外,可以使用任何常见语音语言(在写作时87)进行微调,如此处所述进行微调。
目前对文本清洁的支持很少,并且可能需要扩展到新语言。
有许多成熟的图书馆已经可以进行强迫对准,例如稍微腾腾的图书馆,例如蒙特利尔强迫对准者或埃涅阿斯。这里保留了一个工具列表。
多亏了为什么鸟类允许在该图书馆上的最初工作进行开源。