用 TensorFlow 创建自己的 Speech Recognizer

参考资料

源码请点:https://github.com/llSourcell/tensorf…



语音识别无处不在,siri,google,讯飞输入法,讯飞语记,智能家居,车,etc。

每天都在用的,很好奇它是怎么实现的,今天来看看这么便利的东东到底是什么样子呢。

进化史

最开始的 speech recognizer 只能识别 0-9 这几个数字,说别的单词是识别不了滴。

后来有一个叫做 DARPA 的梦想家 team 孜孜不倦地研究。

他们用 15000 个节点代表可能的发音,然后用暴力搜索 brute force search 算法来找到节点对应的文字。

后来 IBM 用 Hidden Markov Model 来预测每个点最大概率可能表示的文字。

再后来人们尝试用 NN 神经网络来做这个任务,但是很长时间没太大进展,直到 深度学习之父 Geoffrey Hinton 研究出个 Deep Learning 模型,语音识别的效果显著提高。


Yours ~~

像 Siri,Google 一样,现在我们来看看怎样用 TensorFlow 创建自己的 Speech Recognizer ,来识别数字吧。

Steps:

- 导入库

- 定义参数

- 导入数据

- 建立模型

- 训练模型并预测

1. 导入库

需要用到 tflearn,这是建立在 TensorFlow 上的高级的库,可以很方便地建立网络。

还会用到辅助的类 speech_data,用来下载数据并且做一些预处理。

from __future__ import division, print_function, absolute_import
import tflearn
import speech_data
import tensorflow as tf

2. 定义参数

learning rate 是在更新权重的时候用,太高可以很快,但是loss大,太低较准但是很慢。

learning_rate = 0.0001
training_iters = 300000 # steps
batch_size = 64

width = 20 # mfcc features
height = 80 # (max) length of utterance
classes = 10 # digits

3. 导入数据

用 speech_data.mfcc_batch_generator 获取语音数据并处理成批次,然后创建 training 和 testing 数据。

batch = word_batch = speech_data.mfcc_batch_generator(batch_size)
X, Y = next(batch)
trainX, trainY = X, Y
testX, testY = X, Y #overfit for now

4. 建立模型

接下来,用什么模型呢?

speech recognition 是个 many to many 的问题。

eg,speech recognition

eg,image classification

eg,image caption

eg,sentiment analysis

所以我们用 Recurrent NN 。

通常的 RNN ,它的输出结果是受整个网络的影响的。

而 LSTM 比 RNN 好的地方是,它能记住并且控制影响的点。所以这里我们用 LSTM。

每一层到底需要多少个神经元是没有规定的,太少了的话预测效果不好,太多了会 overfitting,这里我们取普遍的 128.

为了减轻过拟合的影响,我们用 dropout,它可以随机地关闭一些神经元,这样网络就被迫选择其他路径,进而生成想对 generalized 模型。

接下来建立一个 fully connected 的层,它可以使前一层的所有节点都连接过来,输出 10 类,因为数字是 0-9,激活函数用 softmax,它可以把数字变换成概率。

最后用个 regression 层来输出唯一的类别,用 adam 优化器来使 cross entropy 损失达到最小。

# Network building
net = tflearn.input_data([None, width, height])
net = tflearn.lstm(net, 128, dropout=0.8)
net = tflearn.fully_connected(net, classes, activation=‘softmax‘)
net = tflearn.regression(net, optimizer=‘adam‘, learning_rate=learning_rate, loss=‘categorical_crossentropy‘)

5. 训练模型并预测

然后用 tflearn.DNN 函数来初始化一下模型,接下来就可以训练并预测,最后再保存训练好的模型。

# Training
### add this "fix" for tensorflow version errors
col = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
for x in col:
  tf.add_to_collection(tf.GraphKeys.VARIABLES, x )

model = tflearn.DNN(net, tensorboard_verbose=0)

while 1: #training_iters
  model.fit(trainX, trainY, n_epoch=10, validation_set=(testX, testY), show_metric=True,
          batch_size=batch_size)
  _y=model.predict(X)
model.save("tflearn.lstm.model")
print (_y)
print (y)

模型训练需要一段时间,一边碎觉一边等着模型出炉吧。?? ?? ?? ??



历史技术博文链接汇总

时间: 2024-11-05 02:19:58

用 TensorFlow 创建自己的 Speech Recognizer的相关文章

使用TensorFlow创建第变量定义和运行方式

import tensorflow as tf# 熟悉tensorflow的变量定义和运行方式v1 = tf.Variable(2) #定义变量并给变量赋值v2 = tf.Variable(48) c1 = tf.constant(16) #定义常量并赋值c2 = tf.constant(3)addv = v1 + v2 sess = tf.Session() #注意tensorflow在运行时需要创建一个session, 所有的运算需要在session中执行 tf.initialize_all

Tensorflow创建会话,启动会话

import tensorflow as tf #定义一个常量 m1=tf.constant([[3,3]])#这是一个一行两列的数据 print(m1) m2=tf.constant([[2],[3]]) print(m2) 输出: Tensor("Const_5:0", shape=(1, 2), dtype=int32) Tensor("Const_6:0", shape=(2, 1), dtype=int32) 从这个结果当中我们可以看到我们的tensorf

用tensorflow创建tfrecords格式的数据集

下面的代码是生成一个每个图片大小是227*227*1的tfrecord文件,label是这个类别的英文名. 原图片是256*256*3RGB型的.jpg文件,在制作数据集的时候由于对图片的颜色没有要求,所以为了节省空间,进行了灰度化处理. import tensorflow as tf import os import sys from PIL import Image import numpy as np # 数据集路径 TRAIN_DATASET_DIR = "E:/python文件/ten

Tensorflow 创建神经网络

一个神经网络系统,由很多层组成,输入层用来接收信息,中间层加工处理输入信息,输出层就是计算机对这个输入信息的认知. https://www.jianshu.com/p/e112012a4b2d 搭建神经网络基本流程 定义添加神经层的函数 1.训练的数据 2.定义节点准备接收数据 3.定义神经层:隐藏层和预测层 4.定义 loss 表达式 5.选择 optimizer 使 loss 达到最小 然后对所有变量进行初始化,通过 sess.run optimizer,迭代 1000 次进行学习: imp

Tensorflow 创建神经网络(二)可视化

将训练过程可视化出来 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 去掉警告 import warnings warnings.filterwarnings("ignore",".*GUI is implemented.*") import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' def add_layer(in

CSDN日报20170428 ——《你的开发为何如此低效?》

[程序人生]你的开发为何如此低效? 作者:Stay 今天的主题是撇开技术和大家聊聊高效开发的一些套路与实践. 点击阅读全文 [深度学习]用 TensorFlow 创建自己的 Speech Recognizer 作者:Alice熹爱学习 语音识别无处不在,siri,google,讯飞输入法,讯飞语记,智能家居,车,etc. 每天都在用的,很好奇它是怎么实现的,今天来看看这么便利的东东到底是什么样子呢. 点击阅读全文 [Web 前端]2017 年前端面试题最新汇总 作者:郭小北 由于过了五一就是面试

Android:创建可穿戴应用 - 语音操作

添加语音处理能力(Adding Voice Capabilities) 语音操作是可穿戴用户体验的重要部分,可以让用户以快捷.免提的方式执行动作. Wear提供两种类型的语音操作: 系统提供(System-provided)这些语音操作是基于任务的,且内置于Wear平台.语音命令到达时,在你想启动的活动(Activity)中进行动作过滤.比如"记一下"(Take a note)或"提醒一下"(Set an alarm).应用提供(App-provided)这些语音操

深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题.Source Dexter网站创办人. TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程语言,构建大量基于机器学习的应用程序.而且还有很多人把TensorFlow构建的应用程序或者其他框架,开源发布到GitHub上. 这次跟大家分享一些GitHub上令人惊奇的TensorFlow项目,你可以直接在你的应用中使用,或者根据自身所需进一步予以改进. TensorFlow简介 如果你已经知道

解决Tensorflow源码安装的之后TensorBoard 无法使用的问题

作者  cnblog 修雨轩陈 我是按照 Tensorflow 下 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md#configure-the-installation 教程安装的, 通过源码安装之后出现以下问题: tensorboard 无法识别, 但是tensorflow API  却可以使用. 于是只能: python <tensorflow源码所在的