语言识别工作原理概述

新知榜官方账号

2023-10-03 07:00:36

语言识别工作原理概述

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

  • apiai
  • google-cloud-speech
  • pocketsphinx
  • SpeechRcognition
  • watson-developer-cloud
  • wit

安装SpeechRecognation

SpeechRecognition兼容Python2.6,2.7和3.3+,但若在Python2中使用还需要一些额外的安装步骤。本教程中所有开发版本默认Python3.3+。读者可使用pip命令从终端安装SpeechRecognition:

识别器类

SpeechRecognition的核心就是识别器类。RecognizerAPI主要目是识别语音,每个API都有多种设置和功能来识别音频源的语音,分别是:recognize_bing():MicrosoftBingSpeech recognize_google():GoogleWebSpeechAPI recognize_google_cloud():GoogleCloudSpeech-requiresinstallationofthegoogle-cloud-speechpackagerecognize_houndify():HoundifybySoundHound recognize_ibm():IBMSpeechtoText recognize_sphinx():CMUSphinx-requiresinstallingPocketSphinx 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)文件,并确保将其保存到解释器会话的工作目录中。文件中短语“thestalesmellofoldbeerlingers”在是很大钻墙声的背景音中被念出来。因为使用adjust_for_ambient_noise()命令时,默认将文件流的第一秒识别为音频的噪声级别,因此在使用record()获取数据前,文件的第一秒已经被消耗了。可使用duration关键字参数来调整adjust_for_ambient_noise()命令的时间分析范围,该参数单位为秒,默认为1,现将此值降低到0.5。可以看到,recognition_google()返回了一个关键字为'alternative'的列表,指的是所有可能的响应列表。此响应列表结构会因API而异且主要用于对结果进行调试。

麦克风的使用

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

安装测试

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

$python-mspeech_recognition

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

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

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

准备好麦克风实例后,读者可以捕获一些输入。就像AudioFile类一样,Microphone是一个上下文管理器。可以使用with块中Recognizer类的listen()方法捕获麦克风的输入。该方法将音频源作为第一个参数,并自动记录来自源的输入,直到检测到静音时自动停止。运行上面的代码后稍等片刻,尝试在麦克风中说“hello”。同样,必须等待解释器提示返回后再尝试识别语音。请记住,adjust_for_ambient_noise()默认分析音频源中1秒钟长的音频。若读者认为此时间太长,可用duration参数来调整。

本页网址:https://www.xinzhibang.net/article_detail-15124.html

寻求报道,请 点击这里 微信扫码咨询

关键词

语音识别 Python API

分享至微信: 微信扫码阅读

相关工具

相关文章

相关快讯