语音识别是机器或程序识别口语中的单词和短语并将其转换为机器可读格式的能力。通常,这些算法的简单实现有一个有限的词汇表,它可能只识别单词/短语。但是,更复杂的算法(例如Google的Cloud Speech-to-Text和Amazon Transcribe)具有广泛的词汇量,并包含方言、噪音和俚语。

在本文中,我将演示:

语音转文字的工作原理如何处理要转录的音频使用Keras解决问题的深度学习模型一种评估此模型的方法将预测模型集成到项目中的脚本

简介

语音只是由我们的声带引起的空气周围振动而产生的一系列声波。这些声波由麦克风记录,然后转换为电信号。然后使用高级信号处理技术处理信号,分离音节和单词。得益于深度学习方面令人难以置信的最新进展,计算机也可以从经验中学习理解语音。

语音识别通过声学和语言建模使用算法来工作。声学建模表示语音和音频信号的语言单元之间的关系;语言建模将声音与单词序列进行匹配,以帮助区分听起来相似的单词。通常,基于循环层的深度学习模型用于识别语音中的时间模式,以提高系统内的准确性。也可以使用其他方法,例如隐马尔可夫模型(第一个语音识别算法是使用这种方法)。在本文中,我将仅讨论声学模型。

信号处理

有多种方法可以将音频波转换为算法可以处理的元素,其中一种方法(在本教程中将使用的一种方法)是在等距的点上记录声波的高度:

我们每秒读取数千次,并记录一个代表当时声波高度的数字。这是一个未压缩的.wav音频文件。“ CD质量”音频以44.1 kHz(每秒44,100个读数)采样。但是对于语音识别而言,16khz(每秒16,000个样本)的采样率足以覆盖人类语音的频率范围。

用这种方法,音频是通过一个数字向量来表示的,其中每个数字以1/16000秒的间隔表示声波的振幅。这个过程类似于图像预处理,如下例所示:

多亏尼奎斯特定理(1933年— 弗拉基米尔·科特尔尼科夫(Vladimir Kotelnikov)),我们知道,只要采样速度至少是我们要记录的最高频率的两倍,我们就可以使用数学方法从间隔采样中完美重建原始声波。

Python库

为了完成这个任务,我使用Anaconda环境(Python 3.7)和以下Python库:

ipython (v 7.10.2)keras (v 2.2.4)librosa (v 0.7.2)scipy (v 1.1.0)sklearn (v 0.20.1)sounddevice (v 0.3.14)tensorflow (v 1.13.1)tensorflow-gpu (v 1.13.1)numpy (v 1.17.2)

1.数据集

我们在实验中使用TensorFlow提供的语音指令数据集。它包括由成千上万不同的人发出的由30个短单词组成的65000个一秒钟长的话语。我们将建立一个语音识别系统,它可以理解简单的语音命令。您可以从此处下载数据集(kaggle.com/c/tensorflow-speech-recognition-challenge)。

2.预处理音频波

在使用的数据集中,一些记录的持续时间少于1秒,并且采样率太高。因此,让我们阅读声波并使用下面的预处理步骤来解决这个问题。这是我们要执行的两个步骤:

重采样删除少于1秒的短命令让我们在下面的Python代码片段中定义这些预处理步骤:

由上可知,信号的采样率为16000 hz。我们把它重采样到8000赫兹,因为大多数语音相关的频率都在8000赫兹。

第二步是处理我们的标签,这里我们将输出标签转换为整数编码,将整数编码标签转换为one-hot 向量,因为这是一个多目标问题

预处理步骤的最后一步是将2D数组reshape为3D,因为conv1d的输入必须是3D数组:

all_wave = np.array(all_wave).reshape(-1,8000,1)

3.创建训练和验证集

为了执行我们的深度学习模型,我们将需要生成两个集合(训练和验证)。对于此实验,我使用80%的数据训练模型,并在其余20%的数据上进行验证:

4.机器学习模型架构

我使用Conv1d和GRU层来建模用于语音识别的网络。Conv1d是一个仅在一维上进行卷积的卷积神经网络,而GRU的目标是解决标准循环神经网络的梯度消失问题。GRU也可以看作是LSTM的一个变体,因为两者的设计相似,在某些情况下,可以产生同样优秀的结果。

该模型基于deepspeech h2和Wav2letter++ algoritms这两种著名的语音识别方法。下面的代码演示了使用Keras提出的模型:

注意:如果仅使用CPU来训练此模型,请用GRU替换CuDNNGRU层。

下一步是将损失函数定义为分类交叉熵,因为它是一个多类分类问题:

model.compile(loss='categorical_crossentropy',optimizer='nadam',metrics=['accuracy'])

Early stopping和模型检查点是回调,以在适当的时间停止训练神经网络并在每个epoch后保存最佳模型:

让我们在32的batch size上训练机器学习模型,并评估保留集上的性能:

该命令的输出为:

5.可视化

我将依靠可视化来了解机器学习模型在一段时间内的性能:

6.预测

在这一步中,我们将加载最佳的权重,并定义识别音频和将其转换为文本的函数:

对验证数据进行预测:

这是一个提示用户录制语音命令的脚本。可以录制自己的语音命令,并在机器学习模型上测试:

最后,我们创建一个脚本来读取保存的语音命令并将其转换为文本:

最后

语音识别技术已经成为我们日常生活的一部分,但目前仍局限于相对简单的命令。随着技术的进步,研究人员将能够创造出更多能够理解会话语音的智能系统。

python 语音识别培训使用Python和Keras创建简单语音识别引擎相关推荐

  1. 山东python编程培训,Python进入山东省小学教材了

    根据最近火爆朋友圈的一则消息,Python已经进入山东省小学教材.Python这几年的火热,离不开人工智能和机器学习. 已经没有什么能够阻挡Python了.根据国务院<新一代人工智能发展规划的通 ...

  2. python上海培训学校Python是什么

    Python是什么,成都Python开发培训什么内容?Python作为近两年以来热门的行业,宛如暴风一般直接席卷了市场,也导致很多的企业出现Python工程师的空缺,今天,就来聊聊这些问题,也可以让大 ...

  3. Python开发培训哪里好

    为什么那么多人愿意去学Python?Python开发培训哪里好? 一起简单分析一下吧: 学Python是学习Google.YouTube.Instagram等全球著名平台应用的编程语言.它是一种面向企 ...

  4. python经理培训

    徐州python经理培训(Python能帮我们做什么呢) 来源:徐州童程童美    时间:2021-10-26 18:35 徐州python经理培训,您兴趣徐州python培训吗,可以看看Python ...

  5. 余姚计算机编程培训,余姚python编程培训

    余姚python编程培训 首页 > python > 余姚python编程培训 作者:镀金池   发布时间:2018-11-05 另外,用户在练习程序后,还可以议决在 Kubernetes ...

  6. 成都Python培训哪家好?市面上的Python脱产培训要多久?

    Python编程是一个十分系统的技术体系,有时候光靠看书和网上的视频,只能是一知半解,遇到问题,没有人给你讲解其中的原理和流程,那么对于整个技术点的理解就永远不会通透.所以很多人就选择Python脱产 ...

  7. python语言培训班-深圳Python语言培训班

    导语概要 深圳达内python开发培训学python全栈式开发+人工智能做时代前端的工程师快速咨询横跨多个互联网核心领域的PythonPython工程师可从事多领域编程工作课程简介深圳达内Python ...

  8. Python培训:Python有哪些函数?你了解几种?

    本期小编要为大家带来的Python教程就是关于Python函数这方面的,我们都知道Python函数,一般是指组织好的.可重复使用的.用来实现单一或相关联功能的代码段,Python函数包含系统中自带的一 ...

  9. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...

    原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...

最新文章

  1. 服务器硬件电路设计书籍,家庭网关硬件接口电路设计大全——电路精选(3)...
  2. oracle awr 等待事件,3.db file scattered read等待事件
  3. java定时器的使用
  4. tfrecord数据报错 InvalidArgumentError: Feature: feature (data type: string) is required but could not
  5. DHCP和DHCP中继功能与配置
  6. WSDM 2022 | 合约广告自适应统一分配框架
  7. 谈判高手子贡---引导“用户”的专家
  8. CSDN如何找到自己关注的博客专栏
  9. 天啊~ 少些一个等号的后果
  10. 图像处理中的空间域处理方法
  11. 让你提前认识软件开发(3):学校C语言教材的缺陷
  12. 计算机系统操作中级工试题及答案,计算机系统操作中级工试题附答案.doc
  13. C语言家族树管理系统
  14. NoSQL之 Redis配置与优化
  15. 从零开始构建企业级推荐系统
  16. 风控术语手册(银行_消费金融信贷业务)_version6
  17. Windows用户的分类
  18. C语言中的函数(重点介绍自定义函数)
  19. 监督学习最常见的四种算法
  20. 啊哈C——学习3.5一起来找茬

热门文章

  1. 北京哪里可以买到含羞草啊?或者种子也行
  2. 无盘工作站给服务器ip地址协议,如何给无盘工作站安装TCP IP协议
  3. 8月22-23日 【广州】《社区商业项目开发定位、规划、招商、运营与模式创新》
  4. 最全的硬盘修复专题帖1(转贴)
  5. 105道CSS 面试知识点总结
  6. win10任务栏WIFI小图标不见了--解决办法
  7. 1.TPC-C测试工具一——TPC-C简介
  8. Python-数据类型考试题分析
  9. mysql performance tuning_Performance Tuning MySQL
  10. Java中角度和弧度的转换,三角函数,反三角函数