专栏首页python小白到大牛Python终级教程!语音识别!大四学生实现语音识别技能!吊的不行
原创

Python终级教程!语音识别!大四学生实现语音识别技能!吊的不行

▌语言识别工作原理概述

语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以及只有约十几个单词的词汇量。现代语音识别系统已经取得了很大进步,可以识别多个讲话者,并且拥有识别多种语言的庞大词汇表。

▌选择 Python 语音识别包

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

apiai

google-cloud-speech

pocketsphinx

SpeechRcognition

watson-developer-cloud

wit

$ pip install SpeechRecognition

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

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

SpeechRecognition 附带 Google Web Speech API 的默认 API 密钥,可直接使用它。其他六个 API 都需要使用 API 密钥或用户名/密码组合进行身份验证,因此本文使用了 Web Speech API。

▌音频文件的使用

首先需要下载音频文件链接 Python 解释器会话所在的目录中。

AudioFile 类可以通过音频文件的路径进行初始化,并提供用于读取和处理文件内容的上下文管理器界面。

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

在with块中调用record() 命令时,文件流会向前移动。这意味着若先录制四秒钟,再录制四秒钟,则第一个四秒后将返回第二个四秒钟的音频。

本程序从第 4.7 秒开始记录,从而使得词组 “it takes heat to bring out the odor” ,中的 “it t” 没有被记录下来,此时 API 只得到 “akes heat” 这个输入,而与之匹配的是 “Mesquite” 这个结果。

同样的,在获取录音结尾词组 “a cold dip restores health and zest” 时 API 仅仅捕获了 “a co” ,从而被错误匹配为 “Aiko” 。

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

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

若经常遇到这些问题,则需要对音频进行一些预处理。可以通过音频编辑软件,或将滤镜应用于文件的 Python 包(例如SciPy)中来进行该预处理。处理嘈杂的文件时,可以通过查看实际的 API 响应来提高准确性。大多数 API 返回一个包含多个可能转录的 JSON 字符串,但若不强制要求给出完整响应时,recognition_google()方法始终仅返回最可能的转录字符。

▌麦克风的使用

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

安装 PyAudio

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

安装测试

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

$ python -m speech_recognition

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

A moment of silence, please...

Set minimum energy threshold to 600.4452854381937

Say something!

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

Microphone 类

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

>>> import speech_recognition as sr

>>> r = sr.Recognizer()

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

>>> mic = sr.Microphone()

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

我有一个微信公众号,经常会分享一些python技术相关的干货;如果你喜欢我的分享,可以用微信搜索“python语言学习”关注

欢迎大家加入千人交流答疑裙:699+749+852

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python抓取炉石传说卡牌,做一个女神的拼图游戏

    网站其实已经加载了所有的卡牌原画 只是之后的原画做了隐藏处理默认不展示  style=display

    猫咪编程
  • 安利一波Python编程中非常实用的那些黑魔法

    编者按:Python是机器学习的主流语言,没有之一。今年5月,它首次在PYPL排行榜上超越JAVA,成为全球第一大编程语言。而一个月后,Stack Overfl...

    猫咪编程
  • 用Python绘制红楼梦词云图,竟然发现了这个!

    Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如...

    猫咪编程
  • 分布式通信的几种方式

    目前的分布式架构主要由corba和JavaEE搭建,JavaEE优点是跨平台,开发成本低、周期短,不需要学习IDL语言;CORBA的优点是服务器响应速度更快。决...

    哲洛不闹
  • 远程办公奏响抗疫交响曲

    “前天一觉醒来,假期还有5天。昨天一觉醒来,假期还有7天。今天一觉醒来,假期还有13天。我都不敢再睡觉了,怕一觉起来要退休了。”这是前两天在社交平台上被广泛传播...

    刘旷
  • 远程办公开启中国To B元年

    疫情无情夺走了众多无辜百姓的生命,也让很多中小企业以及千万家庭的经济生活变得更加艰难……在众多企业无法正常复工的情况下,一场浩浩荡荡的远程办公打响了抗疫战。

    刘旷
  • 糟糕,手机密码不保!剑桥大学新研究,用AI算法“监听”手机打字,触摸屏也中招

    你可能听不到,但手指每在屏幕上轻轻点一下,都会发出一个声波。离屏幕不到1厘米远的麦克风,轻轻松松就能记录下来。

    量子位
  • 莱斯大学&英特尔新算法证明CPU加速深度学习优于GPU!老黄核弹警告

    莱斯大学和英特尔的最新研究证明,无需专门的加速硬件(如GPU),也可以加速深度学习。

    量子位
  • JavaScript的介绍

     javascript是什么?     javascript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站...

    黑泽君
  • 这或许是对小白最友好的python入门了吧——20,定义函数简单应用

    理论上来说,你可以定义任何函数,也可以让这些函数做任何事,今天,我们就来看几个小例子。 假设你是一名淘宝卖家,你要给你的顾客发快递,你有一套模板,只需要填入相关...

    用户1315847

扫码关注云+社区

领取腾讯云代金券