L'objectif du projet est de distiller la recherche automatique de reconnaissance vocale. Au début, vous pouvez charger un pipeline prêt à l'emploi avec un modèle pré-formé. Bénéficier de la TensorFlow 2.0 avides et surveillez librement les poids, activations ou gradients du modèle.
import automatic_speech_recognition as asr
file = 'to/test/sample.wav' # sample rate 16 kHz, and 16 bit depth
sample = asr . utils . read_audio ( file )
pipeline = asr . load ( 'deepspeech2' , lang = 'en' )
pipeline . model . summary () # TensorFlow model
sentences = pipeline . predict ([ sample ])Nous soutenons l'anglais (grâce à l'Open SEQ2SEQ). Les résultats de l'évaluation de l'anglais Benchmark LibRispenech Dev-Clean sont dans le tableau. Pour référence, le DeepSpeech (Mozilla) atteint environ 7,5% WER, tandis que l'état de la technologie (Université Aachen RWTH) est égal à 2,3% (les résultats de l'évaluation récents peuvent être trouvés ici). Tous deux, utilisez le modèle de langue externe pour augmenter les résultats. En comparaison, les humains atteignent 5,83% de Wer ici (LibRispeech Dev-Clean)
| Nom du modèle | Décodeur | Wer-dev |
|---|---|---|
deepspeech2 | cupide | 6.71 |
Peu de temps en temps, il vous convient de régler un peu le pipeline. Jetez un œil au pipeline CTC. Le pipeline est responsable de la connexion d'un modèle de réseau neuronal avec toutes les transformations non différentiels (caractéristiques d'extraction ou de décodage de prédiction). Les composants du pipeline sont indépendants. Vous pouvez les ajuster à vos besoins, par exemple, utilisez une extraction de fonctionnalités plus sophistiquée, une augmentation des données différentes ou ajouter le décodeur de modèle de langue (n-grammes statiques ou transformateurs énormes). Vous pouvez faire beaucoup plus comme distribuer la formation en utilisant la stratégie ou expérimenter avec une politique de précision mixte.
import numpy as np
import tensorflow as tf
import automatic_speech_recognition as asr
dataset = asr . dataset . Audio . from_csv ( 'train.csv' , batch_size = 32 )
dev_dataset = asr . dataset . Audio . from_csv ( 'dev.csv' , batch_size = 32 )
alphabet = asr . text . Alphabet ( lang = 'en' )
features_extractor = asr . features . FilterBanks (
features_num = 160 ,
winlen = 0.02 ,
winstep = 0.01 ,
winfunc = np . hanning
)
model = asr . model . get_deepspeech2 (
input_dim = 160 ,
output_dim = 29 ,
rnn_units = 800 ,
is_mixed_precision = False
)
optimizer = tf . optimizers . Adam (
lr = 1e-4 ,
beta_1 = 0.9 ,
beta_2 = 0.999 ,
epsilon = 1e-8
)
decoder = asr . decoder . GreedyDecoder ()
pipeline = asr . pipeline . CTCPipeline (
alphabet , features_extractor , model , optimizer , decoder
)
pipeline . fit ( dataset , dev_dataset , epochs = 25 )
pipeline . save ( '/checkpoint' )
test_dataset = asr . dataset . Audio . from_csv ( 'test.csv' )
wer , cer = asr . evaluate . calculate_error_rates ( pipeline , test_dataset )
print ( f'WER: { wer } CER: { cer } ' )Vous pouvez utiliser PIP:
pip install automatic-speech-recognitionSinon, clonez le code et créez un nouvel environnement via Conda:
git clone https://github.com/rolczynski/Automatic-Speech-Recognition.git
conda env create -f=environment.yml # or use: environment-gpu.yml
conda activate Automatic-Speech-RecognitionLes référentiels fondamentaux:
De plus, vous pouvez explorer le github à l'aide de phrases clés comme ASR , DeepSpeech ou Speech-To-Text . La liste wer_are_we, une tentative de suivi des états de l'art, peut également être utile.