Dieses Repo ist ein Versuch, alle drei Hauptkomponenten von NEMO zu einer Webschnittstelle zu kombinieren, die leicht verwendet werden kann, ohne dass sie tiefer in das Toolkit selbst eingraben werden müssen.
Nemo steht für "Neural Module" und es ist ein Toolkit, das Bey Nvidia mit Sammlungen vorgefertigter Module für die automatische Spracherkennung (ASR), natürliche Sprachverarbeitung (NLP) und Textsynthese (TTS) erstellt hat. Nemo besteht aus:
Nemo's ist so konzipiert, dass es rahmen-agnostisch ist, aber derzeit wird nur Pytorch unterstützt. Darüber hinaus bietet NEMO eine integrierte Unterstützung für verteilte Schulungen und gemischte Präzision für den neuesten NVIDIA-GPUs.
Um mit diesem Repository zu beginnen, müssen Sie installieren:
pip install -r requirements.txt
Wenn Ihre Maschine CUDA unterstützt, müssen Sie NVIDIA Apex für die beste Leistung für Trainings-/Bewertungsmodelle installieren.
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
Wenn Sie bei Verwendung eines ASR -Modells ein Sprachmodell verwenden möchten, müssen Sie die CTC -Decoder von Baidu installieren:
./scripts/install_decoders.sh
Hier werde ich erklären, wie die automatische Spracherkennung in NEMO -Sammlungen verwendet werden kann. Sie können dies einfach tun, indem Sie folgende Schritte ausführen:
Laden Sie hier ein vorgebildetes Modell herunter. Wenn Sie Ihr eigenes Modell trainiert haben, können Sie diesen Schritt überspringen. Ich selbst habe das Quarznet15x5 -Jasper -Modell verwendet. Sie können es von hier herunterladen.
Suchen Sie Ihr ASR -Modell im Verzeichnis asr_model . Oder finden Sie es, wo Sie möchten, bearbeiten Sie einfach die YAML -Variable asr: model_dir in conf.yaml -Datei.
Nehmen Sie ein Audio nach Ihrer Stimme auf. Oder Sie können ein Audio -Beispiel herunterladen, ich habe dies verwendet.
Führen Sie den folgenden Code aus, um die Wellentranskription zu erhalten:
>>> 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"]
Weitere Informationen finden Sie in der offiziellen Dokumentation von hier.
Hier werde ich erklären, wie man den Text zum Sprachmodul in NEMO -Sammlungen verwendet. Sie können dies einfach tun, indem Sie folgende Schritte ausführen:
Laden Sie hier ein vorgebildetes Modell herunter. Wenn Sie Ihr eigenes Modell trainiert haben, können Sie diesen Schritt überspringen. Ich selbst verwendete das Tacotron2 -Modell Traind auf dem LJSpeech -Datensatz. Sie können es von hier herunterladen.
Suchen Sie Ihr TTS -Modell im Verzeichnis tts_model . Oder finden Sie es, wo Sie möchten, bearbeiten Sie einfach die YAML -Variable tts: model_dir in conf.yaml -Datei.
Bestimmen Sie ein Vocoder-Modell ... Sie können griffin-lim verwenden, das in Tacotron1 verwendet wird, das super schnell ist und kein Training benötigt. Wenn Sie jedoch bessere Ergebnisse erzielen möchten, müssen Sie beider:
(Optional) Wenn Sie sich für einen Wellenlow -Vocoder entschieden haben, müssen Sie ihn in diesem Verzeichnis finden ./tts_model/waveglow . Oder Sie können es finden, wo Sie möchten. Bearbeiten Sie einfach die YAML -Variable tts: vocoder_dir in conf.yaml -Datei.
Führen Sie den folgenden Code aus, um eine Sprachsyntheseoperation in Ihrem bevorzugten Text durchzuführen:
>>> 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
Weitere Informationen finden Sie in der offiziellen Dokumentation von hier.