最为重要的是,在 Python 程序中实现语音识别非常简单。阅读本文章,你将会了解到Python是如何制作语音识别的。你将会学习到:

语言识别工作原理概述

语音识别的首要部分当然是语音。通过麦克风,语音便从物理声音被转换为电信号,然后通过模数转换器转换为数据。一旦被数字化,就可适用若干种模型,将音频转录为文本。

幸运的是,对于 Python 的使用者来说,部分的语音识别服务可通过 API 在线使用,其中大部分提供了 Python SDK。 选择 Python 语音识别包

PyPI中有一些现成的语音识别软件包。

其中一些软件包(如 wit 和 apiai )提供了部分超出基本语音识别的内置功能,如识别讲话者意图的自然语言处理功能。还有其他的软件包,比如谷歌云语音,比较专注于语音向文本的转换。

在其中,SpeechRecognition 就因便于使用而脱颖而出。

安装 SpeechRecognation

本教程中所有开发版本默认 Python 3.3+。

读者可使用 pip 命令从终端安装 SpeechRecognition:

安装完成后请打开解释器窗口并输入以下内容来验证安装:

注:请不要现在就关闭此会话,因为在后面的几个步骤将要使用它。

若处理现有的音频文件,可以直接调用 SpeechRecognition ,但是要注意具体用例的一些依赖关系。同时要注意,安装 PyAudio 包来获取麦克风输入。 识别器类

以上的七个只中只有 recognition_sphinx()可与CMU Sphinx 引擎脱机工作, 其他六个都需要连接互联网。

从现在开始实践,在解释器的会话中调用 recognise_google()函数。

屏幕会出现:

相信你已经猜到结果了,怎么能在空文件中识别出数据呢?

AudioData 实例的创建有两种路径:音频文件或由麦克风录制的音频,先从比较容易上手的音频文件开始。 音频文件的使用

支持文件类型

使用 record() 从文件中获取数据

在解释器会话框输入以下命令来处理 “harvard.wav” 文件的内容:

通过上下文管理器打开文件并读取文件内容,并将数据存储在 AudioFile 实例中,然后通过 record()将整个文件中的数据记录到 AudioData 实例中,可通过检查音频类型来确认:

现在可以调用 recognition_google()来尝试识别音频中的语音。

以上就完成了第一个音频文件的录制。 利用偏移量和持续时间获取音频片段

若只想捕捉文件中部分演讲内容该怎么办?record() 命令中有一个 duration 关键字参数,可使得该命令在指定的秒数后停止记录。

噪声对语音识别的影响

噪声在现实世界中确实存在,所有录音都有一定程度的噪声,而未经处理的噪音可能会破坏语音识别应用程序的准确性。

尝试转录此文件时会发生什么?

那么该如何处理这个问题呢?可以尝试调用 Recognizer 类的adjust_for_ambient_noise()命令。

这样就与准确结果接近多了,但精确度依然存在问题,而且词组开头的 “the” 被丢失了,这是什么原因呢?

现在我们就得到了这句话的 “the”,但现在出现了一些新的问题——有时因为信号太吵,无法消除噪音的影响。

通过把 recognition_google()中 True 参数改成 show_all 来给出完整响应。

可以看到,recognition_google()返回了一个关键字为 ''alternative'' 的列表,指的是所有可能的响应列表。此响应列表结构会因 API 而异且主要用于对结果进行调试。 麦克风的使用

若要使用 SpeechRecognizer 访问麦克风则必须安装 PyAudio 软件包,请关闭当前的解释器窗口,进行以下操作: 安装 PyAudio

安装 PyAudio 的过程会因操作系统而异。

Debian Linux

如果使用的是基于 Debian的Linux(如 Ubuntu ),则可使用 apt 安装 PyAudio:

安装完成后可能仍需要启用 pip install pyaudio ,尤其是在虚拟情况下运行。

macOS

macOS 用户则首先需要使用 Homebrew 来安装 PortAudio,然后调用 pip 命令来安装 PyAudio。

Windows

Windows 用户可直接调用 pip 来安装 PyAudio。

安装测试

安装了 PyAudio 后可从控制台进行安装测试。

请确保默认麦克风打开并取消静音,若安装正常则应该看到如下所示的内容:

请对着麦克风讲话并观察 SpeechRecognition 如何转录你的讲话。 Microphone 类

请打开另一个解释器会话,并创建识一个别器类的例子。

此时将使用默认系统麦克风,而不是使用音频文件作为信号源。读者可通过创建一个Microphone 类的实例来访问它。

若系统没有默认麦克风(如在 RaspberryPi 上)或想要使用非默认麦克风,则需要通过提供设备索引来指定要使用的麦克风。读者可通过调用 Microphone 类的list_microphone_names()函数来获取麦克风名称列表。

注意:你的输出可能与上例不同。

list_microphone_names()返回列表中麦克风设备名称的索引。在上面的输出中,如果要使用名为 “front” 的麦克风,该麦克风在列表中索引为 3,则可以创建如下所示的麦克风实例:

但大多数情况下需要使用系统默认麦克风。

执行 with 块后请尝试在麦克风中说出 “hello” 。请等待解释器再次显示提示,一旦出现 “>>>” 提示返回就可以识别语音。

如果没有提示再次返回,可能是因为麦克风收到太多的环境噪音,请使用 Ctrl + C 中断这个过程,从而让解释器再次显示提示。

要处理环境噪声,可调用 Recognizer 类的 adjust_for_ambient_noise()函数,其操作与处理噪音音频文件时一样。由于麦克风输入声音的可预测性不如音频文件,因此任何时间听麦克风输入时都可以使用此过程进行处理。

运行上面的代码后稍等片刻,尝试在麦克风中说 “hello” 。同样,必须等待解释器提示返回后再尝试识别语音。

处理难以识别的语音

尝试将前面的代码示例输入到解释器中,并在麦克风中输入一些无法理解的噪音。你应该得到这样的结果:

无法被 API 匹配成文字的音频会引发 UnknownValueError 异常,因此要频繁使用 try 和 except 块来解决此类问题。API 会尽全力去把任何声音转成文字,如短咕噜声可能会被识别为 “How”,咳嗽声、鼓掌声以及舌头咔哒声都可能会被转成文字从而引起异常。

python自制语音识别_今天的语音识别,我们就用Python来做,从基础的知识到实践的运用...相关推荐

  1. 长语音识别_长文本语音识别_语音 识别 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 录音文件识别请求,数据结构,android sdk,ios sdk,自学习模型,使 ...

  2. python 字符串拼接_面试官让用 3 种 python 方法实现字符串拼接 ?对不起我有8种……...

    点击上方 蓝字关注我们 点击上方"印象python",选择"星标"公众号重磅干货,第一时间送达!之前发过很多关于 Python 学习的文章,收到大家不少的好评, ...

  3. python ide 最好_我在iPad上最好的Python IDE

    python ide 最好 Having finished my first year at university, and being left with very little to do thi ...

  4. python selenium脚本_怎样开始写第一个基于python的selenium脚本

    1.下载并安装python(http://www.python.org/geti/). 2.安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩 ...

  5. python语言 行业_如何入门编程开发行业 选择Python语言怎么样

    如何入门编程开发行业?选择Python语言怎么样?Python是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件,语法简洁清晰,它具有丰富和强大的库.它常被称为胶水语言,能够把用其他语言制作 ...

  6. python笔记视频_终于拿到!清华大佬Python视频+书+笔记汇总

    终于拿到!清华大佬Python视频+书+笔记汇总 清华学姐推荐的Python视频400集,拿走不谢!

  7. python 建筑计算_制图小技巧:巧用Python和ELK瞬间完成总图建筑名称标注

    哎呦,又到了每周一次的制图教室啦.经过前面两次制图教程的分享,相信大家对于白模填色和写实渲染这两种表达方式肯定有了较好的掌握. 那么今天我们就转战制图技巧篇,和童鞋们聊一下总平面图中的建筑名称标注问题 ...

  8. python编程首选_为什么说学编程首选是python

    为什么学编程 你可能不会成为一名专业的程序员, 不过学编程的确是有很多的原因的 1. 最重要的是你想学!不论是因为业余爱好还是作为职业,编程都是十分有意思的, 都会让你收获很多 2. 如果你是对计算机 ...

  9. python树代码_浅析AST抽象语法树及Python代码实现

    在计算机科学中,抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码.树上的每个 ...

  10. python入门教授_南开大学教授强力推荐的5本Python入门书籍,附电子版

    筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...

最新文章

  1. Hadoop学习--Hive安装与配置
  2. 系统设计原则的重要性_设计原则的重要性及其对好的设计的影响
  3. 各自用一句话来概括MVC、MVP、MVVM的差异特点
  4. 产品认知:你的产品适不适合快速去迭代?
  5. 删除wallet里面登机牌_登机牌丢失问题
  6. python类的定义和创建_Python类对象的创建和使用
  7. 在objective-C中#pragma mark是什么意思?
  8. python django框架_Python Web框架【Django框架第一篇基础】
  9. 基于LDAP的WebLogic虚拟化统一用户权限管理
  10. 每日一问 --信源编码的过程?
  11. hmcl启动器怎么联机_HMCL 启动器教程 #1 安装启动器
  12. 镁光ddr3布线规则_讨论一下DDR3 缓存的电压和频率
  13. ​LeetCode刷题实战592:分数加减运算
  14. 机器学习相关数据库(转)
  15. 江苏大学计算机学院换届,关于计算机学院各支部选举结果的批复
  16. Google Play 支付流程参考
  17. 清除IBM小型机橙色告警灯方法
  18. python下求特征向量与特征值
  19. prim算法之处女作
  20. 矩形区域的泊松方程,深度学习模拟差分法

热门文章

  1. Balsamiq Mockups 实例3
  2. 2016级算法第四次上机-B ModricWang的序列问题
  3. ubuntu classicmenu-indicator
  4. [转]如何写一份交互说明文档
  5. 一个项目告一段落,终于可以回家过年了。
  6. 大数据之-Hadoop3.x_MapReduce_数据压缩---大数据之hadoop3.x工作笔记0138
  7. AndroidStudio_Base64图片的解码_编码_要注意的地方---Android原生开发工作笔记223
  8. Vue表单数据自动收集---vue工作笔记0012
  9. MFC工作笔记0004---MFC中afx_msg是什么,afx_msg void function()是什么意思
  10. Netty工作笔记0067---Netty编解码机制简述