python实现语音机器人聊天
·
一.导入SpeechRecognition 包进行语音识别和语音录制
导入方式:(适用于python3)
pip3 install SpeechRecognition
查询是否导入成功:(运行python环境)
import speech_recognition as sr
sr.__version__
二.我们在这个过程中需要调用百度API,所以导入百度API包
pip3 install baidu_aip
在python编译环境下,导入百度API包,调用百度API
from aip import AipSpeech
三.导入语音输入包
pip3 install pypiwin32
在python编译环境下,导入语音输入包
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("你好")
下面是调用百度API和图灵API进行语音聊天输入和输出
import speech_recognition as sr #语音识别包
from aip import AipSpeech #音频文件转化为文字 百度API
# 调用图灵机器人进行对话
import requests
import json
#语音
import win32com.client
#语音输入
speaker=win32com.client.Dispatch("SAPI.SpVoice")
#使用speechrecognition包,进行语音识别和录制音频
def my_record(rate=16000):
r = sr.Recognizer()
with sr.Microphone(sample_rate=rate) as source:
print("please say something")
audio = r.listen(source)
with open("voices/myvoices.wav","wb") as f:
f.write(audio.get_wav_data())
# print("录音完成!")
#音频文件转化为文字 调用百度API
APP_ID = '####' #百度API id
API_KEY = '#####' #百度API key
SECRET_KEY = '#######' #百度API SECRET_KEY
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)
path = 'voices/myvoices.wav' #音频放置位置
def listen():
#读取录音文件
with open(path,'rb') as fp:
voices = fp.read()
#识别本地文件 dev_pid参数:1536普通话(支持简单的英文识别),1537普通话(纯中文识别),1737英语,1637粤语,1837四川话,1936普通话远场
try:
result = client.asr(voices,'wav',1600,{'dev_pid':1537,})
result_text=result["result"][0]
print("you said:"+result_text)
return result_text
except KeyError:
print("KeyError")
speaker.Speak("我没听清楚,请再说一遍 !")
#图灵机器人回复信息
TL_KEY="######" #图灵机器人KEY
API_URL="##########" #图灵机器人调用URL
headers={'Content-Type':'application/json;charset=UTF-8'}
def Turing(text_words=""):
req={
"reqType":0,
"perception":{
"inputText":{
"text":text_words
},
"selfInfo":{
"location":{
"city":"###",
"province":"##",
"street":"###"
}
}
},
"useInfo":{
"apiKey":"#####",
"userId":"####"
}
}
req["perception"]["inputText"]["text"]=text_words
response=requests.request("post",API_URL,json=req,headers=headers)
response_dict=json.loads(response.text)
result=response_dict["results"][0]["values"]["text"]
print("AI Robot said:"+result)
return result
while True:
my_record()
request = listen()
response = Turing(request)
speaker.Speak(response)
百度API获取过程
登录百度AI开放平台语音识别:https://ai.baidu.com/tech/speech/asr ,如果没有账号自己注册即可
注册完毕后,获取到百度API的开放接口,获取API-KEY等,接口调用方式有详细的说明文档
说明文档:https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
图灵API获取过程
去图灵的官网进行注册:http://www.turingapi.com/
注册完毕,根据自己需要设置机器人,自定义名称等等
注意:
(1)要实名认证的,否则只会有key而不能进行调用,后续可能会出现错误
(2)要注意关闭密钥开关
代码来源(其中添加了自己的注释):
https://blog.csdn.net/NIeson2012/article/details/96476878
更多推荐



所有评论(0)