Title | SO4 Audio mp3 to wav Migration and QA Workflow |
Detailed description | Informally the workflow is as follows: SB currently owns a small collection of real audio filer files (digitised cd’s). They are part of the Danish publications that SB preserves. The rest of the Danish cd collection is in WAV. This format has been chosen as the preservation format as this is a raw format, which needs less interpretation or fewer layers of interpretation to be understood by humans and it is also a robust format. The Danish Radio Broadcast mp3 files from the mp3 (128kbit) with Danish Radio broadcasts dataset are also to be migrated to WAV according to policy. The actual migration will be done using FFmpeg which is one of the SCAPE Action Services recommended tools. The QA will be split into a number of steps. The first step is validation that the migrated file is a correct file in the wanted format. This is done using JHOVE2 to analyse and provide a JHOVE2 property xml file, and next using a Beanshell in Taverna to check that the jhove2 feature “isValid” is true. The second step compares the header information properties of the original and the migrated files to see if they are ‘close enough’. This is done using FFprobe to extract header information and Taverna Beanshells to compare the extracted properties. Another step could be to extract more properties by ‘playing’ the two files. The third step uses an analysis tool comparing the sound waves. To do this we have to ‘play’ or interpret the mp3 files. Just as a human needs to ‘play’ or interpret the files to hear the sound. A human cannot look at fileA and tell if it is correct or corrupted. We choose a player P and define ‘fileA played on player P’ to be correct. A small randomly chosen subset of files will be played on player P and checked by human ears to be correct making this definition probable. The player used in this workflow is MPG321. Note that MPG321 is an independent implementation of an mp3-decoder – thus independent from FFmpeg, which is used to actually migrate the file. The result of playing fileA on player P (when noone is listening) is a WAV file. The migrated file is already a WAV file, and we can compare the two files using the analysis tool xcorrSound/migrationQA, see SO2 xcorrSound QA audio comparison tool.. All the used tools are wrapped as SCAPE Web Services and Taverna Workflows. In short:
|
Solution Champion |
Bolette Jurik![]() |
Corresponding Issue(s) |
|
myExperiment Links |
The full workflow is MP3 to WAV Migration +QA![]()
|
Tool Registry Links |
The workflow uses the following tools |
Evaluation |
This Migration and QA solution has been developed as a Taverna workflow using web services. This puts focus on availability rather than scalability. The sparse tests run i February 2012 have also been run through Taverna. TODO IN DIRE NEED OF AN UPDATE!!! We tested the Mp3 to Wav Migrate Validate Compare Workflow on file P1_1000_1200_890106_001.mp3 from the mp3 (128kbit) with Danish Radio broadcasts testbed dataset. The file is 112 Mbyte and the duration is 2 hours, 2 minutes and 5.23 seconds. The workflow was run from Taverna on a local work station using the web services deployed on the SB iapetus test machine. The total time for the workflow is 2.3 minutes, and the most expensive nested workflow is the JHove2Validate workflow with 1.3 minutes, closely followed by the FFmpegMigrate workflow with 59.2 s. The FFprobeExtractCompare workflow with 12.9 seconds seems to be the cheaper QA in this set-up. The result of the workflow is a migrated WAV file, and a report that it is valid and that the extracted properties have been preserved. Running the workflow on 4 additional files from the dataset gave similar results of between 2.2 and 2.3 minutes, valid migrated WAV files and properties preserved. The 6th test run also gave a result wav file, but we could not hear the file, and neither JHOVE2 or FFprobe was able to read the file. Interestingly the nested FFprobe workflow failed, while the nested JHove2 workflow finished, but without output. At the intermediate values, we see the JHOVE2 SCAPE web service is unable to read the migrated file. This raises a question of error handling in the Taverna workflows. The nice feature is that in this layered approach, it is still easy to pinpoint where the error originated, but we may want to look at more consistent error handling. Maybe the workflow should not fail in this case, but rather give meaningful output about a failed web service or beanshell. We note that we are working on 2-hour sound files. The average file size of the original mp3 files is only 118Mb, but the migrated wav files are approximately 1.4Gb. This means we can probably not hope to improve much on the performance of the actual FFmpeg migration of the individual files. The mp3 (128kbit) with Danish Radio broadcasts collection is 20 TB and around 150000 files. This means that running the basic workflow migrations sequentially on the test machine would take around 300 days. We can however hope to improve by using the Scape execution platform instead of doing the migrations sequentially. The migrationQA workflow was tested separately, see SO2 xcorrSound QA audio comparison tool. The full MP3 to WAV Migration + QA workflow has been tested on a shorter file using the ONB webservices. The input mp3 file was the Creative Commons example file http://ia700308.us.archive.org/21/items/Radiators2008-09-19/Rads2008-19-09-d1t02_vbr.mp3. ![]() ![]() block 1: 0.999998 1152 block 2: 1 1152 block 3: 1 1152 block 4: 1 1152 block 5: 1 1152 block 6: 1 1152 block 7: 1 1152 block 8: 1 1152 block 9: 1 1152 block 10: 1 1152 block 11: 1 1152 block 12: 1 1152 block 13: 1 1152 block 14: 1 1152 block 15: 1 1152 block 16: 1 1152 block 17: 1 1152 block 18: 1 1152 block 19: 1 1152 block 20: 1 1152 block 21: 1 1152 block 22: 1 1152 block 23: 1 1152 block 24: 1 1152 block 25: 1 1152 block 26: 1 1152 block 27: 1 1152 block 28: 1 1152 block 29: 1 1152 block 30: 1 1152 block 31: 1 1152 block 32: 1 1152 block 33: 1 1152 block 34: 1 1152 block 35: 1 1152 block 36: 1 1152 block 37: 1 1152 block 38: 1 1152 block 39: 1 1152 block 40: 1 1152 block 41: 1 1152 block 42: 1 1152 block 43: 1 1152 block 44: 1 1152 block 45: 0.999999 1152 block 46: 0.999978 1152 The solution performs as expected and solves the corresponding issue,but further testing for accuracy and performance is required. |
Labels:
None