[PYTHON] Spracherkennung: Phoneme Prediction Part1 --ATR Sprachdatensatz

Ziel

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.

  1. Laden Sie den ATR-Beispiel-Audiodatensatz herunter
  2. Erstellen von Funktionen und Speichern von Dateien im HTK-Format
  3. Erstellen einer Datei, die von dem von CNTK bereitgestellten integrierten Reader gelesen werden soll

Einführung

Laden Sie den ATR-Beispiel-Audiodatensatz herunter

Der ATR-Beispiel-Audiodatensatz [1] ist ein Äußerungsdatensatz, der aus den Reimen der ATR-Datenbank besteht.

atr_503_v1.0.tar.gz

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

Erstellen von Funktionen und Speichern von Dateien im HTK-Format

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.

Erstellen einer Datei zum Lesen durch den von CNTK bereitgestellten integrierten Reader

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.

  1. Trennung von Trainingsdaten und Verifizierungsdaten
  2. Erstellen einer Listendatei mit phonetischen Bezeichnungen
  3. Generierung von Features und Dateispeicherung im HTK-Format, Schreiben von Frames und phonetischen Etiketten

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz

Software

・ 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

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/SpeechRecognition/tree/master/CTCR).

ctcr_atr503.py


Kommentar

Es ergänzt die wesentlichen Inhalte des auszuführenden Programms.

Hochfrequenz-Verbesserungsfilter

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 Keptram

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.

HTKDeserializer und HTKMLFDeserializer

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
...

Ergebnis

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.

Referenz

CNTK 208: Training Acoustic Model with Connectionist Temporal Classification (CTC) Criteria

Speech Recognition : Genre Classification Part1 - GTZAN Genre Collections

  1. Yoshiro Yoshida, Takeo Fukurotani und Toshiyuki Takezawa. "ATR Voice Database", Proceedings of the National Conference der Society of Artificial Intelligence 0 (2002): S. 189-189.
  2. B.P. Bogert, M. J. R. Healy, and J. W. Tukey. "The quefrency analysis of time series for echoes: cepstrum, pseudo-autocovariance, cross-cepstrum, and saphe cracking", in Proceedings of the Sympsium on Time Series Analysis, Wiley, pp. 209-243(1963).
  3. S. Furui. "On the role of dynamic characteristics of speech spectra for syllable perception", IEEE Transaction on Acoustics, Speech, and Signal Processing, vol.34, no. 1, pp. 52-59(1986).
  4. Koichi Shinoda. "Spracherkennung Professional Series Voice Recognition", Kodansha, 2017.

Recommended Posts

Spracherkennung: Phoneme Prediction Part1 --ATR Sprachdatensatz
Spracherkennung: Phonemvorhersage Teil 2 - Connectionist Temporal Classification RNN
Spracherkennung: Genreklassifizierung Teil1 - GTZAN-Genresammlungen
Spracherkennung mit Python