Ce dépôt est une tentative de combinaison des trois principaux composants de NEMO dans une interface Web qui peut être utilisée facilement sans avoir besoin de creuser plus profondément dans la boîte à outils elle-même.
NEMO signifie «modules de neurones» et c'est une boîte à outils créée par des nvidia avec une collection de modules prédéfinis pour la reconnaissance automatique de la parole (ASR), le traitement du langage naturel (NLP) et la synthèse du texte (TTS). Nemo se compose de:
NEMO est conçu pour être agnostique du cadre, mais actuellement seul Pytorch est pris en charge. En outre, NEMO fournit un support intégré pour une formation distribuée et une précision mixte sur les derniers GPU NVIDIA.
Pour commencer avec ce référentiel, vous devez installer:
pip install -r requirements.txt
Si votre machine prend en charge CUDA, vous devez installer Nvidia Apex pour de meilleures performances sur les modèles de formation / évaluation.
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
Si vous souhaitez utiliser un modèle de langue lorsque vous utilisez un modèle ASR, vous devez installer les décodeurs CTC de Baidu:
./scripts/install_decoders.sh
Ici, je vais expliquer comment utiliser la reconnaissance vocale automatique dans les collections NEMO . Vous pouvez le faire facilement en suivant ces étapes:
Téléchargez un modèle pré-formé à partir d'ici. Si vous avez formé votre propre modèle, vous pouvez ignorer cette étape. Moi-même, j'ai utilisé le modèle Jasper Quartznet15x5. Vous pouvez le télécharger à partir d'ici.
Localisez votre modèle ASR dans le répertoire asr_model . Ou localisez-le n'importe où vous voulez, modifiez simplement la variable YAML asr: model_dir dans le fichier conf.yaml .
Enregistrez un son par votre voix. Ou vous pouvez télécharger un échantillon audio, j'ai utilisé cela.
Exécutez le code suivant pour obtenir la transcription des vagues:
>>> from asr import ASR
>>> asr_model = ASR()
2019-12-31 10:59:38,248 - INFO - PADDING: 16
2019-12-31 10:59:38,249 - INFO - STFT using conv
2019-12-31 10:59:39,491 - INFO - ================================
2019-12-31 10:59:39,495 - INFO - Number of parameters in encoder: 18894656
2019-12-31 10:59:39,495 - INFO - Number of parameters in decoder: 29725
2019-12-31 10:59:39,498 - INFO - Total number of parameters in model: 18924381
2019-12-31 10:59:39,499 - INFO - ================================
>>>
>>> wav_filepath = "./romance_gt.wav"
>>> asr_model.transcribe(wav_filepath)
2019-12-31 10:57:50,554 - INFO - Started Transcribing Speech
2019-12-31 10:57:50,582 - INFO - Dataset loaded with 0.00 hours. Filtered 0.00 hours.
2019-12-31 10:57:50,584 - INFO - Loading 1 examples
2019-12-31 10:57:52,799 - INFO - Evaluating batch 0 out of 1
You said: ["i'm too busy for romance"]
Pour plus d'informations, vous pouvez consulter la documentation officielle à partir d'ici.
Ici, je vais expliquer comment utiliser le module texte à discours dans les collections NEMO . Vous pouvez le faire facilement en suivant ces étapes:
Téléchargez un modèle pré-formé à partir d'ici. Si vous avez formé votre propre modèle, vous pouvez ignorer cette étape. Moi-même, j'ai utilisé le Tacotron2 Model Traind sur le jeu de données LJSpeech. Vous pouvez le télécharger à partir d'ici.
Localisez votre modèle TTS dans le répertoire tts_model . Ou localisez-le où vous voulez, modifiez simplement la variable YAML tts: model_dir dans le fichier conf.yaml .
Déterminez un modèle de vocodeur ... Vous pouvez utiliser griffin-lim utilisé dans Tacotron1 qui est super rapide et n'a besoin d'aucune formation. Mais, si vous voulez obtenir de meilleurs résultats, alors vous devrez soit:
(Facultatif) Si vous avez décidé d'utiliser un vocodeur de luminaire Wave , vous devez le localiser dans ce répertoire ./tts_model/waveglow . Ou vous pouvez le localiser n'importe où vous le souhaitez, modifiez simplement la variable YAML tts: vocoder_dir dans le fichier conf.yaml .
Exécutez le code suivant pour effectuer une opération de synthèse de la parole sur votre texte préféré:
>>> from tts import TTS
>>> tts_model = TTS()
2019-12-31 11:15:02,897 - INFO - ================================
2019-12-31 11:15:03,001 - INFO - Number of parameters in text-embedding: 35328
2019-12-31 11:15:03,089 - INFO - Number of parameters in encoder: 5513728
2019-12-31 11:15:03,285 - INFO - Number of parameters in decoder: 18255505
2019-12-31 11:15:03,373 - INFO - Number of parameters in postnet: 4348144
2019-12-31 11:15:03,373 - INFO - Total number of parameters in model: 28152705
2019-12-31 11:15:03,373 - INFO - Loading waveglow as a vocoder
2019-12-31 11:15:15,161 - INFO - ================================
>>>
>>> text = "Speech synthesis is pretty cool"
>>> tts_model.synthesis(text)
2019-12-31 11:23:33,953 - INFO - Starting speech synthesis
2019-12-31 11:23:33,963 - INFO - Running Tacotron 2
2019-12-31 11:23:34,055 - INFO - Evaluating batch 0 out of 1
2019-12-31 11:23:35,689 - INFO - Running Waveglow as a vocoder
2019-12-31 11:23:35,690 - INFO - Evaluating batch 0 out of 1
2019-12-31 11:24:39,655 - INFO - Wav file was generated and named: waveglow_sample.wav
Pour plus d'informations, vous pouvez consulter la documentation officielle à partir d'ici.