Speech-to-Text-WaveNet : End-to-end sentence level English speech recognition using DeepMind's WaveNet

来源:https://github.com/buriburisuri/speech-to-text-wavenet#version

这是一个完整的基于DeepMind公司WaveNet网络的英文语音识别案例。

尽管ibab和tomlepaine已经实施了tensorflow版本的WaveNet,但他们没有实现语音识别。 这就是我们决定自己实施的原因。

Deepmind最近的一些论文很难复制。 该文件还省略了有关实施的具体细节,我们必须以我们自己的方式填补空白。

下面是一些重要的笔记:

首先:论文中用于语音识别实验使用的数据集是TIMIT的数据集,而我们使用VTCK数据集。

第二:论文中在用于降采样的扩展卷积之后使用了一个平均池化层,我们从wav文件中提取MFCC特征并且移除了最后的平均池化层,因为原始数据在TitanX GPU上运行是不可能的。

第三:因为TIMIT数据集具有音素标签,训练模型的时候使用了两个损失项,音素分类和下一个音素预测。相反,我们使用了单一的CTC损失,因为VCTK提供了句子级别的标签。因此我们只使用扩大的conv1d图层而没有使用任何扩大的conv1d图层(As a result, we used only dilated conv1d layers without any dilated conv1d layers.)怎么个翻译?

最后:最后,由于时间限制,我们没有通过结合语言模型来进行BLEU评分和后处理等定量分析。

最终的体系结构如下图所示。

(Some images are cropped from [WaveNet: A Generative Model for Raw Audio](https://arxiv.org/abs/1609.03499) and [Neural Machine Translation in Linear Time](https://arxiv.org/abs/1610.10099))

版本:

但前版本0.0.0.2

依赖:版本必须正确匹配

1.TensorFlow==1.0.0

2.sugartensor==1.0.0.2

3.pandas>=0.19.2

4.scikits.audiolab==0.11.0

如果您遇到librosa库问题,请尝试通过以下命令安装ffmpeg。 (Ubuntu 14.04)

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get dist-upgrade -y

sudo apt-get -y install ffmpeg

数据集:

我们使用VCTK,LibriSpeech和TEDLIUM发布2个语料库。 由上述三个语料构成的训练集合中句子总数为240612。 有效和测试集仅使用LibriSpeech和TEDLIUM corpuse构建,因为VCTK语料库没有有效的测试集。 下载完每个语料库后,将它们提取到'asset / data / VCTK-Corpus','asset / data / LibriSpeech'和'asset / data / TEDLIUM_release2'目录中。

在Tom Ko等人的论文中,音频得到了增强。 (感谢@migvel为您提供的信息)

数据集预处理:

TEDLIUM版本2数据集提供SPH格式的音频数据,所以我们应该将它们转换为librosa库可以处理的某种格式。 在“asset/data”目录中运行以下命令将SPH转换为.wav格式。

find -type f -name '*.sph' | awk '{printf "sox -t sph %s -b 16 -t wav %s\n", $0, $0".wav" }' | bash

如果你没有安装sox,需要按照以下命令安装:

sudo apt-get install sox

我们发现主要的瓶颈是训练时的磁盘读取时间,所以我们决定将整个音频数据预处理成小得多的MFCC特征文件。 我们强烈建议使用SSD而不是硬盘。

在控制台中运行以下命令以预处理整个数据集。

python preprocess.py

网络训练:

执行

python train.py ( <== Use all available GPUs )
or
CUDA_VISIBLE_DEVICES=0,1 python train.py ( <== Use only GPU 0, 1 )

python train.py ( <== Use all available GPUs )
or
CUDA_VISIBLE_DEVICES=0,1 python train.py ( <== Use only GPU 0, 1 )

训练网络。 您可以在'asset / train'目录中看到结果ckpt文件和日志文件。 启动tensorboard --logdir asset / train / log来监控训练过程。


python train.py ( <== Use all available GPUs )
or
CUDA_VISIBLE_DEVICES=0,1 python train.py ( <== Use only GPU 0, 1 )

我们已经在3个Nvidia 1080 Pascal GPU上训练了这个模型,历时40个小时,直到50个epoch,并且我们在验证损失最小时选择了这个epoch。 在我们的例子中,它是epoch是40.如果你面对内存不足的错误,请将train.py文件中的batch_size从16减少到4。

每一个epoch的CTC损失见下表:


python train.py ( <== Use all available GPUs )
or
CUDA_VISIBLE_DEVICES=0,1 python train.py ( <== Use only GPU 0, 1 )
epoch train set valid set test set
20 79.541500 73.645237 83.607269
30 72.884180 69.738348 80.145867
40 69.948266 66.834316 77.316114
50 69.127240 67.639895 77.866674

测试网络:

完成训练之后,你可以检查测试集的CTC损失通过运行下面这条命令:


python train.py ( <== Use all available GPUs )
or
CUDA_VISIBLE_DEVICES=0,1 python train.py ( <== Use only GPU 0, 1 )
python test.py --set train|valid|test --frac 1.0(0.01~1.0)

如果你想要使用数据集的一小部分数据进行快速评估,frac参数会非常有用。

将wave文件转换成英文文本:

执行

python recognize.py --file 

来使得.wav文件转换成英文文本文件。结果可以在console中打印出来;如下:

python recognize.py --file asset/data/LibriSpeech/test-clean/1089/134686/1089-134686-0000.flac
python recognize.py --file asset/data/LibriSpeech/test-clean/1089/134686/1089-134686-0001.flac
python recognize.py --file asset/data/LibriSpeech/test-clean/1089/134686/1089-134686-0002.flac
python recognize.py --file asset/data/LibriSpeech/test-clean/1089/134686/1089-134686-0003.flac
python recognize.py --file asset/data/LibriSpeech/test-clean/1089/134686/1089-134686-0004.flac

结果如下:

he hoped there would be stoo for dinner turnips and charrats and bruzed patatos and fat mutton pieces to be ladled out in th thick peppered flower fatan sauce
stuffid into you his belly counsiled him
after early night fall the yetl lampse woich light hop here and there on the squalled quarter of the browfles
o berty and he god in your mind

numbrt tan fresh nalli is waiting on nou cold nit husband

真实值应当是:

HE HOPED THERE WOULD BE STEW FOR DINNER TURNIPS AND CARROTS AND BRUISED POTATOES AND FAT MUTTON PIECES TO BE LADLED OUT IN THICK PEPPERED FLOUR FATTENED SAUCE
STUFF IT INTO YOU HIS BELLY COUNSELLED HIM
AFTER EARLY NIGHTFALL THE YELLOW LAMPS WOULD LIGHT UP HERE AND THERE THE SQUALID QUARTER OF THE BROTHELS
HELLO BERTIE ANY GOOD IN YOUR MIND

NUMBER TEN FRESH NELLY IS WAITING ON YOU GOOD NIGHT HUSBAND

如前所述,没有语言模型,所以有些情况下大写字母,标点符号和单词拼写错误。

时间关系以下内容未翻译

pre-trained models

You can transform a speech wave file to English text with the pre-trained model on the VCTK corpus. Extract the following zip file to the 'asset/train/' directory.

Docker support

See docker README.md.

Future works

Language Model
Polyglot(Multi-lingual) Model
We think that we should replace CTC beam decoder with a practical language model
and the polyglot speech recognition model will be a good candidate to future works.

Other resources

ibab's WaveNet(speech synthesis) tensorflow implementation
tomlepaine's Fast WaveNet(speech synthesis) tensorflow implementation
Namju's other repositories

SugarTensor
EBGAN tensorflow implementation
Timeseries gan tensorflow implementation
Supervised InfoGAN tensorflow implementation
AC-GAN tensorflow implementation
SRGAN tensorflow implementation
ByteNet-Fast Neural Machine Translation
Citation

If you find this code useful please cite us in your work:

Kim and Park. Speech-to-Text-WaveNet. 2016. GitHub repository. https://github.com/buriburisuri/.
Authors

Namju Kim (namju.kim@kakaocorp.com) at KakaoBrain Corp.

Kyubyong Park (kbpark@jamonglab.com) at KakaoBrain Corp.


python train.py ( <== Use all available GPUs )
or
CUDA_VISIBLE_DEVICES=0,1 python train.py ( <== Use only GPU 0, 1 )

python recognize.py --file 

基于WaveNet网络的英语语音识别相关推荐

  1. 与计算机互动大学英语,【2017年整理】基于与网络和计算机的大学英语教学模式.ppt...

    [2017年整理]基于与网络和计算机的大学英语教学模式 基于网络和计算机的大学英语教学模式 贾国栋 flgdjia@ 华南理工大学 主要内容 <大学英语课程教学要求>(试行)----教学模 ...

  2. 基于OpenSeq2Seq的NLP与语音识别混合精度训练

    基于OpenSeq2Seq的NLP与语音识别混合精度训练 Mixed Precision Training for NLP and Speech Recognition with OpenSeq2Se ...

  3. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  4. 基于深度学习的中文语音识别系统框架(pluse)

    目录 声学模型 GRU-CTC DFCNN DFSMN 语言模型 n-gram CBHG 数据集 本文搭建一个完整的中文语音识别系统,包括声学模型和语言模型,能够将输入的音频信号识别为汉字. 声学模型 ...

  5. 英语语音识别_英语 语音识别_英语语音识别软件 - 云+社区 - 腾讯云

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式 ...

  6. 三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的

    前面的博客里说过最近几个月我从传统语音(语音通信)切到了智能语音(语音识别).刚开始是学语音识别领域的基础知识,学了后把自己学到的写了PPT给组内同学做了presentation(语音识别传统方法(G ...

  7. 基于深度学习的中文语音识别系统框架搭建

    基于深度学习的中文语音识别系统框架 转自@https://blog.csdn.net/chinatelecom08/article/details/82557715 本文搭建一个完整的中文语音识别系统 ...

  8. 基于STM32的有限词条语音识别与对话模块

    基于STM32的有限词条语音识别与对话模块 一.模块整体设计思路 二.器件选型与方案确定 1.器件选型 (1)语音识别模块 (2)词条存储模块 (3)语音提示模块 (4)主控芯片 2.方案确定 三.I ...

  9. AI周报丨快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用

    AI周报 - 热门论文 - 题目:On Training Implicit Models 本文主要研究无限层隐式模型的训练问题.具体地说,以前的工作采用隐式微分,并为反向传播计算精确的梯度.然而,是否 ...

  10. 2021AIOps挑战赛|基于移动通信网络运维中的多指标时空序列预测

    2021国际AIOps挑战赛决赛暨AIOps创新高峰论坛于2021年5月13日在北京成功举行.本文根据中国移动研究院首席科学家.人工智能与智慧运营中心总经理冯俊兰博士现场发言纪要整理而成. 演讲内容 ...

最新文章

  1. 怎样在表格中选出同一类_3分钟教会你如何将不同表格中的数据关联在一起
  2. BZOJ 2431: [HAOI2009]逆序对数列【DP】
  3. 外贸企业网站建设难免遇到难题
  4. CentOS-7.2、7.5模板机制作
  5. python_循环删除list中的元素,有坑啊!
  6. BZOJ 3907: 网格( 组合数 + 高精度 )
  7. android 模仿uc标签页,android模仿UC首页天气效果
  8. Java反射修改返回值_java反射调用时如果返回值是整型数组怎么处理?
  9. 18 段代码带你玩转 18 个机器学习必备交互工具
  10. deepin/Ubuntu搭建FTP/SFTP
  11. python程序基本结构总结图_一张图认识Python(附基本语法总结)
  12. Java代码审计详解
  13. Arduino DY-SV17F自动语音播报
  14. 2021鹏业安装算量软件常见问题整理(三)
  15. autojs之获取ip(内网ip和公网ip)
  16. 轻流入选|国际权威研究机构「2021年低代码平台中国市场现状分析报告」发布
  17. Python 图片尺寸缩放的4种方式
  18. 114.114.114.114和8.8.8.8,哪个DNS好?
  19. 基于python的停车场管理系统的设计与实现/智能停车管理系统
  20. python在每个字符后加上逗号_Python将逗号添加到数字字符串中

热门文章

  1. R语言系列:rgl包安装出错的解决办法
  2. 论傻瓜交换机接到有vlan的网管交换机为什么可以通信
  3. Nature communications
  4. jscpd--前端代码重复率检测
  5. Java中frame和panel区别,JFrame 和JPanel 的关系-区别(学习笔记)
  6. 无需Apple ID和密码即可将iPad恢复出厂设置的简便方法
  7. X86服务器及“机架、塔式、刀片”三类服务器分类
  8. html清除图层,ps按delete不能删除图层怎么办?
  9. 竞态条件的赋值_Go 译文之竞态检测器 race
  10. 深度学习之卷积神经网络中常用模型评估指标(混淆矩阵,精确率,召回率,特异度计算方法)——python代码