このレポは、Nemoの3つの主要なコンポーネントすべてをすべてWebインターフェイスに組み合わせようとする試みです。Webインターフェイスは、ツールキット自体をより深く掘り下げる必要なく簡単に使用できます。
Nemoは「ニューラルモジュール」の略で、自動音声認識(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コレクション内のテキストから音声モジュールを使用する方法を説明します。この手順に従うことで、それを簡単に行うことができます。
ここから事前に訓練されたモデルをダウンロードしてください。独自のモデルをトレーニングしている場合は、この手順をスキップできます。私自身、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ファイルを編集するだけです。
次のコードを実行して、お好みのテキストで音声合成操作を実行します。
>>> 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
詳細については、ここから公式のドキュメントを確認できます。