Skip to content

Repositorio para el trabajo de grado "Audio inteligente: reducción de ruido de fondo con inteligencia artificial"

License

Notifications You must be signed in to change notification settings

juancas9812/TG_Audio_Inteligente

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Audio inteligente: reducción de ruido de fondo con inteligencia artificial

Pontificia Universidad Javeriana - Trabajo de Grado - Ingenieria Electrónica

Juan Camilo Sarmiento Peñuela


Predicción de una señal de voz a partir de una senal de voz con ruido de fondo

En este repositorio se encuentra el código implementado durante el desarrollo del trabajo de grado Audio inteligente: reducción de ruido de fondo con inteligencia artificial, y también se encuentran los modelos entrenados y los resultados obtenidos. A continuación se describe el proyecto asi como los contenidos del repositorio, y cómo utilizar el código para entrenar los modelos y/o utilizarlos.

1. Estructura del repositorio

  • 📦TG_Audio_Inteligente                                 #Repositorio
    • 📋config.json                                          #Configuracion para Dataset, Perceptron y Evaluation
    • 📂Dataset                                                #Carpeta con codigos para crear el conjunto de datos
    • 📂Perceptron                                           #Carpeta con los códigos del primer modelo
      • 📃generator.py                                 #Generador de datos para el modelo 1
      • 📃model.py                                       #Arquitectura del modelo 1
      • 📃train.py                                          #Entrenamiento del modelo 1
      • 📃enhance.py                                  #Uso del modelo 1
    • 📂CRN                                                       #Carpeta con los códigos del segundo modelo
      • 📂config                                            #Configuraciones para el segundo modelo
      • 📃inference.py                                  #Código para usar el modelo 2
      • 📃train.py                                          #Código para entrenar el modelo 2
    • 📂Evaluation                                             #Código para evaluar los modelos
      • 📃evaluation_metrics.py                 #Definición de las medidas
      • 📃evaluate.py                                   #Evaluacion de los modelos

2. Dependencias

Se deben tener los siguientes módulos de python en el ambiente:

Tensorflow
PyTorch
librosa
numpy
pandas
matplotlib
json5
tqdm
scikit-learn
scipy
pesq
pystoi
torchinfo

3. Creación del conjunto de datos

En caso de ya tener los audios de voz y de ruido con longitud de 5s y con el mismo muestreo ejecutar solamente el código dataset_list.py.

Se debe modificar el archivo config.json y colocar las rutas de las carpetas y metadatos de los audios antes de ejecutar cualquiera de los códigos en la carpeta Dataset. Una vez modificado el archivo config.json, ejecutar de la siguiente manera:

python3 Dataset/dataset_list.py

Al correr dataset_list.py, la particion del conjunto de datos es de 70/15/15 (train/test/val) por defecto.

4. Entrenamiento del modelo 1

Para entrenar el modelo 1 se debe modificar el archivo config.json con la ruta de los audios de mezcla (voz+ruido) y de voz, y adicionalmente, se debe especificar el número de epochs y el número de neuronas por capa:

"train.py": {
    "mixed_path": "...ruta de audios con mezcla",
    "clean_path": "...ruta de audios de voz",
    "dataset_csv": "...ruta de los metadatos del conjunto/nombre_del_archivo.csv",
    "layers": [100,100,50],
    "epochs": 20
}

Para entrenar el modelo ejecutar de la siguiente manera:

python3 Perceptron/train.py

5. Entrenamiento del modelo 2

El modelo 2 se basa en el código desarrollado por haoxiangsnr . Para un mejor entendimiento de este, revisar el repositorio A-Convolutional-Recurrent-Neural-Network-for-Real-Time-Speech-Enhancement Así como la publicación A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement

Antes de entrenar el segundo modelo se debe cambiar el parámetro "root_dir" por la ruta al directorio donde se tiene o se guardará el modelo, los parámetros "dataset_list" por la ruta y nombre del archivo de texto que contiene la lista con los audios para el entrenamiento y validación respectivamente dentro de "train_dataset" y "validation_dataset". Adicionalmente se puede cambiar el número de epochs modificando el valor del parámetro "epochs" dentro de "trainer".

Para entrenar el segundo modelo:

python3 CRN/train.py -C CRN/config/train/baseline_model.json5

o entrar a la carpeta CRN y ejecutar el archivo train.py:

cd CRN
python3 train.py -C config/train/baseline_model.json5

6. Uso de los modelos y evaluación:

Para usar el modelo 1 (perceptron) en el conjunto de datos de evaluacion usar el código enhance.py de la carpeta Perceptron. Antes de ejecutar, configurar los parámetros de "enhance.py" en el archivo de config.json:

"enhance.py":{
    "mixed_path": "...ruta de los audios de mezclas",
    "clean_path": "...ruta de los audios de voz",
    "dataset_csv": "...ruta de los datos del conjunto de datos/nombre_archivo.csv",
    "perceptron_path": "...ruta de la carpeta con el modelo",
    "perceptron_enhancement_path": "...ruta para guardar audios y datos"
},

Luego ejecutar el código:

python3 Perceptron/enhance.py

Para usar el modelo 2 (CRN) en el conjunto de datos de evaluacion se debe configurar la ruta del conjunto de datos (carpeta o archivo con extension .txt) en los parámetros de "dataset" en el archivo basic.json5 de la carpeta CRN/config/inference. Luego ejecutar el código inference.py especificando el archivo de configuración, la ruta del directorio del modelo, y la ruta del directorio de destino,

desde la base:

python3 CRN/inference.py \
    -C CRN/config/inference/basic.json5 \
    -cp Model2/baseline_model/checkpoints/latest_model.tar \
    -dist Output_crn/enhanced

o desde la carpeta CRN:

cd CRN
python3 inference.py \
    -C config/inference/basic.json5 \
    -cp ./Model2/baseline_model/checkpoints/latest_model.tar \
    -dist ../Output_crn/enhanced

Para evaluar los modelos configurar los parametros de "evaluate.py" en el archivo config.json:

"evaluate.py":{
    "mixed_path": "...ruta de los de las mezclas",
    "clean_path": "...ruta de los audios de voz",
    "dataset_csv": "...ruta de los datos del conjunto de audio/nombre_archivo.csv",
    "perceptron_enhancement_path": "...ruta del modelo 1",
    "crn_enhancement_path": "...ruta del modelo 2",
    "results_csv_path": "...ruta para guardar el archivo con la tabla de resultados"
}

Luego, ejecutar el código evaluate.py:

python3 Evaluation.evaluate.py

About

Repositorio para el trabajo de grado "Audio inteligente: reducción de ruido de fondo con inteligencia artificial"

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published