返回介绍

11 语音识别 LSTM-CTC

发布于 2024-01-28 10:56:24 字数 4616 浏览 0 评论 0 收藏 0

本章内容是通过 pytorch 搭建一个 LSTM-CTC 的语音识别声学模型。

本次实验的数据为 TIMIT 数据集(可点击 academictorrents 或者 luojie1987/TIMIT 下载数据集)。

还有很多其他公开的语音相关的数据库可以在这里下载 Open Speech and Language Resources

本项目的内容大多参考项目 https://github.com/Diamondfan/CTC_pytorch/

环境配置

sudo apt-get install sox libsox-dev libsox-fmt-all
git clone  https://github.com/pytorch/audio.git 
cd audio
pip install cffi
python setup.py install
  • 安装第三方依赖
pip install -r requirements.txt
  • 启动 visdom
python -m visdom.serber

使用方法:

1、 打开顶层脚本 run.sh ,修改相应的文件路径(TIMIT_dir, CONF_FILE)。
2、打开 conf 目录下的 ctc_model_setting.conf 进行网络结构等各项设置。
3、运行顶层脚本,后面带有一个参数 stage,0 表示从数据开始运行,1 表示从训练开始,2 表示直接测试

- bash run.sh 0     数据处理 + 训练 + 测试  
- bash run.sh 1     训练 + 测试
- bash run.sh 2     测试

说明

TIMIT 数据准备

conf 目录下的 test_spk.list 和 dev_spk.list 是音素识别中的常用验证集和测试集,使用这两个文件选取数据集。

执行数据处理脚本获取数据路径和转写标签:

bash timit_data_prep.sh timit_dir

执行完成后,在 datap_repare 目录下会生成 wav.scp 文件和 text 文件分别为音频的路径和音频的转写即文本标签.

  • train_wav.scp train.text > 3696 sentences
  • dev_wav.scp dev.text > 400 sentences
  • test_wav.scp test.text > 192 snetences

关于 rnn_type

ctc_model_setting.conf 中的 rnn_type 可以选择的 RNN 类型为

  • lstm : nn.LSTM
  • rnn : nn.RNN
  • gru : nn.GRU

关于标签

本项目的输出建模单元选择的是字符,即"abcdefghijklmnopqrstuvwxyz'" + " ",空格 space 也当做一个输出标签。所以总共 28 + 1 = 29 类。

加的 1 类为 CTC 中的空白类,表示该时刻的语音输出为噪声或者没有意义。在 model.py 中已经加了 1,所以配置文件中填入正常的标签类别即可。

选择字符作为标签在小数据集上并不能得到很好的结果,比如在 timit 上仅有 62%左右的正确率。实验发现采用音素作为输出的建模单元更为有效。

关于学习率修改

默认修改 8 次学习率停止训练,每次学习率降低一半。 可以根据需要修改 train.py (line 274)

log 目录内容

  • *.pkl: 保存的模型数据 在 model.py (line 132) 查看 save_package 函数
  • train.log: 训练时打印的内容都存在 train.log 中

实验结果

将字符作为标签训练 CTC 的声学模型在 TIMIT 上测试集的识别率为:

  • Greedy decoder: 61.4831%
  • Beam decoder : 62.1029%

本章内容只是构建了一个简单的声学模型,能够真正识别相差甚远,相比于 kaldi 中复杂的流程。项目内容还是能够对语音识别任务有一个初步的认识。

参考文献

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文