[PYTHON] Reconnaissance vocale: Prédiction de phonèmes Part1 - Ensemble de données de la parole ATR

Cible

Nous avons résumé les prédictions phonétiques à l'aide du Microsoft Cognitive Toolkit (CNTK).

Dans la partie 1, nous préparerons la prédiction phonétique.

Je vais les présenter dans l'ordre suivant.

  1. Téléchargez un exemple de jeu de données audio ATR
  2. Création de fonctionnalités et enregistrement de fichiers au format HTK
  3. Création d'un fichier à lire par le lecteur intégré fourni par CNTK

introduction

Télécharger un exemple de jeu de données audio ATR

Le jeu de données audio d'exemple ATR [1] est un jeu de données d'énoncés composé des phonèmes de la base de données ATR.

atr_503_v1.0.tar.gz

Téléchargez et décompressez atr_503_v1.0.tar.gz à partir du lien ci-dessus. Les données audio existent dans le fichier .ad sous le répertoire de parole, et l'étiquette phonétique utilisée cette fois est le fichier .lab sous l'ancien répertoire sous étiquette / monophone.

La structure des répertoires cette fois est la suivante.

CTCR  |―atr_503   |―label   |―speech   |―...  ctcr_atr503.py MGCC

Création de fonctionnalités et enregistrement de fichiers au format HTK

Les données audio sont stockées dans un type entier signé big-endian 16 bits avec une fréquence d'échantillonnage de 16 000, de sorte que la plage de valeurs est divisée par la valeur maximale de 2 $ ^ {16} / 2-1 = 32 767 $ [-1, 1] Normaliser à.

Cette fois, le coefficient Mel Frequency Cepstrum (MFCC) a été calculé à partir des données audio. Le nombre de fonctionnalités utilisées est de 13 dimensions.

De plus, une accentuation haute fréquence est appliquée aux données audio en tant que prétraitement. De plus, les différenciations de premier et de second ordre de MFCC sont combinées pour créer un total de quantités de caractéristiques à 39 dimensions.

Les fonctionnalités créées sont écrites et enregistrées sous forme de fichier binaire au format HTK (Hidden Markov Toolkit).

Création d'un fichier à lire par le lecteur intégré fourni par CNTK

Au cours de cette formation, nous utiliserons HTKDeserializer et HTKMLFDeserializer, qui sont l'un des lecteurs intégrés spécialisés dans la reconnaissance vocale.

Le flux de traitement général du programme qui prépare la prédiction phonétique est le suivant.

  1. Séparation des données de formation et des données de vérification
  2. Création d'un fichier de liste d'étiquettes phonétiques
  3. Génération de fonctionnalités et stockage de fichiers au format HTK, écriture de trames et d'étiquettes phonétiques

la mise en oeuvre

Environnement d'exécution

Matériel

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

Logiciel

・ Windows 10 Professionnel 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

Programme à exécuter

Le programme implémenté est publié sur GitHub.

ctcr_atr503.py


Commentaire

Il complète le contenu essentiel du programme à exécuter.

Filtre d'amélioration haute fréquence

La puissance de la voix est atténuée à mesure qu'elle augmente, de sorte que l'amélioration des hautes fréquences est utilisée pour la compenser. En supposant que la fréquence est $ f $ et la fréquence d'échantillonnage est $ f_s $, le filtre à réponse impulsionnelle finie (FIR) du premier ordre $ H (z) $ utilisé comme filtre passe-haut est exprimé par l'équation suivante.

H(z) = 1 - \alpha z^{-1} \\
z = \exp(j \omega), \omega = 2 \pi f / f_s

Généralement, $ \ alpha = 0.97 $ est utilisé.

Mel Frequency Keptram

Mel Frequency Kepstram convertit le spectre de puissance du spectrogramme Mel utilisé dans Speech Recognition: Genre Classification Part1 --GTZAN Genre Collections en décibels, puis en conversion cosinus discrète. Obtenu en postulant.

Cepstrum [2] est un anagramme de Spectrum qui peut séparer les fluctuations fines et douces du spectre et représenter les caractéristiques de la voix humaine.

De plus, afin de capturer le changement d'heure de la quantité de caractéristiques, la différence entre les images adjacentes est également ajoutée en tant que quantité de caractéristiques. Cela s'appelle Delta Keptram [3], et cette fois, non seulement la différenciation du premier ordre mais aussi la différenciation du second ordre est calculée et utilisée comme quantité de caractéristiques.

HTKDeserializer et HTKMLFDeserializer

L'un des lecteurs intégrés de CNTK, HTKDeserializer et HTKMLFDeserializer, nécessite trois fichiers: un fichier de liste, un fichier de script et un fichier d'étiquette de modèle.

Le fichier de liste doit avoir l'étiquette phonétique à utiliser de manière unique, comme indiqué ci-dessous. Ajoutez également _ comme caractère vide.

atr503_mapping.list


A
E
...
z
_

Le contenu du fichier de script est le suivant: Écrivez le chemin où le fichier au format HTK est enregistré sur le côté droit du nombre égal et écrivez le nombre d'images entre crochets. Notez que le début du nombre d'images doit être 0 et la fin doit être soustraite du nombre d'images.

train_atr503.scp


train_atr503/00000.mfc=./train_atr503/00000.htk[0,141]
train_atr503/00001.mfc=./train_atr503/00001.htk[0,258]
...

Le côté gauche du nombre égal dans le fichier de script doit correspondre au fichier d'étiquette de modèle. Le contenu du fichier de fichier d'étiquette de modèle est le suivant, et le cadre et l'étiquette phonétique commencent à partir de la deuxième ligne. L'espacement des cadres doit être supérieur ou égal à 1, et 5 0 doivent être ajoutés par conception. Les informations d'étiquette sont séparées par des points.

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

résultat

Lorsque vous exécutez le programme, il génère des fonctionnalités et enregistre un fichier binaire au format HTK. En même temps, écrivez le cadre et l'étiquette phonétique.

Number of labels : 43


Number of samples 452

Number of samples 51

Maintenant que vous êtes prêt à vous entraîner, la partie 2 fera les prédictions phonétiques.

référence

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

Speech Recognition : Genre Classification Part1 - GTZAN Genre Collections

  1. Yoshiro Yoshida, Takeo Fukurotani et Toshiyuki Takezawa. "ATR Voice Database", Actes de la Conférence nationale de la Society of Artificial Intelligence 0 (2002): pp. 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. «Reconnaissance vocale de la série professionnelle Machine Learning», Kodansha, 2017.

Recommended Posts

Reconnaissance vocale: Prédiction de phonèmes Part1 - Ensemble de données de la parole ATR
Reconnaissance vocale: Prédiction phonémique Partie 2 - Classification temporelle connectionniste RNN
Reconnaissance vocale: Classification des genres - Partie 1 - Collections de genres du GTZAN
Reconnaissance vocale avec Python