Timeting هي مكتبة لمحاذاة النصوص النصية مع الصوت. يمكنك تقديم ملف صوتي ، بالإضافة إلى ملف نصي مع النص النص الكامل. سيقوم TimeThing بإخراج قائمة من الرموز الزمنية لكل كلمة وشخصية تشير إلى متى تم التحدث بهذه الكلمة أو الرسالة في الصوت الذي قدمته. يسعى Timeting إلى أن يكون سريعًا ودقيقًا ، ويمكن أن يعمل على كل من وحدات معالجة الرسومات أو وحدات المعالجة المركزية.
يستخدم Timething نماذج التعرف على الكلام القائمة على WAV2VEC التي تستضيفها مجتمع AI AI المعانقة. تم وصف النهج في هذا البرنامج التعليمي Pytorch ، وكذلك في هذه الورقة.
لتثبيت هذا الوقت ، ستحتاج إلى تثبيت 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
يمكن أن يتوافق هذا الوقت على مجموعة بيانات من قصاصات الصوت مستوى الكلام مع نسخ النص. هذا مفيد بشكل خاص في إعداد التعلم الآلي ، حيث يمكن استخدام هذا الوقت لتنظيف مجموعات البيانات.
يتوقع الوقت حاليًا العثور على مجلد يحتوي على فصول واحدة أو أكثر في النموذج التالي:
└── 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" ، والتي تحتوي فقط على كلمة "One" ، مثل:
{
"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النتائج في هذا المثال مكتوبة في ~/أصغر تسجيلات.
يمكن العثور على اللغات المدعومة حاليًا في النماذج. ويشمل ذلك حاليًا اللغة الإنجليزية والألمانية والهولندية والبولندية والإيطالية والبرتغالية والإسبانية والفرنسية والروسية واليابانية واليونانية والعربية. لقد اختبرنا فقط النموذج الألماني حتى الآن.
نظرًا للعدد الكبير من نماذج الكلام CTC المتوفرة على مجتمع AI Face ، يمكن إضافة لغات جديدة بسهولة إلى الوقت. بدلاً من ذلك ، يمكن ضبط WAV2VEC كما هو موضح هنا ، باستخدام أي من اللغات الصوتية المشتركة ، 87 وقت كتابة هذا التقرير.
يعد دعم تنظيف النص ضئيلًا حاليًا ، وقد يلزم تمديده للغات الجديدة.
هناك العديد من المكتبات الناضجة التي يمكن أن تقوم بالفعل بالتوافق القسري مثل الوقت ، مثل Montreal القسري Aligner أو Aeneas. يتم الحفاظ على قائمة واحدة من الأدوات هنا.
بفضل سبب قيام الطيور بالسماح للعمل الأولي في هذه المكتبة بفتح من مصادر.