이 repo는 NEMO의 세 가지 주요 구성 요소를 툴킷 자체를 더 깊이 파헤칠 필요없이 쉽게 사용할 수있는 웹 인터페이스로 결합하려는 시도입니다.
NEMO는 "Neural Modules"의 약자이며 자동 음성 인식 (ASR), 자연어 처리 (NLP) 및 텍스트 합성 (TTS)을위한 사전 구축 된 모듈 컬렉션으로 Bey Nvidia를 만든 툴킷입니다. NEMO는 다음으로 구성됩니다.
NEMO 's는 프레임 워크에 대한 정보로 설계되었지만 현재 Pytorch 만 지원됩니다. 또한 NEMO는 최신 NVIDIA GPU에 대한 분산 교육 및 혼합 정밀도에 대한 내장 지원을 제공합니다.
이 저장소를 시작하려면 설치해야합니다.
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 모델을 사용할 때 언어 모델을 사용하려면 Baidu의 CTC 디코더를 설치해야합니다.
./scripts/install_decoders.sh
여기서는 NEMO 컬렉션 내에서 자동 음성 인식을 사용하는 방법을 설명하겠습니다. 이 단계를 수행하여 쉽게 할 수 있습니다.
여기에서 미리 훈련 된 모델을 다운로드하십시오. 자신의 모델을 훈련시킨 경우이 단계를 건너 뛸 수 있습니다. 나 자신은 Quartznet15x5 Jasper 모델을 사용했습니다. 여기에서 다운로드 할 수 있습니다.
asr_model 디렉토리 내에서 ASR 모델을 찾으십시오. 또는 원하는 곳을 찾으십시오. 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 컬렉션 내부의 텍스트 to Speech 모듈을 사용하는 방법을 설명하겠습니다. 이 단계를 수행하여 쉽게 할 수 있습니다.
여기에서 미리 훈련 된 모델을 다운로드하십시오. 자신의 모델을 훈련시킨 경우이 단계를 건너 뛸 수 있습니다. 나 자신은 ljspeech 데이터 세트에서 Tacotron2 모델 Traind를 사용했습니다. 여기에서 다운로드 할 수 있습니다.
tts_model 디렉토리 내에서 TTS 모델을 찾으십시오. 또는 원하는 곳에 위치하고 Yaml 변수 tts: model_dir 내부 conf.yaml 파일을 편집하십시오.
보코더 모델을 결정하십시오 ... Tacotron1에 사용되는 griffin-lim 사용할 수 있으며, 이는 매우 빠르며 훈련이 필요하지 않습니다. 그러나 더 나은 결과를 얻으려면 다음 중 하나가 필요합니다.
(선택 사항) WaveGlow Vocoder를 사용하기로 결정한 경우이 디렉토리에서 찾아야합니다 ./tts_model/waveglow . 또는 원하는 곳에 위치 할 수 있습니다. Yaml 변수 tts: vocoder_dir 내부 conf.yaml 파일을 편집하십시오.
선호하는 텍스트에서 Speech-Synthesis 작업을 수행하려면 다음 코드를 실행하십시오.
>>> 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
자세한 내용은 여기에서 공식 문서를 확인할 수 있습니다.