Timething - это библиотека для выравнивания текстовых транскриптов с аудио. Вы предоставляете аудиофайл, а также текстовый файл с полной текстовой стенограммой. Timething выведет список временных кодов для каждого слова и символа, которые указывают, когда это слово или буква было произнесено в предоставленном вами аудио. Timething стремится быть быстрым и точным и может работать как на графических процессорах, так и на процессорах.
Timething использует мощные модели распознавания речи на основе WAV2VEC, организованные сообществом AGRIGING FACE AI. Подход описан в этом уроке Pytorch, а также в этой статье.
Чтобы установить Timething, вам понадобится установка Python 3.7 или 3.8. Затем вы можете установить его с помощью PIP:
pip install timethingЕсть много случаев, когда вы можете захотеть выравнивать длинный аудиоконтент с соответствующей транскрипцией. Например, вы можете выровнять подкаст с его транскрипцией. Эпизод может длиться несколько часов, а транскрипция дается подкастером. В другом случае вы можете выровнять аудиокнигу с его написанным текстом.
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 может выравнивать набор данных аудиоуправления уровня высказывания с их текстовыми транскрипциями. Это особенно полезно в условиях машинного обучения, где можно использовать Timethute для очистки наборов данных.
В настоящее время ожидается найти папку, содержащую одну или несколько глав в следующей форме:
└── dir/
├── text.csv
├── aligned/
└── audio/
├── chapter01.mp3
├── chapter02.mp3
└── chapter03.mp3
Тимтовые могут обрабатывать много аудио форматов, включая 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
Теперь вы можете запустить, например, на своем процессоре или графическом процессоре:
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 . Они будут записаны в один файл 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Результаты в этом примере записаны в ~/меньшие записи.
В настоящее время поддерживаемые языки можно найти в моделях.yaml. В настоящее время это включает в себя английский, немецкий, голландский, польский, итальянский, португальский, испанский, французский, русский, японский, греческий и арабский. Мы до сих пор тестировали немецкую модель.
Из -за большого количества речевых моделей CTC, доступных на сообществе AIG, новые языки могут быть легко добавлены в Timething. В качестве альтернативы, WAV2VEC может быть точно настроен, как описано здесь, используя любой из общих языков голоса, 87 на момент написания.
Поддержка очистки текста в настоящее время минимальна, и, возможно, потребуется расширить для новых языков.
Есть много зрелых библиотек, которые уже могут сделать выравнивание, например, Timething, например, Montreal Arecued Aligner или Aeneas. Один список инструментов поддерживается здесь.
Благодаря тому, почему птицы за то, что они разрешили первоначальную работу над этой библиотекой быть открытыми.