+++ Noticias: El modelo NISQA se ha actualizado recientemente a NISQA V2.0. La nueva versión ofrece predicciones multidimensionales con mayor precisión y permite capacitar y finar el modelo.
Predicción de calidad del habla:
NISQA es un modelo/marco de aprendizaje profundo para la predicción de la calidad del habla. Los pesos del modelo NISQA se pueden utilizar para predecir la calidad de una muestra de voz que se ha enviado a través de un sistema de comunicación (por ejemplo, teléfono o videollamada). Además de la calidad general del habla, NISQA también proporciona predicciones para la ruidosa dimensiones de calidad, la coloración , la discontinuidad y el volumen para dar más información sobre la causa de la degradación de la calidad.
TTS Predicción de naturalidad:
Los pesos del modelo NISQA-TTS se pueden usar para estimar la naturalidad del habla sintética generada por un sistema de conversión de voz o texto a voz (Siri, Alexa, etc.).
Entrenamiento/Finetuning:
NISQA se puede utilizar para entrenar nuevos modelos de predicción de calidad del habla de un solo extremo o doble con diferentes arquitecturas de aprendizaje profundo, como CNN o DFF-> Autoatención o LSTM-> Probación de atención o polvo máximo. Los pesos del modelo proporcionados también se pueden aplicar para Finetune el modelo capacitado hacia nuevos datos o para la transferencia-aprendizaje a una tarea de regresión diferente (por ejemplo, estimación de calidad de habla mejorada, estimación de similitud de altavoces o reconocimiento de emociones).
Conjuntos de datos de calidad del habla:
Proporcionamos un gran corpus de más de 14,000 muestras de voz con etiquetas subjetivas de calidad del habla y dimensión de calidad del habla.
Más información sobre la estructura del modelo de aprendizaje profundo, los conjuntos de datos de capacitación utilizados y las opciones de capacitación, consulte el documento NISQA y el wiki.
Para instalar los requisitos, instale Anaconda y luego use:
conda env create -f env.yml
Esto creará un nuevo entorno con el nombre "NISQA". Active este entorno para continuar:
conda activate nisqa
Proporcionamos ejemplos para usar NISQA para predecir la calidad de las muestras del habla, capacitar a un nuevo modelo de calidad del habla y evaluar el rendimiento de un modelo de calidad del habla capacitado.
Hay tres pesos de modelo diferentes disponibles, los pesos apropiados deben cargarse dependiendo del dominio:
| Modelo | Salida de predicción | Dominio | Nombre del archivo |
|---|---|---|---|
| NISQA (V2.0) | Calidad general, ruidosidad, coloración, discontinuidad, volumen | Discurso transmitido | nisqa.tar |
| Nisqa (v2.0) Mos solamente | Solo calidad general (para el aprendizaje Finetuning/Transfer) | Discurso transmitido | nisqa_mos_only.tar |
| NISQA-TTS (V1.0) | Naturalidad | Discurso sintetizado | nisqa_tts.tar |
Hay tres modos disponibles para predecir la calidad del habla a través de argumentos de línea de comandos:
IMPORTANTE: Seleccione " Nisqa.tar " para predecir la calidad de una muestra de habla transmitida y " NISQA_TTS.tar " para predecir la naturalidad de una muestra de habla sintetizada.
Para predecir la calidad de un solo uso del archivo .WAV:
python run_predict.py --mode predict_file --pretrained_model weights/nisqa.tar --deg /path/to/wav/file.wav --output_dir /path/to/dir/with/results
Para predecir la calidad de todos los archivos .WAV en una carpeta, use:
python run_predict.py --mode predict_dir --pretrained_model weights/nisqa.tar --data_dir /path/to/folder/with/wavs --num_workers 0 --bs 10 --output_dir /path/to/dir/with/results
Para predecir la calidad de todos los archivos .WAV que se enumeran en un uso de la tabla CSV:
python run_predict.py --mode predict_csv --pretrained_model weights/nisqa.tar --csv_file files.csv --csv_deg column_name_of_filepaths --num_workers 0 --bs 10 --output_dir /path/to/dir/with/results
Los resultados se imprimirán en la consola y se guardarán en un archivo CSV en una carpeta determinada (opcional con --output_dir). Para acelerar la predicción, se puede aumentar el número de trabajadores y el tamaño de lotes del dataloader de Pytorch (opcional con --num_workers y --bs). En el caso de archivos estéreo, se puede usar -MS_CHANNEL para seleccionar el canal de audio.
Para usar los pesos del modelo para fininar el modelo en un nuevo conjunto de datos, solo se necesita un archivo CSV con los nombres de archivo y las etiquetas. La configuración de capacitación se controla desde un archivo YAML y se puede iniciar de la siguiente manera:
python run_train.py --yaml config/finetune_nisqa.yaml
Si se usa el Corpus NISQA, solo se deben actualizar dos argumentos en el archivo YAML y está listo para comenzar: data_dir a la carpeta NISQA_Corpus extraída y la output_dir , donde los resultados deben almacenarse.
Si usa su propio conjunto de datos o desea cargar el modelo NISQA-TTS, se necesitan algunas otras actualizaciones.
Su archivo CSV debe contener al menos tres columnas con los siguientes nombres
db con los nombres de conjuntos de datos individuales para cada archivofilepath_deg filepath al archivo WAV degradado, ya sea rutas absolutas o en relación con el data_dir (el nombre de la columna CSV se puede cambiar en YAML)mos con las etiquetas de destino (el nombre de la columna CSV se puede cambiar en YAML) finetune_nisqa.yaml debe actualizarse de la siguiente manera:
data_dir a la carpeta principal, que contiene el archivo CSV y los conjuntos de datosoutput_dir a la carpeta de salida con pesos y resultados de modelos guardadospretrained_model nombre de archivo del modelo previo a la aparición, ya sea nisqa_mos_only.tar para discurso natural o nisqa_tts.tar para discurso sintetizadocsv_file Nombre del CSV con Filepaths y etiquetas de destinocsv_deg CSV que contiene filepaths (por ejemplo, filepath_deg )csv_mos_train y csv_mos_val Nombres de columna CSV del valor de destino (por ejemplo, mos )csv_db_train y csv_db_val Nombres de los conjuntos de datos que desea utilizar para capacitación y validación. Los nombres de los conjuntos de datos deben estar en la columna db .Consulte los comentarios en el archivo de configuración de YAML y el wiki (aún no agregado) para opciones de capacitación más avanzadas. Un buen punto de partida sería usar el Corpus NISQA para comenzar la capacitación con la configuración estándar.
NISQA también se puede utilizar como un marco para capacitar a nuevos modelos de calidad del habla con diferentes arquitecturas de aprendizaje profundo. La estructura del modelo general es la siguiente:
Se pueden omitir los modelos de Framewise y de dependencia del tiempo, por ejemplo, para entrenar un modelo LSTM sin CNN que usa el paso por último tiempo para la predicción. También se puede agregar una segunda etapa de dependencia del tiempo, por ejemplo, para la estructura de la sola atención LSTM. La estructura del modelo se puede controlar fácilmente a través del archivo de configuración YAML. La capacitación con la configuración del modelo NISQA estándar se puede iniciar con el Corpus NISQA de la siguiente manera:
python run_train.py --yaml config/train_nisqa_cnn_sa_ap.yaml
Si se usa el Corpus NISQA, solo el data_dir debe actualizarse a la carpeta NISQA_CORPUS descomprimida y la output_dir en el archivo YAML. De lo contrario, consulte la sección Finetuning anterior para actualizar el archivo YAML si se aplica un conjunto de datos personalizado.
También es posible entrenar cualquier otra combinación de redes neuronales, por ejemplo, para entrenar un modelo con LSTM en lugar de autoatención, se proporciona el archivo de configuración de ejemplo train_nisqa_cnn_lstm_avg.yaml .
Para entrenar un modelo de doble extremo para la predicción de calidad del habla de referencia completa, el archivo de configuración train_nisqa_double_ended.yaml se puede usar como ejemplo. Consulte los comentarios en los archivos YAML y el wiki (aún no agregado) para obtener más detalles sobre diferentes estructuras de modelos posibles y opciones de capacitación avanzadas.
Los modelos capacitados se pueden evaluar en un conjunto de datos determinado de la siguiente manera (también se puede utilizar como prueba de conformidad de la instalación del modelo):
python run_evaluate.py
Antes de ejecutar, se deben actualizar las opciones y rutas dentro del script de Python run_evaluate.py . Si se usa el Corpus NISQA, solo se deben ajustar las rutas data_dir y output_dir . Además de la correlación de Pearson y el RMSE, también se calcula un RMSE después del mapeo polinomial de primer orden. Si se proporciona un archivo CSV con etiquetas por contenido de condición, el script también generará resultados de condición y RMSE*. Opcionalmente, se pueden trazar diagramas de correlación. El script debe devolver los mismos resultados que en el documento NISQA cuando se ejecuta en el Corpus NISQA.
El Corpus NISQA incluye más de 14,000 muestras de voz con códecs simulados (p. Ej.
Para el enlace de descarga y más detalles en los conjuntos de datos y usadas muestras de discurso de origen, consulte el Wiki del Corpus Nisqa.
El código NISQA tiene licencia bajo la licencia MIT.
Los pesos del modelo (nisqa.tar, nisqa_mos_only.tar, nisqa_tts.tar) se proporcionan bajo una licencia creativa de atribución de los bienes comunes no comerciales 4.0 International (CC BY-NC-SA 4.0)
El Corpus NISQA se proporciona bajo los términos originales de las muestras de voz y ruido de origen usado. Se puede encontrar más información en el Wiki del Corpus Nisqa.
Copyright © 2021 Gabriel Mittag
www.qu.tu-berlin.de