Python英文语音识别终极手册

目前常用的python语音识别API

  • apiai
  • assemblyai
  • google-cloud-speech
  • pocketsphinx
  • SpeechRecognition
  • watson-developer-cloud
  • wit
    像wit和apiai这些python包提供的功能已经超出了基本的语音识别的范围。所以,推荐使用SpeechRecognition这个包,因为使用更简单。并且这个包默认提供Google Web Speech API密钥。

Python SpeechRecognition支持以下音频文件格式

  • WAV- PCM/LPCM format
  • AIFF
  • AIFF-C
  • FLAC
    注:文件格式很重要,不然极易出错。

准备工作

使用pip工具,安装 SpeechRecognition包
在命令行中输入:

pip install SpeechRecognition

为了测试安装是否成功,可以在python解释器中输入以下代码,检查包的版本:

import speech_recognition as sr
sr.__version__

准备音频文件

可以自己准备,也可以使用网络上现成的文件:http://www.voiptroubleshooter.com/open_speech/american.html

在python中读取音频文件
首先,我们创建一个Recognizer类的实例。

r=sr.Recognizer()

有Recognizer,每个API都有一个单独的方法:

  • recognize_bing()- Microsoft Bing Speech
  • recognize_google()- Google Web Speech API
  • recognize_google_cloud()- Google Cloud Speech
  • recognize_houndify()-Houndify
  • recognize_ibm()- IBM Speech to Text
  • recognize_sphinx- CMU Sphinx
  • recognize_wit()- Wit.ai

用record()采集数据

可以用context manager来打开音频文件并且读取其中的内容,然后记录到AudioData实例中去。

demo=sr.AudioFile(‘demo.wav’)
with demo as source:
	audio=r.record(source)

进一步确认操作正确:

>>> type(audio)
><class ‘speech_recognition.AudioData’>

识别Audio数据对象中的语音信息

可以用recognize_google()来生成语音文本。

r.recognize_google(audio)

音频切片

如果你只想读取音频文件的一部分,你可以更改参数offset,来申明什么地方开始,以及读取多长时间。

with demo as source:
	audio=r.record(source,offset=4,duration=3
r.recognize_google(audio)

处理噪音

噪音难以避免。adjust_for_ambient_noise()方法可以在一定程度上解决这个问题。

with demo as source:
	r.adjust_for_ambient_noise(source)	audio=r.record(source,offset=2.5,duration=3
r.recognize_google(audio)

我们可以提供一个参数,来设定程序采集音频信息的时长,这样可以校准recognizer。下面是一个例子,虽然参数差异仅仅为0.005,但是结果却完全不同。

>>> with demo as source:
	r.adjust_for_ambient_noise(source,duration=0.51)
	audio=r.record(source,offset=2.5,duration=3)
>>> r.recognize_google(audio)
‘National thanks’

>>> with demo as source:
	r.adjust_for_ambient_noise
	(source,duration=0.515)
	audio=r.record(source,offset=2.5,duration=3)
>>> r.recognize_google(audio)
‘clear the sheet’

实时语音识别

为了能够识别自己的声音,需要使用PyAudio包来调用设备麦克风。可以用pip安装。

pip install PyAudio

也可以从网上下载:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio然后再:

pip install [file_name_for_binary]

Microphone类

就像前文音频文件的Recognizer一样,我们需要实时音频数据的Microphone类。重启pyhton解释器:

 import speech_recognition as sr
 r=sr.Recognizer()

然后创建Microphone类的实例:

mic=sr.Microphone()

使用list_microphone_names()方法可以看所有可以使用的microphone

sr.Microphone.list_microphone_names()

同时也可以选择一个特定的麦克风:

mic=sr.Microphone(device_index=3)

但是此时我们选择默认的设置。

抓取麦克风输入文件

用listen()方法可以抓取麦克风中的音频:

with mic as source:
	audio=r.listen(source)

现在可以对着你的麦克风说话了,当程序检测不到声音,那么在解释器里面会出现 (>>>)表示声音采集结束。

r.recognize_google(audio)

导致error发生的语音

当python无法将这些语音与文本匹配,那么可能会返回UnknownValueError。

>>>r.recognize_google(audio)

Traceback (most recent call last):
File “<pyshell#7>”, line 1, in <module>
r.recognize_google(audio)
File “C:\Users\Ram\AppData\Local\Programs\Python\Python37–32\lib\site-packages\speech_recognition\__init__.py”, line 858, in recognize_google
if not isinstance(actual_result, dict) or len(actual_result.get(“alternative”, [])) == 0: raise UnknownValueError()
speech_recognition.UnknownValueError

像咳嗽声,呕吐声,拍手声等都可能导致这些情况发生。

注:原文地址https://becominghuman.ai/the-ultimate-guide-to-speech-recognition-with-python-d45256c73e54

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值