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)進行微調,如此處所述進行微調。
目前對文本清潔的支持很少,並且可能需要擴展到新語言。
有許多成熟的圖書館已經可以進行強迫對準,例如稍微騰騰的圖書館,例如蒙特利爾強迫對準者或埃涅阿斯。這裡保留了一個工具列表。
多虧了為什麼鳥類允許在該圖書館上的最初工作進行開源。