Этот репо является попыткой объединить все три основных компонента Nemo в веб -интерфейс, который можно легко использовать без необходимости углубляться в сам инструментарий.
Nemo означает «нейронные модули», и это инструментарий, созданный Bey Nvidia с коллекциями предварительно построенных модулей для автоматического распознавания речи (ASR), обработки естественного языка (NLP) и синтеза текста (TTS). Немо состоит из:
Nemo's предназначены для того, чтобы быть агроностическими, но в настоящее время поддерживается только Pytorch. Кроме того, NEMO обеспечивает встроенную поддержку для распределенного обучения и смешанной точности на последних графических процессорах NVIDIA.
Чтобы начать с этого репозитория, вам нужно установить:
pip install -r requirements.txt
Если ваша машина поддерживает CUDA, вам необходимо установить NVIDIA Apex для наилучшей производительности для обучения/оценки моделей.
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
Если вы хотите использовать языковую модель при использовании модели ASR, вам нужно установить декодеры CTC от Baidu:
./scripts/install_decoders.sh
Здесь я собираюсь объяснить, как использовать автоматическое распознавание речи в коллекциях Nemo . Вы можете сделать это легко, выполнив эти шаги:
Загрузите предварительно обученную модель отсюда. Если вы обучили свою собственную модель, то вы можете пропустить этот шаг. Я сам использовал модель Quartznet15x5 Jasper. Вы можете скачать его отсюда.
Найдите свою модель ASR внутри каталога asr_model . Или найдите его в любом месте, где вы хотите, просто отредактируйте переменную YAML asr: model_dir внутри файла conf.yaml .
Запишите звук от вашего голоса. Или вы можете скачать аудио -образец, я использовал это.
Запустите следующий код, чтобы получить транскрипцию волны:
>>> 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"]
Для получения дополнительной информации вы можете проверить официальную документацию отсюда.
Здесь я собираюсь объяснить, как использовать модуль текста для речевого речевого модуля в коллекциях Nemo . Вы можете сделать это легко, выполнив эти шаги:
Загрузите предварительно обученную модель отсюда. Если вы обучили свою собственную модель, то вы можете пропустить этот шаг. Я сам использовал Tacotron2 Model Traind на наборе данных LJSPEECH. Вы можете скачать его отсюда.
Найдите свою модель TTS в каталоге tts_model . Или найдите его в любом месте, где вы хотите, просто отредактируйте переменную YAML tts: model_dir внутри файла conf.yaml .
Определите модель Vocoder ... Вы можете использовать griffin-lim используемый в Tacotron1, который очень быстрый и не нуждается в обучении. Но, если вы хотите получить лучшие результаты, вам придется либо:
(Необязательно) Если вы решили использовать вокадчик волн , вам нужно найти его в этом каталоге ./tts_model/waveglow . Или вы можете найти его в любом случае, просто отредактируйте переменную YAML tts: vocoder_dir внутри файла conf.yaml .
Запустите следующий код, чтобы выполнить операцию речевого синтеза в своем предпочтительном тексте:
>>> 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
Для получения дополнительной информации вы можете проверить официальную документацию отсюда.