Wir haben die phonetischen Vorhersagen mit dem Microsoft Cognitive Toolkit (CNTK) zusammengefasst.
In Teil 1 werden wir uns auf die phonetische Vorhersage vorbereiten.
Ich werde sie in der folgenden Reihenfolge vorstellen.
Der ATR-Beispiel-Audiodatensatz [1] ist ein Äußerungsdatensatz, der aus den Reimen der ATR-Datenbank besteht.
Laden Sie atr_503_v1.0.tar.gz über den obigen Link herunter und entpacken Sie es. Die Audiodaten befinden sich in der AD-Datei unter dem Sprachverzeichnis, und die diesmal verwendete phonetische Bezeichnung ist die .lab-Datei unter dem alten Verzeichnis unter label / monophone.
Die Verzeichnisstruktur ist diesmal wie folgt.
CTCR |―atr_503 |―label |―speech |―... ctcr_atr503.py MGCC
Die Audiodaten werden in einem Big-Endian-Integer-Typ mit 16 Bit und einer Abtastfrequenz von 16.000 gespeichert, sodass der Wertebereich durch den Maximalwert von $ 2 ^ {16} / 2-1 = 32.767 $ [-1, 1] geteilt wird. Normalisieren auf.
Dieses Mal wurde der Mel-Frequenz-Cepstrum-Koeffizient (MFCC) aus den Audiodaten berechnet. Die Anzahl der verwendeten Features beträgt 13 Dimensionen.
Zusätzlich wird eine Hochfrequenzbetonung auf die Audiodaten als Vorverarbeitung angewendet. Zusätzlich werden die Differenzierungen erster und zweiter Ordnung von MFCC kombiniert, um insgesamt 39-dimensionale Merkmalsgrößen zu erzeugen.
Die erstellten Features werden als Binärdatei im HTK-Format (Hidden Markov Toolkit) geschrieben und gespeichert.
Während dieser Schulung werden wir HTKDeserializer und HTKMLFDeserializer verwenden, die einer der integrierten Leser sind, die sich auf Spracherkennung spezialisiert haben.
Der allgemeine Verarbeitungsablauf des Programms, das sich auf die phonetische Vorhersage vorbereitet, ist wie folgt.
・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz
・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Librosa 0.8.0 ・ Numpy 1.19.2 ・ Pandas 1.1.2 ・ Scikit-Learn 0.23.2 ・ Scipy 1.5.2
Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/SpeechRecognition/tree/master/CTCR).
ctcr_atr503.py
Es ergänzt die wesentlichen Inhalte des auszuführenden Programms.
Die Leistung der Stimme wird abgeschwächt, wenn sie höher wird, daher wird eine Hochfrequenzverbesserung verwendet, um dies zu kompensieren. Unter der Annahme, dass die Frequenz $ f $ und die Abtastfrequenz $ f_s $ ist, wird das als Hochfrequenz-Durchlassfilter verwendete FIR-Filter $ H (z) $ durch die folgende Formel ausgedrückt.
H(z) = 1 - \alpha z^{-1} \\
z = \exp(j \omega), \omega = 2 \pi f / f_s
Im Allgemeinen wird $ \ alpha = 0,97 $ verwendet.
Mel-Frequenz Kepstram konvertiert das Leistungsspektrum des Mel-Spektrogramms, das in Spracherkennung: Genreklassifizierung Teil 1 - GTZAN-Genresammlungen verwendet wird, in Dezibel und konvertiert dann die Kosinuskonvertierung. Erhalten durch Bewerbung.
Cepstrum [2] ist ein Spektrumanagramm, das feine und allmähliche Schwankungen im Spektrum trennen und die menschliche Stimme charakterisieren kann.
Um die zeitliche Änderung der Merkmalsmenge zu erfassen, wird auch die Differenz zwischen benachbarten Rahmen als Merkmalsmenge hinzugefügt. Dies wird Delta Keptrum [3] genannt, und dieses Mal wird nicht nur die Differenzierung erster Ordnung, sondern auch die Differenzierung zweiter Ordnung berechnet und als Merkmalsgröße verwendet.
Für einen der in CNTK integrierten Reader, HTKDeserializer und HTKMLFDeserializer, sind drei Dateien erforderlich: eine Listendatei, eine Skriptdatei und eine Modellbeschriftungsdatei.
Die Listendatei muss die phonetische Bezeichnung haben, damit sie wie unten gezeigt eindeutig geschrieben werden kann. Fügen Sie außerdem _ als Leerzeichen hinzu.
atr503_mapping.list
A
E
...
z
_
Der Inhalt der Skriptdatei lautet wie folgt: Schreiben Sie den Pfad, in dem die Datei im HTK-Format gespeichert ist, auf die rechte Seite der gleichen Anzahl und die Anzahl der Frames in die Klammer. Beachten Sie, dass der Anfang der Anzahl der Frames 0 sein muss und das Ende von der Anzahl der Frames abgezogen werden muss.
train_atr503.scp
train_atr503/00000.mfc=./train_atr503/00000.htk[0,141]
train_atr503/00001.mfc=./train_atr503/00001.htk[0,258]
...
Die linke Seite der gleichen Zahl in der Skriptdatei muss der Modellbeschriftungsdatei entsprechen. Der Inhalt der Modelletikettendatei lautet wie folgt, und der Rahmen und das phonetische Etikett beginnen in der zweiten Zeile. Der Rahmenabstand muss größer oder gleich 1 sein, und 5 0s müssen konstruktionsbedingt hinzugefügt werden. Beschriftungsinformationen werden durch Punkte getrennt.
train_atr503.mlf
#!MLF!#
"train_atr503/00000.lab"
0 1600000 sil
1600000 1800000 h
...
13600000 14200000 sil
.
"train_atr503/00001.lab"
0 400000 sil
400000 1100000 s
...
Wenn Sie das Programm ausführen, werden Features generiert und eine Binärdatei im HTK-Format gespeichert. Schreiben Sie gleichzeitig den Rahmen und das phonetische Etikett.
Number of labels : 43
Number of samples 452
Number of samples 51
Jetzt, da Sie bereit sind zu trainieren, werden in Teil 2 die phonetischen Vorhersagen getroffen.
CNTK 208: Training Acoustic Model with Connectionist Temporal Classification (CTC) Criteria
Speech Recognition : Genre Classification Part1 - GTZAN Genre Collections