PAI-EasyASR(语音智能增强算法包)提供多种模型的训练及预测功能,旨在帮助语音智能应用开发者方便快捷地构建语音模型并应用于生产。本文以语音识别为例,为您介绍如何在PAI-DSW中使用PAI-EasyASR,包括训练模型、评估模型、导出模型及搭建服务。

前提条件

已创建PAI-DSW实例,且该实例满足版本限制,详情请参见创建实例使用限制
说明 建议使用GPU版本的PAI-DSW实例。

使用限制

PAI-EasyASR仅支持如下Python版本和TensorFlow版本:
  • Python版本:Python 2.7或Python 3.6。
  • TensorFlow社区版本:TensorFlow 1.12或PAI-TensorFlow 1.12。

步骤一:准备数据

本文使用EasyASR Puclic Model Zoo中预训练的ASR模型进行少量Fine-Tune,Fine-Tune所用的数据集选自中文公开数据集THCHS-30的一部分。建议您选用自己的数据进行模型训练。

  1. 进入PAI-DSW开发环境。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择模型开发和训练 > 交互式建模(DSW)
    3. 在页面左上方,选择使用服务的地域。
    4. 可选:Notebook建模服务页面的搜索框,输入实例名称或关键字,搜索实例。
    5. 单击需要打开的实例操作列下的打开
  2. 在PAI-DSW开发环境,单击Other区域下的Terminal,即可打开Terminal。打开Terminal
  3. 下载数据。
    1. 单击左上方工具栏中的创建文件夹图标,创建项目文件夹(例如asr_test)。
    2. 在Terminal中,使用cd命令进入已创建的文件夹,并通过wget命令下载ASR的Demo数据集。
      wget http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/dsw_sample_data/data.zip
      wget http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/dsw_sample_data/sample_asr_data.csv
    3. 解压已下载的Demo数据。
      unzip data.zip
    4. 下载基于wav2letter的模型Checkpoint及其配置文件。
      mkdir w2lplus-small-logdir
      wget http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/config/w2lplus-small.py
      wget -P w2lplus-small-logdir http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/checkpoint-small/checkpoint
      wget -P w2lplus-small-logdir http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/checkpoint-small/graph.pbtxt
      wget -P w2lplus-small-logdir http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/checkpoint-small/model.ckpt-125000.data-00000-of-00001
      wget -P w2lplus-small-logdir http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/checkpoint-small/model.ckpt-125000.index
      wget -P w2lplus-small-logdir http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/checkpoint-small/model.ckpt-125000.meta
      w2lplus-small-logdir文件夹下保存的是预训练的Checkpoint。
    5. 下载该模型对应的中文词表。
      wget http://pai-audio-open-modelzoo.oss-cn-zhangjiakou.aliyuncs.com/wav2letter/alphabet/alphabet4k.txt
  4. 查看项目文件夹(asr_test)内容,包括如下文件(文件夹层级如下图所示)。
    • data:存放了用于训练的语音片段,通常在15s以内,为WAV格式。
    • w2lplus-small-logdir:存放了预训练的Checkpoint。
    • alphabet4K.txt:4K中文词表。
    • sample_asr_data.csv:存储了所有WAV文件的路径及对应的标注文本。在标注文本中,每个汉字都由空格分隔,词表中不包括的字使用星号表示。
    • w2lplus-small.py:ASR模型的配置文件。
    asr_test文件夹层级您可以进入w2lplus-small-logdir文件夹,查看下载的预训练Checkpoint,如下图所示。预训练Checkpoint文件

步骤二:构建数据集与训练模型

  1. 在项目文件夹(asr_test)下,调用EasyASR的数据转换功能,将准备的数据转换为TFRecord。
    easyasr_create_dataset --input_path='sample_asr_data.csv' --output_prefix='tfrecords/train'
    命令中的参数含义如下:
    • input_path:训练数据的文件名称,为CSV文件。该文件中记录了用于训练的WAV文件路径和人工标注的结果。
    • output_prefix:输出TFRecord的路径前缀。本文中的所有TFRecord都输出至tfrecords文件夹,文件前缀名为train,您可以根据实际情况修改。
  2. 使用如下命令进行ASR模型训练。
    easyasr_train --config_file='w2lplus-small.py' --continue_learning
    命令中的参数含义如下:
    • config_file:训练模型的配置文件。本文基于wav2letter的ASR模型配置文件w2plus-small.py进行模型训练,您可以根据实际情况修改该配置文件。
    • continue_learning:表示从已经训练好的checkpoint继续训练。如果希望从零开始训练模型,则省略该参数即可。本文中下载的Checkpoint已经经过了125000个step的训练,为了演示,继续训练100个step(在真实场景下,您可以自行配置,即修改config_file配置文件中的max_steps参数)。模型训练完成后,可以在相应logdir中查看得到的新Checkpoint。

步骤三:评估并导出模型

模型训练完成后,需要对模型的精准度进行评测。您可以根据需求,将数据集划分为训练集和评测集,在此仅给出一个简单的示例。

  1. 评估模型精准度。
    easyasr_eval --config_file='w2lplus-small.py' --checkpoint='w2lplus-small-logdir/model.ckpt-125100'
    命令中的参数含义如下:
    • config_file:训练模型的配置文件。本文基于wav2letter的ASR模型配置文件w2plus-small.py进行模型训练,您可以根据实际情况修改该配置文件。
    • checkpoint:用于评估和导出的模型checkpoint路径。在模型训练过程中,系统会保存多个checkpoint,您可以根据实际情况修改该路径。
  2. 您可以将训练好的模型导出为SavedModel,并存放在OSS中,使用PAI平台进行分布式批量预测。
    easyasr_export --config_file='w2lplus-small.py' --checkpoint='w2lplus-small-logdir/model.ckpt-125100' --mode='interactive_infer'
    命令中的参数含义如下:
    • config_file:训练模型的配置文件。本文基于wav2letter的ASR模型配置文件w2plus-small.py进行模型训练,您可以根据实际情况修改该配置文件。
    • checkpoint:用于评估和导出的模型checkpoint路径。在模型训练过程中,系统会保存多个checkpoint,您可以根据实际情况修改该路径。
    • mode:模型导出的格式。当前版本的PAI-EasyASR仅支持interactive_infer模式,您无需修改。
  3. 如果需要将该wav2letter模型用于在线服务,您可以使用如下命令导出模型,并在模型checkpoint目录下的export_dir中找到该SavedModel。
    easyasr_export --config_file='w2lplus-small.py' --checkpoint='w2lplus-small-logdir/model.ckpt-125100' --mode='interactive_infer' --online
    命令中的参数含义如下:
    • config_file:训练模型的配置文件。本文基于wav2letter的ASR模型配置文件w2plus-small.py进行模型训练,您可以根据实际情况修改该配置文件。
    • checkpoint:用于评估和导出的模型checkpoint路径。在模型训练过程中,系统会保存多个checkpoint,您可以根据实际情况修改该路径。
    • mode:模型导出的格式。当前版本的PAI-EasyASR仅支持interactive_infer模式,您无需修改。
    • online:表示导出的模型用于在线服务。如果省略该参数,则导出的模型用于离线预测。

步骤四:搭建服务

您可以将导出的SavedModel模型存放至OSS,并使用其进行离线或在线预测。