新知榜官方账号
2023-10-03 07:00:36
语言识别工作原理概述
选择Python语音识别包PyPI中有一些现成的语音识别软件包。其中包括:
安装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参数来调整。
相关工具
相关文章
相关快讯
推荐
用Deepseek写AI绘图提示词,像呼吸一样简单!
2025-02-19 16:12
你以为AI绘画是黑科技?其实早成了“路边摊生意”!
2025-02-19 10:15
Flux爆火,全网最全面最详细的Flux使用教程!
2025-02-18 14:19
用AI如何创作音乐,实战教学来啦!
2025-02-17 17:23
MidJourney让你秒变绘画大神,从零开始画哪吒!
2025-02-17 14:56
AI应用新境界:让人工智能成为你的得力助手
2025-02-14 15:45
AI短片革命:当创作遇上智能,人人都能成为导演
2025-02-14 14:53
AI狂潮下的人类职场:是失业危机还是进化契机?
2025-02-13 16:53
开启影视创作新纪元,效率提升 10 倍的神器来了!
2025-02-13 15:11
深度解析DeepSeek:当AI技术照进创作产业的未来
2025-02-12 17:16