[转]20行代码实现语音识别系统

发布时间:2024-11-22 17:23

智能家居系统可以通过语音识别,实现对设备的语音控制。 #生活知识# #家居生活# #居家生活哲学# #家居智能化#

参考blog中文翻译:https://blog.csdn.net/u014365862/article/details/54889646?utm_source=blogxgwz2
参考微博视频:
http://weibo.com/p/2304444948c16e85c39a07240b193cd5509574
参考github代码:https://github.com/llSourcell/tensorflow_speech_recognition_demo/blob/master/demo.py
参考修改代码:
https://github.com/llSourcell/tensorflow_speech_recognition_demo/issues/26

20行代码完成语音识别

语音识别进化史

最开始的 speech recognizer 只能识别 0-9 这几个数字。后来有一个叫做 DARPA 的梦想家 team 孜孜不倦地研究。
他们用 15000 个节点代表可能的发音,然后用暴力搜索 brute force search 算法来找到节点对应的文字。
在这里插入图片描述
后来 IBM 用 Hidden Markov Model 来预测每个点最大概率可能表示的文字。
最大概率
再后来人们尝试用 NN 神经网络来做这个任务,但是很长时间没太大进展,直到 深度学习之父 Geoffrey Hinton 研究出个 Deep Learning 模型,语音识别的效果显著提高。

实验步骤

本次实验步骤共分为:

导入库定义参数导入数据建立模型训练模型并预测

导入库

需要用到 tflearn,这是建立在 TensorFlow 上的高级的库,可以很方便地建立网络。
还会用到辅助的类 speech_data,用来下载数据并且做一些预处理。

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

定义参数

learning rate 是在更新权重的时候用,太高可以很快,但是loss大,太低较准但是很慢。
在这里插入图片描述

learning_rate = 0.0001 #学习率 training_iters = 300000 # 训练次数 batch_size = 64 #每个batch的大小 width = 20 # mfcc特征数 height = 80 # 最大话语长度 classes = 10 # 数字 1234567'

导入数据

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

X, Y = speech_data.mfcc_batch_generatorEx(batch_size) trainX, trainY = X, Y testX, testY = X, Y #overfit for now 123

建立模型

speech recognition 是个 many to many 的问题。
我们可以常见的模型输入输出数据序列类型:
speech recognition:
在这里插入图片描述
image classification:
在这里插入图片描述
image caption:
在这里插入图片描述
sentiment analysis:
在这里插入图片描述
由于RNN的输出结果是受整个网络影响的
在这里插入图片描述
而LSTM能够记住并且控制影响的点。本次实验选择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') 12345

训练模型并预测

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

model = tflearn.DNN(net, tensorboard_verbose=0) with tf.Session() as sess: model.fit(trainX, trainY, n_epoch=training_iters)#, validation_set=(testX, testY), show_metric=True,batch_size=batch_size) _y = model.predict(X) YY = [x.tolist() for x in Y] corrent_prediction = tf.equal(tf.arg_max(_y,1), tf.arg_max(YY,1)) accuracy = tf.reduce_mean(tf.cast(corrent_prediction, tf.float32)) print("\n\ncorrent_prediction = " , sess.run(accuracy) ) model.save("tflearn.lstm.model") 12345678910

总结

本次实验使用python3.x,tensorflow1.11.0,tflearn0.3.2,scipy1.1.0,scikit-image0.14.1
目前还正在训练,更新结果:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

网址:[转]20行代码实现语音识别系统 https://www.yuejiaxmz.com/news/view/195075

相关内容

智能AI语音识别算法:实现高精度语音转文字技术解析
基于MATLAB语音识别系统GUI界面
揭秘语音识别系统:技术与应用
语音识别系统控制
实战案例:AI在语音识别与语音合成领域的应用
AI语音转换技术:实时识别、智能转换与多场景应用解决方案
Python实现语音识别:百度baidu
语音识别技术进化:如何改变我们的生活1.背景介绍 语音识别技术,也被称为语音转文本(Speech
构建智能语音助手应用:语音识别和语音合成的实践
语音识别与语音助手:机器学习的生活实践

随便看看