使用TensorFlow训练自己的语音识别AI
这次来训练一个基于CNN的语音识别模型。训练完成后,我们将尝试将此模型用于Hotword detection。
人类是怎样听懂一句话的呢?以汉语为例,当听到“wo shi”的录音时,我们会想,有哪两个字是读作“wo shi”的,有人想到的是“我是”,也有人觉得是“我市”。
我们可以通过”wo shi”的频率的特征,匹配到一些结果,我们这次要训练的模型,也是基于频率特征的CNN模型。单纯的基于频率特征的识别有很大的局限性,比如前面提到的例子,光是听到“wo shi”可能会导致产生歧义,但是如果能有上下文,我们就可以大大提高“识别”的成功率。因此,类似Google Assistant那样的识别,不光是考虑到字词的发音,还联系了语义,就算有一两个字发音不清,我们还是能得到正确的信息。
但是基于频率特征的模型用作Hotword detection还是比较合适的,因为Horword通常是一两个特定的词,不需要联系语境进行语义分析。
准备训练数据集
开源的语言数据集比较少,这里我们使用TensorFlow和AIY团队推出的一个数据集,包含30个基本的英文单词的大量录音:
下载地址
这个数据集只有1G多,非常小的语音数据集,不过用来实验是完全够的。
运行docker并挂载工作目录
新建一个speech_train文件夹,并在其中创建子文件夹dataset,logs,train,它们将用于存放数据集,log和训练文件。解压数据集到dataset,然后运行docker:
1 |
docker run -it -v $(pwd)/speech_train:/speech_train |
使用默认的conv模型开始训练
1 |
cd /tensorflow/ |
在这里我们指定希望识别的label: one,two,three,four,five,marvin。数据集的其他部分将被归为unknown
使用TensorBoard使训练可视化
我们可以通过分析生成的log使训练过程可视化:
1 |
大专栏 使用TensorFlow训练自己的语音识别AI class="line">tensorboard --logdir /speech_train/logs |
运行指令后,可以通过浏览器访问本地的6006端口进入TensorBoard。下图是使用conv模型完成18000 steps 训练的过程图:
训练花了差不多15个小时。
生成pb文件
训练完成后,我们需要将其转化为pb文件:
1 |
python tensorflow/examples/speech_commands/freeze.py |
完成后,我们将得到一个名为conv.pb的文件,配合包含可识别label的txt文件就可以直接使用了。
测试
使用测试脚本进行测试:
1 |
python tensorflow/examples/speech_commands/label_wav.py |
训练的模型应能正确识别出marvin。
使用准确度较低但是预测更快的low_latency_conv模型
我们可以使用另外一种准确度较低但是预测更快的low_latency_conv模型进行训练:
1 |
python tensorflow/examples/speech_commands/train.py |
当使用该模型时,可以适当增加training steps和learning rate。在这种情况下,训练的时间大大缩短了:
只花了不到3小时.
其他
也可以使用gpu版本的tensorflow进行训练,速度可以提升不少哦。
使用TensorFlow训练自己的语音识别AI的更多相关文章
- 大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app
大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWx ...
- 目标检测 的标注数据 .xml 转为 tfrecord 的格式用于 TensorFlow 训练
将目标检测 的标注数据 .xml 转为 tfrecord 的格式用于 TensorFlow 训练. import xml.etree.ElementTree as ET import numpy as ...
- 自己搞了20万张图片100个分类,tensorflow训练23万次后。。。。。。
自己搞了20万张图片100个分类,tensorflow训练23万次后...... 我自己把训练用的一张图片,弄乱之后做了一个预测 100个汉字,20多万张图片,tensorflow CNN训练23万次 ...
- tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了
tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了 感觉它能找到词与词之间的关系,应该可以用来做推荐系统.自动摘要.相关搜索.联想什么的 tensorflow1.1.0 ...
- 2、TensorFlow训练MNIST
装载自:http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html TensorFlow训练MNIST 这个教程的目标读者是对机器学习和T ...
- tensorflow训练验证码识别模型
tensorflow训练验证码识别模型的样本可以使用captcha生成,captcha在linux中的安装也很简单: pip install captcha 生成验证码: # -*- coding: ...
- TensorFlow训练MNIST报错ResourceExhaustedError
title: TensorFlow训练MNIST报错ResourceExhaustedError date: 2018-04-01 12:35:44 categories: deep learning ...
- TensorFlow.训练_资料(有视频)
ZC:自己训练 的文章 貌似 能度娘出来很多,得 自己弄过才知道哪些个是坑 哪些个好用...(在CSDN文章的右侧 也有列出很多相关的文章链接)(貌似 度娘的关键字是"TensorFlow ...
- 课程报名 | 基于模型训练平台快速打造 AI 能力
我们常说的 AI 通用能力往往不针对具体的行业应用,而是主要解决日常或者泛化的问题,很多技术企业给出的方案是通用式的,比如通用文字识别,无论识别身份证.驾驶证.行驶证等,任何一张图片训练后的模型都会尽 ...
随机推荐
- mysql自定义函数初始化数据:init_data()
DELIMITER $$ USE `local_hnyz`$$ DROP FUNCTION IF EXISTS `init_data`$$ CREATE DEFINER=`root`@`localho ...
- 第一个----关于GPIO的总结
首先,自己本来报的是单片机的 ,但是因为队友的脑残,给我报成了嵌入式,哎,惨啊,就得从头看这个云里雾里的东西,但是没办法,都报名了 不能呢个交白卷,不然自己就是逃兵了,还有20天就比赛了 我得加 ...
- redis设置cpu核数与内存
每个redis实例,给系统要预留至少1/4核,可使用1核心cpu.内存要预留1/2. 比如:8核120G的服务器,可部署8-8/4=6个redis实例,每个实例120/2/6=10G内存.
- springboot+solr基本使用
接着上一篇的搭建 首先需要的pom节点有 <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data ...
- iTOP-iMX6UL开发板-MiniLinux-CAN测试使用文档
本文档介绍的是迅为iMX6UL开发板在 MiniLinux 系统环境下 iTOP-iMX6UL CAN 实验调试步骤.给用户提供了“can_libs.rar”.“can_tools.zip”和“can ...
- [HNOI2003]操作系统 优先队列用法
题:https://www.cometoj.com/problem/1046 #include<bits/stdc++.h> using namespace std; typedef lo ...
- VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】
VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.vb这个默认文件中. 大家可以在Visual Studio中创建 ...
- 95)PHP,文件上传知识和代码
首先是知识总结: 上传: 从浏览器端传输的到服务器端. 请求时: 数据从浏览器端传输到服务器端. 可见: 上传,发生在浏览器向服务器发出请求过程中. 文件,对于浏览器来讲,就是表单中的一个特殊类型的数 ...
- Linux shell Script初识
shell secript: 执行方式的差异: ./ sh执行都是在创建一个子程序来执行,只会继承环境变量, 其中的变量如果export声明,子程序的子程序会继承,不会升级为环境变量 source 的 ...
- django框架进阶-AJAX-长期维护
################## 预备知识---json ####################### 预备知识,json 什么是json?这是一种数据格式,和语言没有关系, 为什么 ...