基于深度学习的中文语音识别系统框架学习笔记

原文地址:https://blog.csdn.net/chinatelecom08/article/details/82557715

项目地址:https://github.com/audier/DeepSpeechRecognition

本文为对原作者代码的学习笔记,记录一下调试过程,与大家共同学习。

1 下载代码,下载地址如上

2 使用原文提供的声学模型和语言模型测试结果,

数据标签整理在data路径下,其中primewords、st-cmd目前未区分训练集测试集。

若需要使用所有数据集,只需解压到统一路径下,然后设置utils.py中datapath的路径即可。

与数据相关参数在utils.py中:

  • data_type: train, test, dev
  • data_path: 对应解压数据的路径
  • thchs30, aishell, prime, stcmd: 是否使用该数据集
  • batch_size: batch_size
  • data_length:千万不要改,用原来的10,否则测试与提供的训练模型不批配,正常训练可以设为None
  • shuffle:正常训练设为True,是否打乱训练顺序

我测试时只使用了thches30语音库,解压到data文件夹,修改如下

def data_hparams():
    params = tf.contrib.training.HParams(
        # vocab
        data_type = 'train',
        data_path = 'data/',
        thchs30 = True,
        aishell = False,
        prime = False,
        stcmd = False,
        batch_size = 1,
        data_length = 10,
        shuffle = False)
      return params

如果修改data_length,运行test.py时会出现如下错误,即提供好的训练模型与测试参数不一致

ValueError: Dimension 1 in both shapes must be equal, but are 1042 and 230. Shapes are [256,1042] and [256,230]. for 'Assign_62' (op: 'Assign') with input shapes: [256,1042], [256,230].

扫描二维码关注公众号,回复: 6053850 查看本文章

由于采用xshell远程终端控制,在输出结果时出现

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

这时可采用如下代码控制输出格式

PYTHONIOENCODING=utf-8 python test.py

运行train.py训练自己数据

1 首先需要删除原来的声学模型和语言模型,不然训练会报错

2 训练时将atch_size: batch_size设为1 ,data_length设为None,出现KeyError: 'val_acc' 

代码中未发现val_acc,将

ckpt = "model_{epoch:02d}-{val_acc:.2f}.hdf5"中的va_acc删去

3 生成声学模型时出现错误

Unable to open file (unable to open file: name = './model/char_judgement.h5', errno = 2, error message = 'No such file or directory'

自己创建一个文件夹存放checkpoint文件

3 出现训练集损失函数下降,验证集损失函数上升的问题,未解决

猜你喜欢

转载自blog.csdn.net/hw200855/article/details/88425345
今日推荐