Sei sulla pagina 1di 14

“Progetto Mushroom” step 1: Rifasatore

 
Questo documento serve a documentare le varie fasi di avanzamento dello sviluppo del 
“Rifasatore”, applicazione MacOS per la segmentazione e rifasatura di file audio derivati dalla 
presa diretta. 
 
 
Indice 
 
Avanzamento “Progetto Mushroom” step 1: Rifasatore 
Overview di progetto 
Task 1 ­ Core 
Task 2 ­ MacOS app 
Avanzamento 
Punti da chiarire “Progetto Mushroom” step 1: Rifasatore 
Massima lunghezza delle singole tracce 
I bit per sample possono essere anche 32? 
Statistiche (e.g. mean, run_avg..) castate sempre a int 
In BoomSelector.SelectBoom normalizzazione fatta ma non utilizzata 
In BoomSelector.SelectBoom usa startIndex ed endIndex calcolati sul primo file anche 
per gli altri 
Parte oscura nel matlab Ciak_Detector:96 in poi 
Piccoli errori in matlab sugli indici 
Studio di fattibilità “Progetto Mushroom” step 1: Rifasatore 
Analisi Rifasatore matlab 
Analisi libreria AAF della Advanced Media Workflow Association 
Analisi tecnica 
Analisi software e librerie di trascrizione audio 
Workflow ipotizzato 
Analisi dei componenti del workflow 
 
 
Avanzamento “Progetto Mushroom” step 1: Rifasatore
 
 
 
 

Overview di progetto
 

Task 1 - Core
● Sviluppo core “Rifasatore” 
● Documentazione codice, funzionalità, parametri 
● Testing 
 
 

Task 2 - MacOS app


● Sviluppo applicazione desktop Mac os 
○ open files 
○ protocollo con core “Rifasatore” 
○ log 
○ UI 
○ visualizzazione files audio 
○ play files audio 
● Definizione integrazione con core “Rifasatore” 
● Parametri di configurazione 
● Documentazione codice e funzionalità 
● Testing 

 
 
 
 
 
 
 
 
 
 
 
Avanzamento
● Week 1 ­ 2 (11 ­ 22/5/2015) 
○ Analisi requisiti di retrocompatibilità MacOS  (10.7+) e scelta della piattaforma 
■ Analisi Mono e MonoMac (​
http://www.mono­project.com/​
): Mono viene 
utilizzato in applicazioni native desktop e presenta una interfaccia nativa 
in ogni piattaforma, quindi quello che l'utilizzatore vedrà non sarà 
differente da una app sviluppata con AppKit. 
■ Piena compatibilità da 10.7 a 10.10 
■ Si programma in C# sia su Mac che Windows linguaggio sempre più 
diffuso e adottato 
(​
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html​

○ Analisi codice MatLab e inizio implementazione in C# delle funzionalità di 
apertura files e lettura informazioni relative al BWF 
○ Logica di scelta dei files in base al prefisso del nome 
● Week 3 ­ 4 (25/5 ­ 5/6/2015) 
○ Porting codice MatLab fino a CiakDetector 
○ App desktop adesso propone un Open Files dialog ed è stata implementata la 
logica di caricamento dei files e passaggio del percorso del set di files alla 
libreria core Rifasatore 
 
 
 
 
 
   
Punti da chiarire “Progetto Mushroom” step 1: Rifasatore

1. Massima lunghezza delle singole tracce


La lunghezza delle singole tracce può superare le 4 ore?  

2. I bit per sample possono essere anche 32?

3. Statistiche (e.g. mean, run_avg..) castate sempre a int


Non si possono usare nel loro formato naturale float? Il cast non sembra avere senso 

4. In BoomSelector.SelectBoom normalizzazione fatta ma non utilizzata


In matlab Boom_Selector!! 

startIndex ed endIndex
5. In BoomSelector.SelectBoom usa ​
calcolati sul primo file anche per gli altri
In matlab Boom_Selector:16 c’è la variabile Max_add2 non usata 

6. Parte oscura nel matlab Ciak_Detector:96 in poi

7. Piccoli errori in matlab sugli indici


 
Studio di fattibilità “Progetto Mushroom” step 1: Rifasatore

Nicola Torpei, Walter Nunziati 
14­4­2015 
 
 
 
Lo studio oggetto di questo documento ha lo scopo di valutare la fattibilità e la complessità 
tecnica della realizzazione del software “Rifasatore”: applicazione desktop capace di 
automatizzare molti task delle lavorazioni audio relative al trattamento della presa diretta. 
 
Il software “core” analizzato è stato ideato e testato da Stefano Costantini su piattaforma 
Matlab e permette di rendere molto più accurato e rapido il trattamento dei materiali audio 
registrati sul Set. 
 
Il software consente il rifasamento automatico delle varie tracce e l'identificazione corretta dei 
parlanti. 
 
 
 
 
 
Elenco attività effettuate nello studio di fattibilità da Nicola Torpei e Walter Nunziati: 
 
1. Analisi files Matlab “Rifasatore” e definizione costo di sviluppo per la traduzione in 
software eseguibile (libreria C++) 
2. Analisi e test libreria AAF disponibile su Sourceforge 
3. Test di utilizzo di software per trascrizione audio e ipotesi di dimostratore 
4. Analisi del costo di sviluppo dell’applicazione definita dai requisiti forniti da Stefano 
Costantini 
 
 
 
 
 
Analisi Rifasatore matlab

I file forniti da Stefano Costantini sono i seguenti: 
 
● Rifasatore4.m 
● Funzioni 
○ Boom_Selector.m 
○ BWF_Parser.m 
○ Ciak_Detector.m 
○ Cross_Corr2.m 
○ Cross_Points.m 
○ File_Set.m 
○ iXML_Name.m 
○ Mic_Detector.m 
○ Mov_Avg.m 
○ RadioToRegions.m 
○ Region_Mean.m 
 
I file sono stati testati su Matlab fornendo in ingresso i seguenti set di file: 
 
● Set 1 
○ Z025001.A1.wav 
○ Z025001.A2.wav 
○ Z025001.A4.wav 
○ Z025001.A5.wav 
○ Z025001.A6.wav 
○ Z025001.A7.wav 
● Set 2 
○ Z025002.A1.wav 
○ Z025002.A2.wav 
○ Z025002.A4.wav 
○ Z025002.A5.wav 
○ Z025002.A6.wav 
○ Z025002.A7.wav 
 
 
 
 
 
Il software è capace di rifasare il file BOOM automaticamente riconosciuto rispetto alle singole 
tracce dei RADIO. 
 
Il risultato prodotto è: 
● Segmentazione del BOOM 
● Per ogni segmento, si avrà l’associazione con il relativo segmento del RADIO 
● Per coppia di segmenti corrispondenti si otterrà il relativo delay in samples da 
applicare al segmento BOOM. 
 
Step di esecuzione: 
● apre i file audio in modo automatico rispetto al nome 
● legge i metadata BWF per estrarre nomi dei file, e altre caratteristiche 
● comincia il processing a partire dalla traccia cercando di identificare il BOOM, al limite 
cercando di distinguerlo dal DOWNMIX 
● calcola l’ampiezza media di ogni file su intervalli di 250ms 
● MIC selector: per selezionare i RADIO 
● BOOM selector: distingue il BOOM dal premix 
● CIAK detector, usa Moving Average sul singolo file 
● Usa il CIAK sul BOOM come punto d’inizio per la ricerca delle regioni 
● Region selection usa la corrispondenza fra le medie mobili del BOOM 
● Cross_Corr2 produce in output gli effettivi samples di shift per la rifasatura 
 
 
 
 
 
 

Analisi libreria AAF della Advanced Media Workflow Association

Il componente core “Rifasatore” avrà bisogno di effettuare operazione di lettura e scrittura su 
file AAF. 
 
E’ stata quindi scelta la libreria AAF della Advanced Media Workflow Association, una libreria 
cross­platform capace di numerose operazioni sul formato AAF attualmente mantenuta dalla 
Advanced Media Workflow Association (​
http://www.amwa.tv​
). 
 
Lo stato attuale dalla libreria AAF risulta aggiornato ad Ottobre 2012, esiste anche un 
accesso a pagamento alle risorse della AMWA (​
http://www.amwa.tv/join.shtml​
) che potrebbe 
rendere disponibili materiali più aggiornati. La pagina principale dell’AAF SDK infatti recita: 
 
Additional information about current projects, samples files, validation tools etc. are 
available to Advanced Media Workflow Association ​
members​
. Contact the AMWA for 
more information. 
 
 
La libreria open source viene rilasciata sotto licenza AAF SDK PUBLIC SOURCE LICENSE 
AGREEMENT Version 2.0 
 
 

Analisi tecnica

Le operazioni principali sono quelle relative ai ​
Mobs​
 (Multimedia Objects): sono stati quindi 
analizzati alcuni tipi di Mobs come il ​
SourceMob​
 ed il realtivo ​
SourceClip​
 che rappresenta il 
collegamento al file audio oppure il ​
TimelineMobSlot​
 che descrive la struttura rappresentata 
dal sequencer come Traccia. 
 
AAF viene rilasciata sia come sorgente che come libreria compilata per debug e runtime per 
tutte le piattaforme (Windows, MacOS, Linux). 
 
Per questo studio di fattibilità è stata utilizzata la versione compilata per MacOS 
(Darwin­x86_64) scaricabile da qui: 
http://sourceforge.net/projects/aaf/files/AAF­devel­libs/1.1.6/AAF­devel­libs­x86_64Darwin­1.1
.6.0.tar.gz/download​
 (versione di riferimento 1.1.6.0 aggiornata il 29­10­2012) 
 
 
 
Test effettuati 
 
● Importazione dylib in progetto C++ su piattaforma MacOS (Darwin­x86_64) 
○ compatibilità verificata su MacOS X 10.9 e 10.10 
● Utilizzo delle librerie: 
○ libcom­api.dylib (libreria principale) 
○ libaafpgapi.dylib 
○ libaafintp.dylib 
● Compilazione esempi di lettura e scrittura di file AAF 
○ gli esempi sono stati scelti dalla versione sorgente della libreria scaricabile da 
http://sourceforge.net/projects/aaf/files/AAF­src/1.1.6/ 
○ Verifica delle principali API della libreria per leggere e scrivere file AAF 
 
 
Esecuzione AAFInfo.cpp con argomento il file fornito “Due_Tracce_Test.aaf” 
 
CompanyName          = "Digidesign, Inc." 
ProductName          = "ProTools" 
ProductVersionString = "10.3.3.111" 
ProductVersion       = 10.3.3­111 (Released) 
ProductID            = {319414F6­5852­4050­A4EB­981E643F33A2} 
Date                 = 2014­07­18 09:42:33.00 
RefImplVersion       = 1.1.0­0 (Unknown) 
Platform             = "Unix" 
GenerationID         = {27D9D555­69DE­11D2­B6BC­FCAB70FF7331} 
 
Number of Mobs       = 4 
 
Header::Version      = 1.1 
 
Header::ObjectModelVersion = 1 (recognized as kAAFRev2) 
 
Datadefs             = "Timecode" (recognized as Timecode) 
                      "Timecode" 
                      "Timecode" 
                      "Descriptive Metadata" (recognized as DescriptiveMetadata) 
                      "Picture" (recognized as Picture) 
                      "Sound" (recognized as Sound) 
                      "DataEssenceTrack" 
                      "Auxiliary" (recognized as Auxiliary) 
                      "Matte" (recognized as Matte) 
                      "PictureWithMatte" (recognized as PictureWithMatte) 
                      "Timecode" (recognized as legacy Timecode) 
                      "Unknown" 
                      "Picture" (recognized as legacy Picture) 
                      "Sound" (recognized as legacy Sound) 
                      "Edgecode" (recognized as Edgecode) 
   
Types incompatible with SDK v1.0.x = AUIDSet 
 
Filekind             = 512­byte SS (reading with Schemasoft) 
 
 
Esecuzione AAFInfo.cpp con argomento il file fornito “Una_Traccia_Due_Files_Fade.aaf” 
 
 
CompanyName          = "Digidesign, Inc." 
ProductName          = "ProTools" 
ProductVersionString = "10.3.3.111" 
ProductVersion       = 10.3.3­111 (Released) 
ProductID            = {319414F6­5852­4050­A4EB­981E643F33A2} 
Date                 = 2014­07­18 10:34:59.00 
RefImplVersion       = 1.1.0­0 (Unknown) 
Platform             = "Unix" 
GenerationID         = {27D9D557­69DE­11D2­B6BC­FCAB70FF7331} 
 
Number of Mobs       = 8 
 
Header::Version      = 1.1 
 
Header::ObjectModelVersion = 1 (recognized as kAAFRev2) 
 
Datadefs             = "Timecode" (recognized as Timecode) 
                      "Timecode" 
                      "Timecode" 
                      "Descriptive Metadata" (recognized as DescriptiveMetadata) 
                      "Picture" (recognized as Picture) 
                      "Sound" (recognized as Sound) 
                      "DataEssenceTrack" 
                      "Auxiliary" (recognized as Auxiliary) 
                      "Matte" (recognized as Matte) 
                      "PictureWithMatte" (recognized as PictureWithMatte) 
                      "Timecode" (recognized as legacy Timecode) 
                      "Unknown" 
                      "Picture" (recognized as legacy Picture) 
                      "Sound" (recognized as legacy Sound) 
                      "Edgecode" (recognized as Edgecode) 
   
Types incompatible with SDK v1.0.x = AUIDSet 
 
Filekind             = 512­byte SS (reading with Schemasoft) 
 
 
 
 
 
 
Analisi sviluppo applicazione desktop Mac OS X

L’applicazione desktop ipotizzata dovrà quindi utilizzare il componente core “Rifasatore” e, in 
questa prima versione, effettuerà le operazioni di I/O attraverso set di files (invece dell’AAF). 
 
 
Le funzionalità offerte saranno le seguenti: 
● Open files dialog per scelta singolo set di files: un set alla volta con ricerca dei files 
attraverso il nome (con la stessa logica della attuale versione Matlab del Rifasatore) 
● File di log 
● Messaggi di warning 
● Possibilità di fine tuning attraverso file di configurazione 
● Scrittura in output del BOOM rifasato secondo la logica che verrà concordata 
● Play dei singoli file RADIO verso engine di trascrizione audio (ad uso dimostrativo) 
 
 
 
 
Analisi software e librerie di trascrizione audio

Sono stati testate alcune librerie ed alcuni software per la trascrizione speech­to­text. 
L’obiettivo di questo task è stato quello di analizzare la capacità di trascrivere il parlato fornito 
nei set di files RADIO e di ipotizzare un workflow dimostrativo (che affianchi la vera e propria 
applicazione MacOS) che permetta di simulare la trascrizione del parlato nei RADIO e la 
successiva creazione di un database di ricerca delle battute relative alla sceneggiatura. 
 
 

Workflow ipotizzato

Rifasatore MacOS app ­> play singoli file radio ­> soundflower ­> engine di trascrizione ­> file 
di testo relativo ­> uso di motore di ricerca full­text per il matching fra trascrizione e 
sceneggiatura 
 
 
Analisi dei componenti del workflow

Soundflower 
Installata versione 1.6.6 su MacOS 10.9.x 
 
 
Engine di trascrizione (1): online Dictation.io 
 
Utilizza l’engine built­in di Google Chrome e supporta la lingua italiana. 
E’ stato testato con un frammento del file A5 del primo set ed ha prodotto risultati 
soddisfacenti (la ripetizione nella trascrizione è semplicemente dovuta al loop effettuato 
all’interno del player VLC). 
 
https://dictation.io/ 
 
 
 
 
 
 
 
 
Engine di trascrizione (2) ­ offline Enhanced Dictation integrato in MacOS 10.9+ 
 
Il risultato del test fatto in modalità offline con il motore “Enhanced Dictation” di MacOS X 10.9 
ha mostrato risultati peggiori di Dictation.io ma, a nostro parere, ancora validi per una ricerca 
full­text all’interno della sceneggiatura (la ripetizione nella trascrizione è semplicemente 
dovuta al loop effettuato all’interno del player VLC). 
 
 
 
 
 
 
Engine di trascrizione (3) ­ offline Dragon Dictate 4.0.6 
 
Non è stato possibile testare Dragon Dictate Mac OS 4.0.6 (fornito da Stefano Costantini) per 
la mancanza del supporto alla lingua italiana. 
 
Engine di trascrizione (4) ­ online Microsoft Project Oxford 
 
https://www.projectoxford.ai/demo/speech 
https://www.projectoxford.ai/doc/speech/REST/Recognition#SampleVoiceRecognitionReques