El objetivo del proyecto es destilar la investigación automática de reconocimiento de voz. Al principio, puede cargar una tubería lista para usar con un modelo previamente capacitado. Beneficiarse del ansioso TensorFlow 2.0 y monitoree libremente los pesos, activaciones o gradientes del modelo.
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 ])Apoyamos el inglés (gracias a Open SEQ2SEQ). Los resultados de la evaluación del punto de referencia en inglés Librispeech Dev-Clean están en la tabla. Para hacer referencia, el intervalo profundo (Mozilla) logra alrededor del 7,5% de WER, mientras que el estado del arte (RWTH Aachen University) equivale al 2.3% WER (los resultados de la evaluación recientes se pueden encontrar aquí). Ambos, usan el modelo de lenguaje externo para aumentar los resultados. En comparación, los humanos logran 5.83% fueron aquí (Librispeech Dev-Clean)
| Nombre del modelo | Descifrador | Wer-Dev |
|---|---|---|
deepspeech2 | avaro | 6.71 |
En breve resulta que necesita ajustar un poco la tubería. Eche un vistazo a la tubería CTC. La tubería es responsable de conectar un modelo de red neuronal con todas las transformaciones no diferenciales (características de extracción o decodificación de predicción). Los componentes de la tubería son independientes. Puede ajustarlos a sus necesidades, por ejemplo, Use la extracción de características más sofisticada, el aumento de los datos de diferentes datos o agregar el decodificador del modelo de lenguaje (n-gramos estáticos o enormes transformadores). Puede hacer mucho más como distribuir la capacitación utilizando la estrategia o experimentar con una política de precisión mixta.
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 } ' )Puedes usar pip:
pip install automatic-speech-recognitionDe lo contrario, clona el código y cree un nuevo entorno a través de 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-RecognitionLos repositorios fundamentales:
Además, puede explorar el GitHub utilizando frases clave como ASR , DeepSpeech o Speech-To-Text . La lista Wer_are_we, un intento de rastrear estados del arte, también puede ser útil.