Das Projektziel ist es, die automatische Forschung für die Spracherkennung zu destillieren. Zu Beginn können Sie eine vorhandene Pipeline mit einem vorgeborenen Modell laden. Profitieren Sie vom eifrigen TensorFlow 2.0 und überwachen Sie die Modellgewichte, Aktivierungen oder Gradienten frei.
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 ])Wir unterstützen Englisch (dank Open SEQ2SEQ). Die Bewertungsergebnisse der englischen Benchmark-Librispeech-Dev-Clean befinden sich in der Tabelle. Um zu verweisen, erreicht der Deepspeech (Mozilla) rund 7,5% WER, während die hochmoderne (RWTH Aachen University) 2,3% WER beträgt (die aktuellen Bewertungsergebnisse finden Sie hier). Verwenden Sie beide das externe Sprachmodell, um die Ergebnisse zu steigern. Zum Vergleich: Menschen erreichen hier 5,83% WER (Librispeech Dev-Clean)
| Modellname | Decoder | Wer-dev |
|---|---|---|
deepspeech2 | gierig | 6.71 |
In Kürze stellt sich heraus, dass Sie die Pipeline ein wenig einstellen müssen. Schauen Sie sich die CTC -Pipeline an. Die Pipeline ist für die Verbindung eines neuronalen Netzwerkmodells mit allen nicht-differentiellen Transformationen (Merkmalextraktion oder Vorhersage-Dekodierung) verantwortlich. Pipeline -Komponenten sind unabhängig. Sie können sie an Ihre Bedürfnisse anpassen, z. B. eine ausgefeiltere Feature-Extraktion, unterschiedliche Datenvergrößerung oder den Sprachmodell-Decoder (statische N-Gramm oder riesige Transformatoren) hinzufügen. Sie können das Training mit der Strategie viel mehr so verteilen oder mit gemischten Präzisionsrichtlinien experimentieren.
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 } ' )Sie können PIP verwenden:
pip install automatic-speech-recognitionAndernfalls klonen Sie den Code und erstellen Sie eine neue Umgebung über 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-RecognitionDie grundlegenden Repositorys:
Darüber hinaus können Sie den GitHub mithilfe von Schlüsselphrasen wie ASR , DeepSpeech oder Speech-To-Text untersuchen. Die Liste Wer_are_We, ein Versuch, Zustände der Kunst zu verfolgen, kann auch hilfreich sein.