Giter Site home page Giter Site logo

speech_analysis's Introduction

Speech analysis

Overview

Lo scopo di tale progetto è quello di trovare delle correlazioni, a partire da delle interviste, tra il giudizio espresso da intervistati ed intervistatori sulla qualità di quest'ultime, e le features estrapolate dai relativi file audio .wav .

Implementazione

Le classi che compongono tale progetto sono le seguenti:

  1. La classe Main, principale classe del programma, dalla quale è possibile selezionare i possibili comandi
  2. La classe AudioManipulation, la quale ha il compito di estrapolare le feature di un file audio
  3. La classe DataAnalysis, tramite la quale calcolare le correlazioni tra le feature estratte e i relativi questionari.

Basta eseguire la classe Main per gestire il programma attraverso il terminale, o digitare help per visualizzare tutti i possibili comandi

alt-text

Il programma si divide logicamente in due parti: una prima, volta a estrapolare le feature relative ai file audio; una seconda, volta a trovare delle correlazioni tra le feature estrapolate e i questionari che rappresentano la qualità delle interviste.

Estrazione manuale delle feature

È possibile calcolare le feature di un singolo file audio nella seguente maniera:

  1. Digitare il comando path ed inserire il percorso del file audio (relativo se si trova nella stessa cartella o assoluto se altrove)
  2. Digitare il comando features, ed eventualmente il comando help_features, rispettivamente per aprire il sottomenù delle possibili funzioni per l'analisi dei file audio e per visualizzarne l'elenco

alt-text

È possibile calcolare le feature una alla volta, inserendo il comando relativo, o tutte insieme attraverso il comando all.
Per ogni feature verrà inoltre esportata un'immagine che ne rappresenta il risultato all'interno di un grafico. Tutti i grafici sono contenuti e catalogati all'interno della cartella Visualization (si crea automaticamente se non esiste).\

Particolare è il funzionamento del comando diarization, il quale ha il compito di esportare la diarizzazione dei file audio. All'interno della cartella Speaker (si crea automaticamente se non esiste) vengono infatti inseriti i file audio divisi in cartelle (ciascuna cartella conterrà tutte e solo le frasi espresse da uno dei due parlanti) ed una visualizzazione grafica dei momenti in cui i parlanti interagiscono per tutta l'intervista. Tale feature verrà rappresentata nel dataset esportando il tempo di interazione dei due parlanti all'interno dell'invervista

È bene poi sottolineare che il responsabile dell'esportazione del vettore che rappresenta le feature associate ad un file audio è il comando average. Il funzionamento di tale comando si compone dei seguenti passagi:

  1. Controlla se tutte le feature sono già state calcolate (in alternativa chiede di digitare prima il comando all).
  2. Dal momento che ogni feature è rappresentata da una matrice, o più precisamente da una lista di liste, viene calcolata e concatenata in un vettore la media di ogni singola lista
  3. Vengono concatenati tutti i vettori che rappresentano le feature ed esportati all'interno di un file excel denominato "features.xlsx", contenuto a sua volta all'interno della cartella Excel features (la cartella verrà creata automaticamente se non esiste ancora).

Rispetto all'esportazione delle feature è bene precisare che:

  1. Ogni file audio è identificato da una riga che ne rappresenta il nome e le componenti delle feature
  2. Nel caso in cui il file "features.xlsx" esiste già, gli viene semplicemente aggiunta una riga.
  3. L'ordine con il quale tali componenti vengono esportate è lo stesso per ogni file audio, così da poter visualizzare, per ogni colonna, il rispettivo valore di una feature per ogni intervista. Tale è il motivo per il quale prima del comando average risulta fondamentale calcolare il comando all.

Estrazione automatica delle feature

In alternativa è possibile automatizzare il processo creando una cartella denominata Interviews nel percorso corrente, ed inserire tutte le interviste da analizzare nella stessa. In seguito a ciò basta eseguire la classe Main e digitare il comando excel_features

Calcolo delle correlazioni tra i dati

Per mostrare il calcolo delle correlazioni tra i questionari somministrati agli intervistati e agli intervistatori sulla qualità delle interviste, e le feature estrapolate dai relativi file audio, è necessario, una volta eseguita la classe Main digitare il comando data_analysis. Per il funzionamento di tale script risulta necessario importare nel path corrente la cartella Analysis dataset qui fornita.
Tale comando ha il compito di calcolare la correlazione lineare tra ogni colonna del dataset delle feature estrapolate dai file audio (ogni colonna rappresenta l'i-esima feature di tutti i file audio analizzati) e ogni colonna del dataset relativo ai questionari di valutazione (ogni colonna di tale dataset rappresenta le risposte di tutti gli intervistati ed intervistatori alla stessa domanda).
Tale correlazione lineare è stata calcolata prima dividendo le interviste in due sottogruppi (denominati A1A2, B1B2), poi per l'intero dataset.
Le correlazioni sono state calcolate a partire da diverse versioni di tali questionari di valutazione:

  1. Una versione integrale, contenente tutte le domande di intervistati ed intervistatori
  2. Una versione contenente tutte le domande ma solamente con le risposte degli intervistati
  3. Una versione contenente un sottoinsieme delle domande
  4. Una versione contenente un sottoinsieme delle domande ma solamente con le risposte degli intervistati

Tale script mostrerà sul terminale solamente le correlazioni con indice rho maggiore di 0.4 o minore di -0.4, ed il suo relativo p-value.

Librerie esterne

Il programma è stato creato all'interno di un'ambiente di sviluppo di Anaconda. È la libreria pyannote a gestire il processo di diarizzazione dei file audio

conda create -n pyannote python=3.8
conda activate pyannote

# pytorch 1.11 is required for speechbrain compatibility
# (see https://pytorch.org/get-started/previous-versions/#v1110)
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 -c pytorch

pip install pyannote.audio

Quest'ultimo si avvale inoltre dell'utilizzo delle seguenti librerie:

  1. openpyxl per interagire con i dataset di excel
  2. librosa e numpy per il calcolo delle feature
  3. scipy per il calcolo delle correlazioni
  4. pandas per la costruzione di dataframe
  5. pydub per l'esportazione dei file audio segmentati
  6. matplotlib per la creazione dei grafici associati alle feature estratte

speech_analysis's People

Contributors

gcigna avatar alessioferrari avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.