proarc / proarc

ProArc - The Production and Archiving System
GNU General Public License v3.0
15 stars 9 forks source link

chybí možnost importu source audio u zvukových dokumentů #1473

Open katerinasirova opened 2 years ago

katerinasirova commented 2 years ago

Při importu balíčku obsahujícího source audio a master copy audio (2 zvukové soubory *.wav) se objevila chyba načítání a tato hláška:

/home/proarc/.proarc/users/roglj/import/SV_11605_1/proarc_import/SV_11605_1_NMMLP00019-01-01-01.foxml cz.cas.lib.proarc.common.fedora.DigitalObjectConcurrentModificationException: PID: uuid:b07d42fa-fb44-4ac7-907e-e438d5dd2871, NDK_AUDIO_ARCHIVAL at cz.cas.lib.proarc.common.fedora.LocalStorage$LocalXmlStreamEditor.getDatastreamVersionType(LocalStorage.java:418) at cz.cas.lib.proarc.common.fedora.LocalStorage$LocalXmlStreamEditor.write(LocalStorage.java:374) at cz.cas.lib.proarc.common.fedora.BinaryEditor.write(BinaryEditor.java:165) at cz.cas.lib.proarc.common.imports.audio.WaveImporter.importArchivalCopy(WaveImporter.java:304) at cz.cas.lib.proarc.common.imports.audio.WaveImporter.consume(WaveImporter.java:120) at cz.cas.lib.proarc.common.imports.audio.SoundRecordingImport.consumeFileSet(SoundRecordingImport.java:122) at cz.cas.lib.proarc.common.imports.audio.SoundRecordingImport.consumeFileSets(SoundRecordingImport.java:103) at cz.cas.lib.proarc.common.imports.audio.SoundRecordingImport.start(SoundRecordingImport.java:90) at cz.cas.lib.proarc.common.imports.ImportProcess.start(ImportProcess.java:228) at cz.cas.lib.proarc.common.imports.ImportProcess.run(ImportProcess.java:199) at cz.cas.lib.proarc.common.imports.ImportDispatcher$ExceptionHandlingTask.run(ImportDispatcher.java:121) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

PA podle konfiguračního souboru v tuto umožňuje nastavit jen NDK_AUDIO_ARCHIVAL a NDK_AUDIO_USER.

Viz: https://github.com/proarc/proarc/wiki/Konfigurace#zvuk-import V souboru profile.soundrecording.cfg je komletní definice nového importu. Ukázka tohoto dokumentu je přebrána z Národního Muzea. import.requiredDatastreamId=NDK_AUDIO_ARCHIVAL, NDK_AUDIO_USER import.ndkaudiopage.modelId=model:ndkaudiopage import.page.modelId=model:page import.ndk_audio_archival.file.suffix=.wav import.ndk_audio_user.file.suffix=.mp3 import.ndk_archival.file.suffix=.mc.jp2 import.ndk_user.file.suffix=.uc.jp2 import.alto.file.suffix=.xml import.alto.file.version=3.0 import.text_ocr.file.suffix=.txt import.create.models_hierarchy=true

Ale v DMF Gramofonové desky verze 0.5, která je teď platná je napsáno u výstupů digitalizace, že SA=source audio (zvukový soubor bez úpravy) je povinný a MCA - mastercopy_audio je nepovinný soubor, ale je možné ho použít.

Viz: https://old.ndk.cz/standardy-digitalizace/DMF_gramodesky_0.5.pdf 2 Výstupy digitalizace

  1. Původní neupravené zvukové soubory (WAV, 96kHz, 24bit) – source_audio (SA) 1.1. jedna či více skladeb (soundrecording) či částí skladeb (soundpart) nacházejících se na zvukovém dokumentu (na jedné či více gramofonových deskách) 1.2. bez úprav, bez použití ekvalizačních křivek 1.3. parametry pro SA vycházejí z metodiky pro digitalizaci https://docs.google.com/document/d/15iRU-77WKsR9jfHinH3s6jPhda_a9BwENnb16beRaQg/edit a z doporučení pro digitalizaci zvukových dat NDK dostupného zde: http://www.ndk.cz/standardy-digitalizace/standardy-pro-zvukova-data 1.4. povinné 1.5. ekvivalentní pojmy: flat audio, preservation master

  2. Archivní kopie zvukových souborů (např. WAV) – mastercopy_audio (MCA) 2.1. kopie odvozená ze source_audio 2.2. jedna či více skladeb (soundrecording) či částí skladeb (soundpart) nacházejících se na zvukovém dokumentu (na jedné či více gramofonových deskách) 2.3. nepovinné – v případě, že se nebude od SA ničím lišit, zachová se pouze SA, MCA je nepovinné (kvůli objemu dat) 2.4. ekvivalentní pojmy: remaster, production master

ZdenkaSera commented 2 years ago

@katerinasirova Z Vašeho popisu soudím, že to považujete za chybu, nikoli za návrh na rozšíření - prosím, mohla byste to upřesnit, resp. přidat odpovídající label? Moc děkuji.

SykoraLukas commented 1 year ago

Vzhledem k tomu, že za půl roku nikdo nepřidal label "Chyba", tedy není to urgentní, považuji toto issue za návrh na rozšíření.

katerinasirova commented 1 year ago

Protože to bylo v době, kdy jsem neměla možnost přidat labely, tak se omlouvám label měním na "Chyba". Na toto issue jsem úplně zapomněla, omlouvám se. Protože se jedná o implementaci standardu, tak za mě je to chyba, že není možné do ProArcu nahrát jak SA, tak MCA. Ve většině případech při popisu zvukových dokumentů to není třeba, ale už při první vlně zpracování jsme na jeden případ narazili a nedokážeme odhadnout, kolik jich bude. Zvukové dokumenty zpracováváme vždy nárazově v rámci projektů do VISK7. Pokud bude třeba, můžeme to přímo probrat s @SykoraLukas.

SykoraLukas commented 1 year ago

Bude vyřešeno s upgradem NDK standardu

SykoraLukas commented 1 year ago

Nuntá konfigurace (https://github.com/proarc/proarc/wiki/Konfigurace#zvuk-import)

svetlym commented 11 months ago

Koukám na konfiguraci a nejsem si jistej, co přesně nám z ní chybí:

import.requiredDatastreamId=NDK_AUDIO_ARCHIVAL, NDK_AUDIO_USER
import.ndkaudiopage.modelId=model:ndkaudiopage
import.page.modelId=model:page
import.ndk_audio_archival.file.suffix=.wav
import.ndk_audio_user.file.suffix=.mp3
# (4.1) import.ndk_audio_source.file.suffix=.sa.wav
import.ndk_archival.file.suffix=.mc.jp2
import.ndk_user.file.suffix=.uc.jp2
import.alto.file.suffix=.xml
import.alto.file.version=3.0
import.text_ocr.file.suffix=.txt
import.create.models_hierarchy=true

Nejpravděpodobnějš vypadá řádek # (4.1) import.ndk_audio_source.file.suffix=.sa.wav, ale to je komentář. Je možný, že jde o omyl a měly to bejt dva řádky? Tj.:

# (4.1)
import.ndk_audio_source.file.suffix=.sa.wav
SykoraLukas commented 11 months ago

Ano i ne. Ano z pohledu toho, že by toto mohlo být na 2 řádkách, ne z pohledu toho, že by nebylo rozlišitelné, co vše pro verzi 4.1 a co už bylo dříve.

Ve zkratce: do konfigurace si doplňte:

import.ndk_audio_source.file.suffix=.sa.wav

S tím, že koncovka samozřejmě může být taková, aby odpovídala požadavkům.

katerinasirova commented 11 months ago

Ahoj @SykoraLukas, mohl bys mi prosím popsat, jak mám postupovat, když potřebuji doplnit do již načtených zvukových nahrávek soubory source audio? Konfigurace je hotová, doplnila jsem do importní složky source audio, ale teď nevím, jak postupovat. Zatím máme na testu, tak to chci vyzkoušet. Díky

SykoraLukas commented 11 months ago

Je potřeba vybrat nový importní profil viz konfigurace (https://github.com/proarc/proarc/wiki/Konfigurace#dopln%C4%9Bn%C3%ADnahrazov%C3%A1n%C3%AD-datastream%C5%AF) Tímto profilem se doplní streamy k danému objektu. V importním okně následně jen vybereš tento profil a pustíš klasický import.

svetlym commented 11 months ago

Do proarc.cfg jsem doplnil:

profile.soundrecording_add_AC.label=Doplnění AC k LP
profile.soundrecording_add_AC.description=Doplnění AC ke zvukovému dokumentu
profile.soundrecording_add_AC.file=profile.soundrecording_add_AC.cfg

A v souboru profile.soundrecording_add_AC.cfg je:

# (4.1)
import.ndk_audio_source.file.suffix=.ac.wav

(Nastavení kakadu jsem tam nedal, protože doplňujeme jen wav.)

Je to takhle správně? Jak při importu určíme, ke kterýmu objektu se ten wav doplní?

SykoraLukas commented 11 months ago

Bohužel ne. Pro to nahrazování a doplňování streamů je nutne, aby se profil jmenoval profile. replace_stream_import

Jména konvence pak vychází z issue Nahrazování stran. Je požadováno, aby se soubor jmenoval {uuid}{sufix}. UUID definuje objekt, ke kterému na nahrává, suffix vychází z konfiguracnihou souboru a definuje stream, který se bude nahrávat.

Tento profil se používá pro všechny typy streamů napr audio, obraz - source, mc, uc. V případě nahrávání obrazu je komprese pomoci kakadu vyžádána.

svetlym commented 11 months ago

Stále se nám to nedaří zprovoznit.

V souboru proarc.cfg je:

# Importní profily
import.profiles=profile.default, profile.default_archive_import, profile.soundrecording_import, profile.replace_stream_import

profile.replace_stream_import.label=Náhrada nebo přidávání souborů
profile.replace_stream_import.description=Náhrada nebo přidávání souborů
profile.replace_stream_import.file=profile.replace_stream_import.cfg

V souboru profile.replace_stream_import.cfg je:

## Nastavení pro archivní kopii dle NDK.
# (2.0) Plná cesta spustitelného externího procesu.
processor.kdu_ac.exec=${KDU_EXEC}
# (2.0) Plná cesta k adresáři s knihovnami kdu. Nepovinné, pokud jsou knihovny dostupné pro tomcat.
processor.kdu_ac.environment.LD_LIBRARY_PATH=${KDU_LIBPATH}
# (2.0) Typ procesu.
processor.kdu_ac.type=kdu_compress
# (2.0) Parametry externího procesu.
processor.kdu_ac.arg=-quiet
processor.kdu_ac.arg=Cblk\={64\,64}
processor.kdu_ac.arg=Corder\=RPCL
processor.kdu_ac.arg=Stiles\={4096\,4096}
processor.kdu_ac.arg=Cprecincts\={256\,256}\,{256\,256}\,{128\,128}
processor.kdu_ac.arg=ORGtparts\=R
processor.kdu_ac.arg=Creversible\=yes
processor.kdu_ac.arg=Clayers\=1
processor.kdu_ac.arg=Clevels\=5
processor.kdu_ac.arg=Cmodes\={BYPASS}
processor.kdu_ac.arg=Cuse_sop\=yes
processor.kdu_ac.arg=Cuse_eph\=yes
processor.kdu_ac.arg=-double_buffering
processor.kdu_ac.arg=32
processor.kdu_ac.arg=-no_palette
# (2.0) Maximální očekávaná doba běhu procesu v ms; 0 - znamená že se čeká věčně; standardně se čeká 2 min.
processor.kdu_ac.timeout=120000
# (2.0) počet pokusů opětovného spuštění procesu, pokud skončil neočekávaně; standardně 0
processor.kdu_ac.retry=1

## Nastavení pro uživatelskou kopii dle NDK.
# (2.0) Plná cesta spustitelného externího procesu.
processor.kdu_uc.exec=${KDU_EXEC}
# (2.0) Plná cesta k adresáři s knihovnami kdu. Nepovinné, pokud jsou knihovny dostupné pro tomcat.
processor.kdu_uc.environment.LD_LIBRARY_PATH=${KDU_LIBPATH}
# (2.0) Typ procesu.
processor.kdu_uc.type=kdu_compress
# (2.0) Parametry externího procesu.
processor.kdu_uc.arg=-quiet
processor.kdu_uc.arg=Cblk\={64\,64}
processor.kdu_uc.arg=Corder\=RPCL
processor.kdu_uc.arg=Stiles\={1024\,1024}
processor.kdu_uc.arg=Cprecincts\={256\,256}\,{256\,256}\,{128\,128}
processor.kdu_uc.arg=ORGtparts\=R
processor.kdu_uc.arg=-rate
processor.kdu_uc.arg=0.8
#processor.kdu_uc.arg=Creversible\=no
processor.kdu_uc.arg=Clayers\=12
processor.kdu_uc.arg=Clevels\=5
processor.kdu_uc.arg=Cmodes\={BYPASS}
processor.kdu_uc.arg=-no_palette
# (2.0) Maximální očekávaná doba běhu procesu v ms; 0 - znamená že se čeká věčně; standardně se čeká 2 min.
processor.kdu_uc.timeout=120000
# (2.0) počet pokusů opětovného spuštění procesu, pokud skončil neočekávaně; standardně 0
processor.kdu_uc.retry=1

# (4.1)
import.ndk_audio_source.file.suffix=.ac.wav

Zkoušeli jsme importovat soubor s koncovkou .ac.wav a pro jistotu i .sa.wav, chyby to hlásí následující:

Caused by: java.lang.IllegalStateException: Neznamy stream pro soubor
"ca5ccf84-123e-4cb7-a1ec-ff34b138eaff.SA.wav"

respektive

Caused by: java.lang.IllegalStateException: Neznamy stream pro soubor
"5881d0b0-4b4a-4c4f-ade9-954e7f221482.AC.wav"

Možná je to case sensitive a soubor musí mít koncovku .ac.wav?

Nejsme si taky jisti, jestli máme použít uuid stránky, ke který wav přidáváme, nebo kořenový uuid zvukovýho dokumentu.

SykoraLukas commented 11 months ago

1) Ano je to case sensitive.

2) Jaké uuid zadáte, k tomu objektu se to bude zkoušet naimportovat.