Timething เป็นไลบรารีสำหรับจัดเรียงข้อความการถอดเสียงด้วยเสียง คุณมีไฟล์เสียงรวมถึงไฟล์ข้อความที่มีการถอดเสียงข้อความที่สมบูรณ์ Timething จะส่งออกรายการรหัสเวลาสำหรับแต่ละคำและตัวละครที่ระบุว่าเมื่อคำหรือตัวอักษรนี้ถูกพูดในเสียงที่คุณให้ไว้ Timething พยายามอย่างรวดเร็วและแม่นยำและสามารถทำงานบน GPU หรือ CPU
Timething ใช้โมเดลการจดจำคำพูดที่ใช้ WAV2VEC ที่ทรงพลังซึ่งโฮสต์โดย Hugging Face Community วิธีการนี้อธิบายไว้ในบทช่วยสอน 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 บางอย่างคาดว่าจะหาโฟลเดอร์ที่มีหนึ่งบทขึ้นไปในรูปแบบต่อไปนี้:
└── 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
ตอนนี้คุณสามารถเรียกใช้ timething บน CPU หรือ GPU ของคุณได้เช่น:
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ผลลัพธ์ในตัวอย่างนี้ถูกเขียนลงใน ~/บันทึกที่เล็กลง
ภาษาที่รองรับในปัจจุบันสามารถพบได้ใน models.yaml ในปัจจุบันรวมถึงภาษาอังกฤษ, เยอรมัน, ดัตช์, โปแลนด์, อิตาลี, โปรตุเกส, สเปน, ฝรั่งเศส, รัสเซีย, ญี่ปุ่น, กรีกและอาหรับ เราได้ทดสอบรุ่นเยอรมันเท่านั้น
เนื่องจากโมเดลคำพูด CTC จำนวนมากที่มีอยู่ในชุมชน Hugging Face AI จึงสามารถเพิ่มภาษาใหม่ให้กับ Timething ได้อย่างง่ายดาย อีกทางเลือกหนึ่งคือ WAV2VEC สามารถปรับแต่งได้ตามที่อธิบายไว้ที่นี่โดยใช้ภาษาเสียงทั่วไปใด ๆ 87 ในเวลาที่เขียน
การสนับสนุนสำหรับการทำความสะอาดข้อความมีน้อยที่สุดและอาจต้องขยายสำหรับภาษาใหม่
มีห้องสมุดที่เป็นผู้ใหญ่หลายแห่งที่สามารถจัดตำแหน่งบังคับได้เช่น timething เช่น timething เช่น montreal forced alligner หรือ aeneas รายการเครื่องมือหนึ่งรายการได้รับการดูแลที่นี่
ต้องขอบคุณทำไมนกที่อนุญาตให้งานเริ่มต้นในห้องสมุดนี้เปิดแหล่งที่มา