+++ News: Le modèle NISQA a récemment été mis à jour vers NISQA v2.0. La nouvelle version propose des prédictions multidimensionnelles avec une précision plus élevée et permet de formation et de finir le modèle.
Prédiction de qualité de la parole:
NISQA est un modèle / cadre d'apprentissage en profondeur pour la prédiction de la qualité de la parole. Les poids du modèle NISQA peuvent être utilisés pour prédire la qualité d'un échantillon de la parole qui a été envoyé via un système de communication (par exemple, téléphone ou appel vidéo). Outre la qualité globale de la parole, Nisqa fournit également des prédictions pour les dimensions de qualité bruyantes , coloration , discontinuité et volume pour donner plus de renseignements sur la cause de la dégradation de la qualité.
Prédiction de naturel TTS:
Les poids du modèle NISQA-TTS peuvent être utilisés pour estimer le naturel de la parole synthétique générée par un système de conversion vocal ou de texte vocal (Siri, Alexa, etc.).
Formation / Finetuning:
NISQA peut être utilisé pour former de nouveaux modèles de prédiction de qualité de la parole unique ou à double extrémité avec différentes architectures d'apprentissage en profondeur, telles que CNN ou DFF -> auto-atténuer ou LSTM -> pool d'attention ou réoîticle maximum. Les poids du modèle fourni peuvent également être appliqués à Finetune le modèle formé vers de nouvelles données ou pour l'apprentissage par transfert à une tâche de régression différente (par exemple, estimation de la qualité de la parole améliorée, de l'estimation de la similitude des haut-parleurs ou de la reconnaissance des émotions).
Ensembles de données de qualité de la parole:
Nous fournissons un grand corpus de plus de 14 000 échantillons de parole avec des étiquettes subjectives de la qualité de la parole et de la dimension de qualité de la parole.
Plus d'informations sur la structure du modèle d'apprentissage en profondeur, les ensembles de données de formation utilisés et les options de formation, consultez le papier NISQA et le wiki.
Pour installer les exigences, installez Anaconda puis utilisez:
conda env create -f env.yml
Cela créera un nouvel environnement avec le nom "Nisqa". Activez cet environnement pour continuer:
conda activate nisqa
Nous fournissons des exemples d'utilisation de NISQA pour prédire la qualité des échantillons de parole, pour former un nouveau modèle de qualité de la parole et pour évaluer les performances d'un modèle de qualité de la parole formé.
Il y a trois poids de modèle différents disponibles, les poids appropriés doivent être chargés en fonction du domaine:
| Modèle | Sortie de prédiction | Domaine | Nom de fichier |
|---|---|---|---|
| Nisqa (v2.0) | Qualité globale, bruissement, coloration, discontinuité, intensité | Discours transmis | nisqa.tar |
| Nisqa (v2.0) MOS uniquement | Qualité globale uniquement (pour l'apprentissage des finetuning / transfert) | Discours transmis | nisqa_mos_only.tar |
| Nisqa-tts (v1.0) | Naturel | Discours synthétisé | nisqa_tts.tar |
Il existe trois modes disponibles pour prédire la qualité de la parole via des arguments de ligne de commande:
Important: sélectionnez " nisqa.tar " pour prédire la qualité d'un échantillon de parole transmis et " nisqa_tts.tar " pour prédire le naturel d'un échantillon de parole synthétisé.
Pour prédire la qualité d'une seule utilisation de fichiers .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
Pour prédire la qualité de tous les fichiers .wav dans un dossier d'utilisation:
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
Pour prédire la qualité de tous les fichiers .wav répertoriés dans une utilisation de la table 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
Les résultats seront imprimés sur la console et enregistrés dans un fichier CSV dans un dossier donné (facultatif avec --output_dir). Pour accélérer la prédiction, le nombre de travailleurs et la taille du lot du plus grand nombre de données Pytorch peuvent être augmentés (facultatif avec --num_workers et --bs). Dans le cas de fichiers stéréo,-MS_Channel peut être utilisé pour sélectionner le canal audio.
Pour utiliser les poids du modèle pour Finetune le modèle sur un nouvel ensemble de données, seul un fichier CSV avec les noms de fichiers et les étiquettes est nécessaire. La configuration de la formation est contrôlée à partir d'un fichier YAML et peut être démarrée comme suit:
python run_train.py --yaml config/finetune_nisqa.yaml
Si le corpus NISQA est utilisé, seuls deux arguments doivent être mis à jour dans le fichier YAML et vous êtes prêt à partir: le data_dir dans le dossier NISQA_CORPUS extrait et le output_dir , où les résultats doivent être stockés.
Si vous utilisez votre propre ensemble de données ou si vous souhaitez charger le modèle NISQA-TTS, d'autres mises à jour sont nécessaires.
Votre fichier CSV doit contenir au moins trois colonnes avec les noms suivants
db avec les noms de jeu de données individuels pour chaque fichierfilepath_deg filepath au fichier wav dégradé, soit des chemins absolus ou par rapport au data_dir (le nom de la colonne CSV peut être modifié en yaml)mos avec les étiquettes cibles (le nom de la colonne CSV peut être modifié dans YAML) Le finetune_nisqa.yaml doit être mis à jour comme suit:
data_dir Chemin vers le dossier principal, qui contient le fichier CSV et les ensembles de donnéesoutput_dir chemin vers le dossier de sortie avec des poids et des résultats du modèle enregistrépretrained_model Nom du modèle pré-entraîné, soit nisqa_mos_only.tar pour la parole naturelle ou nisqa_tts.tar pour la parole synthétiséecsv_file Nom du CSV avec Filepaths et Étiquettes ciblescsv_deg CSV qui contient Filepaths (par exemple, filepath_deg )csv_mos_train ET csv_mos_val CSV COLUMNES Noms de la valeur cible (par exemple mos )csv_db_train et csv_db_val des ensembles de données que vous souhaitez utiliser pour la formation et la validation. Les noms de jeux de données doivent être dans la colonne db .Voir les commentaires dans le fichier de configuration YAML et le wiki (non encore ajouté) pour des options de formation plus avancées. Un bon point de départ serait d'utiliser le corpus NISQA pour démarrer la formation avec la configuration standard.
Nisqa peut également être utilisé comme cadre pour former de nouveaux modèles de qualité de la parole avec différentes architectures d'apprentissage en profondeur. La structure du modèle général est la suivante:
Les modèles d'images et de dépendance dans le temps peuvent être ignorés, par exemple pour former un modèle LSTM sans CNN qui utilise la dernière étape de prédiction. Une deuxième étape de dépendance de temps peut également être ajoutée, par exemple pour la structure LSTM-Self-Attention. La structure du modèle peut être facilement contrôlée via le fichier de configuration YAML. La formation avec la configuration du modèle NISQA standard peut être démarrée avec le corpus NISQA comme suit:
python run_train.py --yaml config/train_nisqa_cnn_sa_ap.yaml
Si le corpus Nisqa est utilisé, seul le data_dir doit être mis à jour dans le dossier NISQA_CORPUS non décompressé et le Fichier output_dir dans le fichier YAML. Sinon, voir la section Finetuning précédente pour mettre à jour le fichier YAML si un ensemble de données personnalisé est appliqué.
Il est également possible de former toute autre combinaison de réseaux de neurones, par exemple, pour former un modèle avec LSTM au lieu de l'auto-atténuer, le fichier de configuration train_nisqa_cnn_lstm_avg.yaml est fourni.
Pour former un modèle à double extrémité pour une prédiction de qualité de la parole complète, le fichier de configuration train_nisqa_double_ended.yaml peut être utilisé comme exemple. Voir les commentaires dans les fichiers YAML et le wiki (non encore ajouté) pour plus de détails sur différentes structures de modèle possibles et options de formation avancées.
Les modèles formés peuvent être évalués sur un ensemble de données donné comme suit (peut également être utilisé comme test de conformité de l'installation du modèle):
python run_evaluate.py
Avant d'exécuter, les options et les chemins à l'intérieur du script Python run_evaluate.py doivent être mis à jour. Si le corpus Nisqa est utilisé, seuls les chemins data_dir et output_dir doivent être ajustés. Outre la corrélation de Pearson et le RMSE, un RMSE après la cartographie polynomiale du premier ordre est calculé. Si un fichier CSV avec des étiquettes par condition est fourni, le script publiera également les résultats par condition et RMSE *. Facultativement, les diagrammes de corrélation peuvent être tracés. Le script doit renvoyer les mêmes résultats que dans le papier NISQA lorsqu'il est exécuté sur le corpus NISQA.
Le corpus Nisqa comprend plus de 14 000 échantillons de parole avec des conditions simulées (par exemple les codecs, la perte de paquets, le bruit de fond) et les conditions de téléphone mobile, de téléphone mobile, de zoom, de skype, de WhatsApp).
Pour le lien de téléchargement et plus de détails sur les ensembles de données et les échantillons de discours source utilisés, consultez le Wiki du Corpus Nisqa.
Le code NISQA est concédé sous licence MIT.
Les modèles de poids (nisqa.tar, nisqa_mos_only.tar, nisqa_tts.tar) sont fournis sous une licence d'attribution de communes créatives (CC BY-SA 4.0)
Le corpus NISQA est fourni en vertu des termes d'origine des échantillons de parole de source et de bruit utilisés. Plus d'informations peuvent être trouvées dans le wiki du corpus Nisqa.
Copyright © 2021 Gabriel Mittag
www.qu.tu-berlin.de