Timething은 텍스트 전사를 오디오와 정렬하기위한 라이브러리입니다. 완전한 텍스트 전사가 포함 된 텍스트 파일뿐만 아니라 오디오 파일을 제공합니다. Timething은 제공 한 오디오 에서이 단어 나 문자가 말한시기를 나타내는 각 단어와 문자에 대한 시간 코드 목록을 출력합니다. Timething은 빠르고 정확하기 위해 노력하며 GPU 또는 CPU에서 실행할 수 있습니다.
Timething은 Hugging Face AI 커뮤니티가 주최하는 강력한 WAV2VEC 기반 음성 인식 모델을 사용합니다. 이 접근법은이 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은 발화 레벨 오디오 스 니펫 데이터 세트를 텍스트 전사와 정렬 할 수 있습니다. 이것은 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"이라는 단어 만 포함하는 "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이 예제의 결과는 ~/작은 녹음으로 기록됩니다.
현재 지원되는 언어는 Models.yaml에서 찾을 수 있습니다. 여기에는 현재 영어, 독일, 네덜란드, 폴란드어, 이탈리아, 포르투갈어, 스페인어, 프랑스어, 러시아어, 일본어, 그리스어 및 아랍어 모델이 포함됩니다. 우리는 지금까지 독일 모델 만 테스트했습니다.
Hugging Face AI 커뮤니티에서 사용할 수있는 많은 CTC 음성 모델로 인해 새로운 언어를 Timething에 쉽게 추가 할 수 있습니다. 또는 WAV2VEC는 글을 쓰는 시점에 일반적인 음성 언어를 사용하여 여기에 설명 된대로 미세 조정할 수 있습니다.
텍스트 청소 지원은 현재 최소화되어 있으며 새로운 언어에 대해 확장해야 할 수도 있습니다.
몬트리올 강제 조정기 또는 Aeneas와 같은 Timething과 같은 강제 정렬을 할 수있는 많은 성숙한 라이브러리가 있습니다. 도구의 한 목록이 여기에서 유지됩니다.
이 라이브러리의 초기 작업을 공개적으로 공급할 수 있도록 새들이 왜 조류에게 감사합니다.