美文网首页大数据 爬虫Python AI Sql我爱编程python 入门
利用Python打造一款语音识别的程序!学会外包项目基本随便接了

利用Python打造一款语音识别的程序!学会外包项目基本随便接了

作者: 919b0c54458f | 来源:发表于2018-06-28 16:24 被阅读11次

    ▌语言识别工作原理概述

    ▌选择 Python 语音识别包

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

    •apiai

    •google-cloud-speech

    •pocketsphinx

    •SpeechRcognition

    •watson-developer-cloud

    •wit

    ▌安装 SpeechRecognation

    SpeechRecognition 兼容 Python2.6 , 2.7 和 3.3+,但若在 Python 2 中使用还需要一些额外的安装步骤。本教程中所有开发版本默认 Python 3.3+。

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

    ▌识别器类

    SpeechRecognition 的核心就是识别器类。

    Recognizer API 主要目是识别语音,每个 API 都有多种设置和功能来识别音频源的语音,分别是:

    recognize_bing(): Microsoft Bing Speech

    recognize_google(): Google Web Speech API

    recognize_google_cloud(): Google Cloud Speech - requires installation of the google-cloud-speech package

    recognize_houndify(): Houndify by SoundHound

    recognize_ibm(): IBM Speech to Text

    recognize_sphinx(): CMU Sphinx - requires installing PocketSphinx

    recognize_wit(): Wit.ai

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

    这 7 个 recognize_*() 识别器类都需要输入 audio_data 参数,且每种识别器的 audio_data 都必须是 SpeechRecognition 的 AudioData 类的实例。

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

    若是使用 Linux 系统下的 x-86 ,macOS 或者是 Windows 系统,需要支持 FLAC文件。若在其它系统下运行,需要安装 FLAC 编码器并确保可以访问 flac 命令。

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

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

    利用偏移量和持续时间获取音频片段

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

    例如,以下内容仅获取文件前四秒内的语音:

    在事先知道文件中语音结构的情况下,offset 和 duration 关键字参数对于分割音频文件非常有用。但使用不准确会导致转录不佳。

    噪声对语音识别的影响

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

    要了解噪声如何影响语音识别,请下载 “jackhammer.wav” (https://github.com/realpython/python-speech-recognition/tree/master/audio_files)文件,并确保将其保存到解释器会话的工作目录中。文件中短语 “the stale smell of old beer lingers” 在是很大钻墙声的背景音中被念出来。

    因为使用 adjust_for_ambient_noise()命令时,默认将文件流的第一秒识别为音频的噪声级别,因此在使用 record()获取数据前,文件的第一秒已经被消耗了。

    可使用duration关键字参数来调整adjust_for_ambient_noise()命令的时间分析范围,该参数单位为秒,默认为 1,现将此值降低到 0.5。

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

    ▌麦克风的使用

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

    安装测试

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

    $ python -m speech_recognition

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

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

    使用 listen()获取麦克风输入数据

    准备好麦克风实例后,读者可以捕获一些输入。

    就像 AudioFile 类一样,Microphone 是一个上下文管理器。可以使用 with 块中 Recognizer 类的 listen()方法捕获麦克风的输入。该方法将音频源作为第一个参数,并自动记录来自源的输入,直到检测到静音时自动停止。

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

    请记住,adjust_for_ambient_noise()默认分析音频源中1秒钟长的音频。若读者认为此时间太长,可用duration参数来调整。

    进群:125240963   即可获取数十套PDF书籍哦!

    相关文章

      网友评论

        本文标题:利用Python打造一款语音识别的程序!学会外包项目基本随便接了

        本文链接:https://www.haomeiwen.com/subject/izzgyftx.html