Este repositório é uma tentativa de combinar os três componentes principais do NEMO em uma interface da Web que pode ser usada facilmente sem a necessidade de se aprofundar no próprio kit de ferramentas.
Nemo significa "módulos neurais" e é um kit de ferramentas criado Bey Nvidia com uma coleção de módulos pré-criados para reconhecimento automático de fala (ASR), processamento de linguagem natural (PNL) e síntese de texto (TTS). Nemo consiste em:
O NEMO's foi projetado para ser-estrutura-estrutura, mas atualmente apenas o Pytorch é suportado. Além disso, o NEMO fornece suporte interno para treinamento distribuído e precisão mista nas GPUs NVIDIA mais recentes.
Para começar com este repositório, você precisa instalar:
pip install -r requirements.txt
Se sua máquina suportar CUDA, você precisará instalar o NVIDIA APEX para obter o melhor desempenho nos modelos de treinamento/avaliação.
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
Se você deseja usar um modelo de idioma ao usar o modelo ASR, é necessário instalar os decodificadores do CTC do Baidu:
./scripts/install_decoders.sh
Aqui, vou explicar como usar o reconhecimento automático de fala dentro das coleções NEMO . Você pode fazer isso facilmente seguindo essas etapas:
Faça o download de um modelo pré-treinado daqui. Se você treinou seu próprio modelo, pode pular esta etapa. Eu, eu mesmo, usei o modelo Jasper QuartzNet15x5. Você pode baixá -lo aqui.
Localize seu modelo ASR dentro do diretório asr_model . Ou localize -o para qualquer lugar onde quiser, basta editar a variável YAML asr: model_dir Inside conf.yaml .
Grave um áudio pela sua voz. Ou você pode baixar uma amostra de áudio, eu usei isso.
Execute o código a seguir para obter a transcrição de ondas:
>>> 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 mais informações, você pode verificar a documentação oficial daqui.
Aqui, vou explicar como usar o módulo de texto para o módulo de fala dentro das coleções NEMO . Você pode fazer isso facilmente seguindo essas etapas:
Faça o download de um modelo pré-treinado daqui. Se você treinou seu próprio modelo, pode pular esta etapa. Eu mesmo usei o modelo TACOTRON2 TRIND no conjunto de dados LJSpeech. Você pode baixá -lo aqui.
Localize seu modelo TTS dentro do diretório tts_model . Ou localize -o para qualquer lugar onde quiser, basta editar a variável YAML tts: model_dir Inside conf.yaml .
Determine um modelo de vocoder ... você pode usar griffin-lim usado no Tacotron1, que é super rápido e não precisa de treinamento. Mas, se você quiser obter melhores resultados, terá que: também:
(Opcional) Se você decidiu usar um vocoder de Waveglow , precisará localizá -lo neste diretório ./tts_model/waveglow . Ou você pode localizá -lo para onde quiser, basta editar a variável YAML tts: vocoder_dir Inside conf.yaml arquivo.
Execute o código a seguir para executar uma operação de síntese de fala em seu 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 mais informações, você pode verificar a documentação oficial daqui.