当前位置:   article > 正文

NVIDIA NeMo学习笔记_ffmpeg libsndfile

ffmpeg libsndfile

NeMo可以做以下三个方面的事情:

  • Automatic Speech Recognition (ASR):声纹识别
  • Natural Language Processing (NLP):自然语言处理
  • Text-to-Speech (TTS) models:文本转音频
    简单来说,里面集成了一些用于以上三个事情的模型和工具,可以拿自己的数据进行迁移使用,就和目标检测里面detectron类似。

对应以上任务分别是三个库:

  • nemo.collections.asr
  • nemo.collections.nlp
  • nemo.collections.tts

nemo安装

1.linux系统直接按照官方文档安装即可
2.mac
1)需要先安装ffmpeg和libsndfile1,
使用brew install ffmpeg 安装
如果电脑没有brew需要先安装brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 1

如果这个命令不行或者遇到connection refuse的问题,那么可以切换国内源

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
  • 1
  1. 推荐使用conda 虚拟环境安装
# conda 虚拟环境配置
conda env list
conda create -n nemo_test --clone base
conda activate nemo_test
# nemo安装
pip install nemo_toolkit['all']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

安装小坑总结,如果没有遇到可以忽略
a 安装过程中遇到
zsh:no_match
解决方案

vim ~/.bash
  • 1

b 遇到cmak需要安装cmake

brew install cmake
  • 1

c protobuf compiler not found
在这里插入图片描述

brew install protobuf
  • 1

d metadata error
在这里插入图片描述在这里插入图片描述

官方入门任务Colab
任务包含三个阶段:
1.识别俄语转化为文本
2.俄语文本翻译成英文
3.英文在生成语音
直接运行的话有坑,在导入collections系列时会报错:

File "/usr/local/lib/python3.7/dist-packages/webdataset/cache.py", line 43
while data := stream.read(chunk_size):
SyntaxError: invalid syntax
  • 1
  • 2
  • 3

其实就是安装的问题,安装要改成:

!apt-get update && apt-get install -y libsndfile1 ffmpeg
!pip install Cython
!pip install nemo_toolkit['all']
  • 1
  • 2
  • 3

识别的俄语:
在这里插入图片描述
翻译结果:
在这里插入图片描述

模型参数配置控制

Nemo使用OmegaConf和Hydra进行参数控制,
OmegaConf可以使用yaml格式的参数的配置文件,Hydra可以动态的在命令行修改参数。

以citrinet模型为例,主要的参数大概有这些:

  • preprocessor - MelSpectrogram preprocessing layer
  • encoder - The acoustic encoder model.
  • decoder - The CTC decoder layer.
  • optim (and potentially sched) - Optimizer configuration. Can optionally include Scheduler information.
  • spec_augment - Spectrogram Augmentation support.
  • train_ds, validation_ds and test_ds - Dataset and data loader construction information.
# 先导入一个模型
citrinet = nemo_asr.models.EncDecCTCModelBPE.from_pretrained('stt_en_citrinet_512')
#使用cfg获取模型参数
from omegaconf import OmegaConf
import copy
cfg = copy.deepcopy(citrinet.cfg)

# 修改配置文件
## OmegaConf won't allow you to add new config items, so we temporarily disable this safeguard.
OmegaConf.set_struct(cfg, False)

## Let's see the old optim config
print("Old Config: ")
print(OmegaConf.to_yaml(cfg.optim))
OmegaConf.to_yaml(cfg.optim)

sched = {'name': 'CosineAnnealing', 'warmup_steps': 1000, 'min_lr': 1e-6}
sched = OmegaConf.create(sched)  # Convert it into a DictConfig

## Assign it to cfg.optim.sched namespace
cfg.optim.sched = sched

## Let's see the new optim config
print("New Config: ")
print(OmegaConf.to_yaml(cfg.optim))

## Here, we restore the safeguards so no more additions can be made to the config
OmegaConf.set_struct(cfg, True)

# update the model config
## preprocessor
new_preprocessor_config = copy.deepcopy(cfg.preprocessor)
new_preprocessor = citrinet.from_config_dict(new_preprocessor_config)
citrinet.preprocessor = new_preprocessor
##


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

reference:
1.nvidia-nemo git
2.nemo安装
2.cmake install
3.brotobuf instatl

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/130780
推荐阅读
相关标签
  

闽ICP备14008679号