ELAN-Сегментации
Новые перспективы до сегментации
Сейчас мы большесвто материала сегментироваем руком, и я вижу что часто у нашим файлов есть так многи говорющи что автоматические методы не работают так хорошо. В этого блог люди недавно говорили об один метода с программа Praat. Я тоже ему пробывал сегодня, да в принципе он дал ресултатов который не плохие.
https://blogs.soas.ac.uk/elar/2017/06/15/elanpraat-machine-segmenting/
А как я вижу, часть работы после импортизавия до ЭЛАН есть немного трудный, и есть очень лёгки сделать ошыбки в этого степена. Мы ранше говорили об это Pympi библиотека для Python, и я пробывал с ему импортировать Praat TextGrid файля в маниере более автоматические.
import pympi # We have to define somehow who is the principal speaker and who are the others # Надо как нибыд сохранить информация об это кто принципальный говорющи, для этого что все сегменты будут в одну слою main_speaker = ['ZPF-F-1926'] other_speakers = ['NTP-M-1986', 'MSF-F-1968'] # Here we give the Praat file # Здесь надо дать Praat файль praat_file = pympi.TextGrid(file_path="kpv_izva20160622-04-b16.TextGrid") segment_file = praat_file.to_eaf() elan_file = pympi.Elan.Eaf(file_path=None, author='Niko Partanen') # Here we add types and other nonrecursive stuff # Здесь у нас типы и другие который только раз надо elan_file.add_linguistic_type(lingtype='refT', timealignable=True, graphicreferences=False) elan_file.add_linguistic_type(lingtype='orthT', timealignable=False, graphicreferences=False, constraints='Symbolic_Association') elan_file.add_linguistic_type(lingtype='wordT', timealignable=False, graphicreferences=False, constraints='Symbolic_Subdivision') elan_file.add_linguistic_type(lingtype='posT', timealignable=False, graphicreferences=False, constraints='Symbolic_Subdivision') elan_file.add_linguistic_type(lingtype='lemmaT', timealignable=False, graphicreferences=False, constraints='Symbolic_Subdivision') elan_file.add_linguistic_type(lingtype='morphT', timealignable=False, graphicreferences=False, constraints='Symbolic_Subdivision') elan_file.add_language(lang_def='http://cdb.iso.org/lg/CDB-00131321-001', lang_id='kpv', lang_label='Komi-Zyrian (kpv)') # This is a function for adding speakers # С этом метхода можем каждый говорющии сохранить def add_speaker(elan_file, participant): elan_file.add_tier(tier_id='ref@' + participant, ling='refT') elan_file.add_tier(tier_id='orth@' + participant, ling='orthT', parent='ref@' + participant) elan_file.add_tier(tier_id='word@' + participant, ling='wordT', parent='orth@' + participant, language='kpv') for participant in main_speaker + other_speakers: add_speaker(elan_file, participant) # We copy here the content of tier "silences" and merge that with the wanted upper level tier # Здесь копируемся материаль из этого новая слоя и сливаемся эту с который нам надо segment_file.copy_tier(elan_file, 'silences') elan_file.merge_tiers(tiers=['silences', 'ref@' + ''.join(main_speaker)], tiernew = 'ref@' + ''.join(main_speaker)) # These tiers are not needed # Эти слой нам не надо, удалимся elan_file.remove_tiers(['default', 'silences']) # Media file # Медиа файль elan_file.add_linked_file('kpv_izva20160622-04.wav') # Here we write the file # Сохранямся файль elan_file.to_file(file_path="kpv_izva20160622-04.eaf")
Конечно тоже после этого есть очень много работа, сегментации все в одну слой, много надо изменить, а можем быть это помогит, посмотрим.