+++ Nachrichten: Das NISQA -Modell wurde kürzlich auf NISQA v2.0 aktualisiert. Die neue Version bietet mehrdimensionale Vorhersagen mit höherer Genauigkeit und ermöglicht das Training und die Fülle des Modells.
Sprachqualitätsvorhersage:
NISQA ist ein tiefes Lernmodell/Rahmen für die Vorhersage von Sprachqualität. Die NISQA -Modellgewichte können verwendet werden, um die Qualität einer Sprachprobe vorherzusagen, die über ein Kommunikationssystem (z. B. Telefon- oder Videoanruf) gesendet wurde. Neben der allgemeinen Sprachqualität bietet NISQA auch Vorhersagen für die Qualitätsabmessungen, Färbung , Diskontinuität und Lautstärke , um mehr Einblicke in die Ursache der Qualitätsverschlechterung zu erhalten.
TTS Natürlichkeit Vorhersage:
Die NISQA-TTS-Modellgewichte können verwendet werden, um die Natürlichkeit der synthetischen Sprache abzuschätzen, die durch ein Sprachumwandlungs- oder Text-zu-Sprach-System (Siri, Alexa usw.) erzeugt wird.
Training/Finetuning:
NISQA kann verwendet werden, um neue einzelne oder doppelte Sprachqualitätsvorhersagemodelle mit unterschiedlichen tiefen Lernarchitekturen wie CNN oder DFF-> Selbstbekämpfung oder LSTM-> Aufmerksamkeits-Pooling oder Max-Pooling zu trainieren. Die bereitgestellten Modellgewichte können auch angewendet werden, um das geschulte Modell in Richtung neuer Daten oder zur Übertragung der Übertragung zu einer anderen Regressionsaufgabe (z.
Sprachqualitätsdatensätze:
Wir bieten einen großen Korpus von mehr als 14.000 Sprachproben mit subjektiven Sprachqualitäts- und Sprachqualitätsdimensionsbezeichnungen.
Weitere Informationen zur Deep -Learning -Modellstruktur, die gebrauchten Trainingsdatensätze und die Trainingsoptionen finden Sie im NISQA -Papier und das Wiki.
Um Anforderungen zu installieren, installieren Sie Anaconda und verwenden Sie dann:
conda env create -f env.yml
Dadurch wird eine neue Umgebung mit dem Namen "Nisqa" geschaffen. Aktivieren Sie diese Umgebung, um weiterzumachen:
conda activate nisqa
Wir geben Beispiele für die Verwendung von NISQA zur Vorhersage der Qualität von Sprachproben, zur Ausbildung eines neuen Sprachqualitätsmodells und zur Bewertung der Leistung eines ausgebildeten Sprachqualitätsmodells.
Es stehen drei verschiedene Modellgewichte zur Verfügung, die entsprechenden Gewichte sollten je nach Domäne geladen werden:
| Modell | Vorhersageausgang | Domain | Dateiname |
|---|---|---|---|
| Nisqa (v2.0) | Gesamtqualität, Rausch, Färbung, Diskontinuität, Lautstärke | Übertragene Sprache | Nisqa.tar |
| Nur Nisqa (v2.0) MOS | Nur Gesamtqualität (zum Flossen-/Transferlernen) | Übertragene Sprache | nisqa_mos_only.tar |
| Nisqa-tts (v1.0) | Natürlichkeit | Synthetisierte Sprache | nisqa_ts.tar |
Es stehen drei Modi zur Verfügung, um die Qualität der Sprache über Befehlszeilenargumente vorherzusagen:
Wichtig: Wählen Sie " nisqa.tar " aus, um die Qualität einer übertragenen Sprachprobe und " nisqa_tts.tar " vorherzusagen, um die Natürlichkeit einer synthetisierten Sprachprobe vorherzusagen.
Um die Qualität einer einzigen .wav -Datei Verwendung vorherzusagen:
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
Um die Qualität aller .wav -Dateien in einem Ordner verwenden zu können: Verwendung:
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
Um die Qualität aller .WAV -Dateien in einer CSV -Tabelle verwenden zu können: Verwenden Sie:
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
Die Ergebnisse werden in der Konsole gedruckt und in einer CSV -Datei in einem bestimmten Ordner gespeichert (optional mit -output_dir). Um die Vorhersage zu beschleunigen, kann die Anzahl der Arbeitnehmer und die Chargengröße des Pytorch -Dataloaders erhöht werden (optional mit -num_workers und - -Bs). Bei Stereodateien kann - -ms_channel verwendet werden, um den Audiokanal auszuwählen.
Um die Modellgewichte zu verwenden, um das Modell auf einem neuen Datensatz zu finanzieren, ist nur eine CSV -Datei mit den Dateinamen und Etiketten erforderlich. Die Trainingskonfiguration wird aus einer YAML -Datei gesteuert und kann wie folgt gestartet werden:
python run_train.py --yaml config/finetune_nisqa.yaml
Wenn der NISQA -Korpus verwendet wird, müssen nur zwei Argumente in der YAML -Datei aktualisiert werden, und Sie sind bereit zu gehen: Der data_dir zum extrahierten NISQA_Corpus -Ordner und den output_dir , wobei die Ergebnisse gespeichert werden sollten.
Wenn Sie Ihren eigenen Datensatz verwenden oder das NISQA-TTS-Modell laden möchten, sind einige andere Updates erforderlich.
Ihre CSV -Datei muss mindestens drei Spalten mit den folgenden Namen enthalten
db mit den einzelnen Datensatznamen für jede Dateifilepath_deg filepath an die abgebaute WAV -Datei, entweder absolute Pfade oder relativ zum data_dir (CSV -Spaltenname kann in YAML geändert werden)mos mit den Zielbezeichnungen (CSV -Spaltenname kann in YAML geändert werden) Die finetune_nisqa.yaml muss wie folgt aktualisiert werden:
data_dir Pfad zum Hauptordner, der die CSV -Datei und die Datensätze enthältoutput_dir Pfad zum Ausgangsordner mit gespeicherten Modellgewichten und Ergebnissenpretrained_model -Dateiname des vorbereiteten Modells, entweder nisqa_mos_only.tar für natürliche Sprache oder nisqa_tts.tar für synthetisierte Sprachecsv_file -Name des CSV mit Filepathen und Zieletikettencsv_deg CSV -Spaltenname, der Filepaths enthält (z. B. filepath_deg )csv_mos_train und csv_mos_val CSV -Spaltennamen des Zielwerts (z. B. mos )csv_db_train und csv_db_val -Namen der Datensätze, die Sie für das Training und die Validierung verwenden möchten. Datensätze Namen müssen in der db -Spalte sein.In den Kommentaren in der YAML -Konfigurationsdatei und im Wiki (noch nicht hinzugefügt) finden Sie weiter fortgeschrittene Schulungsoptionen. Ein guter Ausgangspunkt wäre die Verwendung des NISQA Corpus, um das Training mit der Standardkonfiguration zu beginnen.
NISQA kann auch als Rahmen verwendet werden, um neue Sprachqualitätsmodelle mit unterschiedlichen tiefgreifenden Architekturen zu trainieren. Die allgemeine Modellstruktur lautet wie folgt:
Die Modelle für rahmenartige und zeitabhängige Abhängigkeiten können übersprungen werden, z. B. um ein LSTM-Modell ohne CNN zu trainieren, das den letzten Schritt zur Vorhersage verwendet. Auch eine zweite Zeitabhängigkeitsstufe kann hinzugefügt werden, z. Die Modellstruktur kann einfach über die YAML -Konfigurationsdatei gesteuert werden. Das Training mit der Standard -NISQA -Modellkonfiguration kann wie folgt mit dem NISQA -Korpus gestartet werden:
python run_train.py --yaml config/train_nisqa_cnn_sa_ap.yaml
Wenn der NISQA -Korpus verwendet wird, muss nur der data_dir auf den unzippierten NISQA_Corpus -Ordner und den output_dir in der YAML -Datei aktualisiert werden. Andernfalls finden Sie im vorherigen Abschnitt mit dem Finetuning, um die YAML -Datei zu aktualisieren, wenn ein benutzerdefinierter Datensatz angewendet wird.
Es ist auch möglich, eine andere Kombination von neuronalen Netzwerken zu trainieren, beispielsweise ein Modell mit LSTM anstelle von Selbstbekämpfung, die Konfigurationsdatei der train_nisqa_cnn_lstm_avg.yaml wird bereitgestellt.
Um ein doppeltes Modell für die Vorhersage der Sprachqualität in voller Referenz zu trainieren, kann die Konfigurationsdatei train_nisqa_double_ended.yaml als Beispiel verwendet werden. Weitere Informationen zu verschiedenen möglichen Modellstrukturen und fortgeschrittenen Trainingsoptionen finden Sie in den Kommentaren in den YAML -Dateien und im Wiki (noch nicht hinzugefügt).
Geschulte Modelle können wie folgt auf einem bestimmten Datensatz bewertet werden (können auch als Konformitätstest der Modellinstallation verwendet werden):
python run_evaluate.py
Vor dem Ausführen sollten die Optionen und Pfade im Python -Skript run_evaluate.py aktualisiert werden. Wenn der NISQA -Korpus verwendet wird, müssen nur die Pfade data_dir und output_dir eingestellt werden. Neben Pearsons Korrelation und RMSE wird auch ein RMSE nach der Polynomzuordnung erster Ordnung berechnet. Wenn eine CSV-Datei mit Labels mit pro-Bedingung bereitgestellt wird, gibt das Skript auch die Ergebnisse der Voraussetzungen und RMSE*aus. Optional können Korrelationsdiagramme aufgetragen werden. Das Skript sollte die gleichen Ergebnisse wie im NISQA -Papier zurückgeben, wenn es auf dem NISQA -Korpus ausgeführt wird.
Der NISQA Corpus enthält mehr als 14.000 Sprachproben mit simulierten (z. B. Codecs, Paketverlust, Hintergrundrauschen) und Live (z. B. Mobiltelefon, Zoom, Skype, WhatsApp).
Für den Download -Link und weitere Details zu den Datensätzen und verwendeten Source -Sprachproben finden Sie im NISQA Corpus Wiki.
Der NISQA -Code ist unter MIT -Lizenz lizenziert.
Die Modellgewichte (nisqa.tar, nisqa_mos_only.tar, nisqa_tts.tar) werden unter einem Creative Commons Attribution-Noncommercial-sharealike 4.0 International (CC BY-NC-SA 4.0) zur Verfügung gestellt
Der NISQA Corpus wird unter den ursprünglichen Begriffen der verwendeten Quellsprach- und Rauschproben bereitgestellt. Weitere Informationen finden Sie im Nisqa Corpus Wiki.
Copyright © 2021 Gabriel Mittag
www.qu.tu-berlin.de