O objetivo do projeto é destilar a pesquisa automática de reconhecimento de fala. No início, você pode carregar um pipeline pronto para uso com um modelo pré-treinado. Beneficie -se do Aleght TensorFlow 2.0 e monitore livremente os pesos do modelo, ativações ou gradientes.
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 ])Apoiamos o inglês (graças ao Open SEQ2SEQ). Os resultados da avaliação do referência inglesa de Librisseech Dev-Clean estão na tabela. Para referência, o DeepSpeech (Mozilla) alcança cerca de 7,5%, enquanto o estado da arte (Universidade RWTH Aachen) é igual a 2,3% (resultados recentes de avaliação podem ser encontrados aqui). Ambos, use o modelo de idioma externo para aumentar os resultados. Em comparação, os seres humanos alcançam 5,83% aqui (LibreseChEech Dev-Clean)
| Nome do modelo | Decodificador | Wer-dev |
|---|---|---|
deepspeech2 | ambicioso | 6.71 |
Logo, acontece que você precisa ajustar um pouco o pipeline. Dê uma olhada no pipeline da CTC. O pipeline é responsável por conectar um modelo de rede neural com todas as transformações não diferenciais (apresenta decodificação de extração ou previsão). Os componentes do pipeline são independentes. Você pode ajustá-los às suas necessidades, por exemplo, usar extração de recursos mais sofisticada, aumento de dados diferentes ou adicionar o decodificador do modelo de idioma (gramas estáticas ou enormes transformadores). Você pode fazer muito mais como distribuir o treinamento usando a estratégia ou experimentar a política de precisão mista.
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 } ' )Você pode usar o PIP:
pip install automatic-speech-recognitionCaso contrário, clone o código e crie um novo ambiente 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-RecognitionOs repositórios fundamentais:
Além disso, você pode explorar o github usando frases-chave como ASR , DeepSpeech ou Speech-To-Text . A lista wer_are_we, uma tentativa de rastrear estados da arte, também pode ser útil.