Python简单语音识别并响应
https://www.cnblogs.com/warcraft/p/10112486.html
下载最新版pyaudio地址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
起因是一个工作中喜欢说口头禅的同事,昨天老说“你看看你看看 操不操心”。说了几次之后我就在他说完“你看看”后面续上,“操不操心”。往复多次后,我就想,为啥不用Python识别语音并作出响应,正好没弄过语音识别。
1. 语音转文字参考Python语音识别终极指南,吐槽一句:质量太差,是最烂的无审查的机翻。引模块中间都没空格importspeech_recognitionassr 应该是import speech_recognition as sr;并创建识一个别器类的例子应该是并创建一个识别器类的例子这块都不仅仅是机翻了吧,怎么会拆了词。但是为了了解API足够了。
语音转文字使用谷歌云平台的语音转文字服务[Google Cloud Speech API](https://cloud.google.com/speech/),因为是不需要API密钥的。其实是因为有默认密钥:
def recognize_google(self, audio_data, key=None, language="en-US", show_all=False):
...
if key is None: key = "AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw
...
通过另外两个函数参数还可以了解到:lanauage (指定识别的语言),show_all(False返回识别率最高的一条结果,True返回所有识别结果的 json串 字典数据)
安装pip install SpeechRecognition
1.1 本地语音文件识别测试
# coding:utf-8
"""
本地语音文件识别测试
"""
import speech_recognition as sr
import sys
say = '你看看'
r = sr.Recognizer()
# 本地语音测试
harvard = sr.AudioFile(sys.path[0]+'/youseesee.wav')
with harvard as source:
# 去噪
r.adjust_for_ambient_noise(source, duration=0.2)
audio = r.record(source)
# 语音识别
test = r.recognize_google(audio, language="cmn-Hans-CN", show_all=True)
print(test)
# 分析语音
flag = False
for t in test['alternative']:
print(t)
if say in t['transcript']:
flag = True
break
if flag:
print('Bingo')
自己录了一段语音youseesee.wav (内容为轻轻(类似悄悄话,声带不强烈震动)说的你看看你看看,持续两秒)。音频文件格式可以是WAV/AIFF/FLAC
AudioFile instance given a WAV/AIFF/FLAC audio file
去噪函数adjust_for_ambient_noise()在音频中取一段噪声(