使用Tensorflow 2的几乎先进的自动语音识别

tiramisu-asr的Python项目详细描述


提拉米苏亚尔:蛋糕:

GitHubpythontensorflowubuntu

Tensorflow 2中最先进的自动语音识别

TiramisuASR实现了一些语音识别体系结构,如基于CTC的模型(Deep speech 2等)、RNN传感器(Conformer等)。这些模型可以转换为TFLite,以减少部署的内存和计算量:smile: 在

有什么新消息吗?在

  • (10/10/2020)更新文档并将包上载到pypi
  • (10/6/2020)将nlpaug版本改为{}
  • (9/18/2020)支持word-pieces(又名subwords),使用tensorflow-datasets
  • 支持transducertflite贪心解码(转换和调用)
  • 使用tf.distribute.MirroredStrategy进行分布式训练

:yum:支持的型号

设置环境和数据集

安装tensorflow:pip3 install -U tensorflow或{}(用于使用tflite)

安装软件包(从以下选项中选择one):

  • 运行pip3 install -U tiramisu-asr
  • 克隆repo并在repo目录中运行python3 setup.py install

关于设置数据集,请参见datasets

  • 对于培训、测试和使用^{str1}$CTC模型,运行./scripts/install_ctc_decoders.sh

  • 对于training传感器模型,导出CUDA_HOME并运行./scripts/install_rnnt_loss.sh

  • 方法tiramisu_asr.utils.setup_environment()启用混合精度(如果可用)。在

  • 要启用XLA,请运行TF_XLA_FLAGS=--tf_xla_auto_jit=2 $python_train_script

清理:python3 setup.py clean --all(这将删除/build内容)

TFLite转换

在转换为tflite之后,tflite模型就像一个函数,它直接从音频信号转换为unicode代码点,然后我们可以将unicode点转换为字符串。在

  1. 使用pip install tf-nightly安装tf-nightly
  2. 使用与训练模型相同的体系结构构建一个模型(如果模型有tflite参数,则必须将其设置为True),然后将经过训练的模型中的权重加载到构建的模型中
  3. 使用函数TFSpeechFeaturizer和{}加载到模型中
  4. 将模型的函数转换为tflite,如下所示:
func=model.make_tflite_function(greedy=True)# or Falseconcrete_func=func.get_concrete_function()converter=tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])converter.experimental_new_converter=Trueconverter.optimizations=[tf.lite.Optimize.DEFAULT]converter.target_spec.supported_ops=[tf.lite.OpsSet.TFLITE_BUILTINS,tf.lite.OpsSet.SELECT_TF_OPS]tflite_model=converter.convert()
  1. 保存转换后的tflite模型,如下所示:
^{pr2}$
  1. 然后,.tflite模型就可以部署了

特征提取

features_extraction

扩充

augmentations

培训和测试

Example YAML配置结构

speech_config:...model_config:...decoder_config:...learning_config:augmentations:...dataset_config:train_paths:...eval_paths:...test_paths:...tfrecords_dir:...optimizer_config:...running_config:batch_size:8num_epochs:20outdir:...log_interval_steps:500

有关一些预定义的ASR模型和结果,请参见examples

语料库来源与预训练模型

对于经过预训练的模型,请转到drive

英语

NameSourceHours
LibriSpeechLibriSpeech970h
Common Voicehttps://commonvoice.mozilla.org1932h

越南语

^{tb2}$

德语

^{3}$

推荐和学分

  1. NVIDIA OpenSeq2Seq Toolkit
  2. https://github.com/noahchalifour/warp-transducer
  3. Sequence Transduction with Recurrent Neural Network
  4. End-to-End Speech Processing Toolkit in PyTorch

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过解决错误“活动无法转换为片段”将片段传递给类构造函数?   Java中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法