Este repositorio es un intento de combinar los tres componentes principales de NEMO en una interfaz web que se puede usar fácilmente sin la necesidad de profundizar en el conjunto de herramientas.
NEMO significa "módulos neuronales" y es un kit de herramientas creado Bey nvidia con una colección de módulos preconstruidos para el reconocimiento automático de voz (ASR), el procesamiento del lenguaje natural (PNL) y la síntesis de texto (TTS). Nemo consiste en:
Nemo's está diseñado para ser agnóstico de marco, pero actualmente solo es compatible con Pytorch. Además, NEMO proporciona soporte incorporado para capacitación distribuida y precisión mixta en las últimas GPU de NVIDIA.
Para comenzar con este repositorio, debe instalar:
pip install -r requirements.txt
Si su máquina admite CUDA, entonces debe instalar NVIDIA APEX para obtener el mejor rendimiento en los modelos de capacitación/evaluación.
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
Si desea usar un modelo de idioma cuando use el modelo ASR, debe instalar los decodificadores CTC de Baidu:
./scripts/install_decoders.sh
Aquí, voy a explicar cómo usar el reconocimiento automático de voz dentro de Nemo Collections . Puede hacerlo fácilmente siguiendo estos pasos:
Descargue un modelo previamente capacitado desde aquí. Si ha entrenado su propio modelo, puede omitir este paso. Yo, yo mismo, usé el modelo Jasper QuartzNet15x5. Puedes descargarlo desde aquí.
Localice su modelo ASR dentro del directorio asr_model . O localice en cualquier lugar donde desee, simplemente edite la variable YAML asr: model_dir dentro del archivo conf.yaml .
Grabe un audio por su voz. O puede descargar una muestra de audio, lo he usado.
Ejecute el siguiente código para obtener la transcripción de onda:
>>> 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"]
Para obtener más información, puede consultar la documentación oficial desde aquí.
Aquí, voy a explicar cómo usar el módulo de texto a discurso dentro de las colecciones Nemo . Puede hacerlo fácilmente siguiendo estos pasos:
Descargue un modelo previamente capacitado desde aquí. Si ha entrenado su propio modelo, puede omitir este paso. Yo mismo usé el modelo Tacotron2 Traind en el conjunto de datos LJSPEECH. Puedes descargarlo desde aquí.
Localice su modelo TTS dentro del directorio tts_model . O localice en cualquier lugar donde desee, simplemente edite la variable YAML tts: model_dir Inside conf.yaml File.
Determine un modelo de Vocoder ... Puede usar griffin-lim usado en Tacotron1, que es súper rápido y no necesita ningún entrenamiento. Pero, si desea obtener mejores resultados, tendrá que:
(Opcional) Si decidió usar un Vo Vocoder de Glow , entonces debe localizarlo en este directorio ./tts_model/waveglow . O puede localizarlo en cualquier lugar donde desee, simplemente edite la variable YAML tts: vocoder_dir Inside conf.yaml File.
Ejecute el siguiente código para realizar una operación de síntesis del habla en su texto preferido:
>>> 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
Para obtener más información, puede consultar la documentación oficial desde aquí.