1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 用Python3调用百度AI和图灵机器人实现一个智能(bushi)AI聊天机器人

用Python3调用百度AI和图灵机器人实现一个智能(bushi)AI聊天机器人

时间:2019-07-15 18:33:08

相关推荐

用Python3调用百度AI和图灵机器人实现一个智能(bushi)AI聊天机器人

题目看起来高大上,但其实这只是假象。关键是要理清思路和流程,掌握了这个之后,整个项目基本就简化成了“傻瓜”项目,对编程能力的要求较低。

思路及流程

一定要搞清这个流程,不要被绕晕。

完整代码

其中,第2步的百度AI语音识别API参数、第3步的图灵机器人参数必须修改成自己各自账号的,其他参数若想修改的话,先去百度AI开放平台和图灵机器人官网阅读技术文档。

from aip import AipSpeechimport requestsimport jsonimport speech_recognition as srimport win32com.client# 1、人类说出问题,生成问题音频speaker = win32com.client.Dispatch("SAPI.SpVoice")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.wav", "wb") as f:f.write(audio.get_wav_data())# 2、问题音频文件转成问题文本# 导入我们需要的模块,然后将音频文件发送出去,返回文本# 百度语音识别API配置参数APP_ID = '你自己的AppID'API_KEY = '你自己的API Key'SECRET_KEY = '你自己的Secret Key'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)path = "voices.wav"# 将语音转文本STTdef listen():with open(path, 'rb') as fp:voices = fp.read()try:result = client.asr(voices, 'wav', 16000, {'dev_pid': 1537, }) # 'dev_pid'参数1537是识别普通话,也可以设置成其他语言,详情见 百度AI开放平台result_text = result["result"][0]print("you said: " + result_text)return result_textexcept KeyError:print("KeyError")speaker.Speak("我没有听清楚,请再说一遍...")# 3、与机器人对话:调用的是图灵机器人# 图灵机器人的API_KEY、API_URL配置turing_api_key = "你自己机器人的apikey"api_url = "/openapi/api/v2" # 图灵机器人api网址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": "可有可无的参数"}}},"userInfo": {"apiKey": turing_api_key, # 你的图灵机器人apiKey"userId": "Stephanie" # 用户唯一标识(随便填,非密钥)}}req["perception"]["inputText"]["text"] = text_wordsresponse2 = requests.request("post", api_url, json=req, headers=headers)response_dict = json.loads(response2.text)result = response_dict["results"][0]["values"]["text"]print("AI Robot said:" + result)return resultwhile True:my_record()request1 = listen()response = Turing(request1)# 4、回复文本转成回复音频输出,回复问题speaker.Speak(response)

成果演示视频

和自己写的AI机器人聊天之渐渐超出剧本,演变成两小学鸡吵架两小儿辩日,吵不过AI只能自己气到语塞。

自制搞笑贺岁片|《我,机器人2之两小儿辩日》

心得

细节!细节!细节!细节决定成败。古人诚不欺我也。这段代码我搞了好多天,一直运行出问题,一直找不到bug,我当时心情崩溃到心想:我和这个智障机器人必须先疯一个。最后的最后,发现问题居然出现在一个参数名的拼写上!是一个小写i和大写I的微小细节!这个教训也一定程度上反应了复制粘贴的重要性(bushi)。单就在这个API调用上,百度和图灵机器人官网都给了具体详细的API调用代码,我们可以先复制粘贴下来先运行一遍看能不能成功,然后再在理解代码的基础上做自己个性化的修改。API调用虽说在AI领域里,但实际对编程技术的要求并不高,适合用来在外行人面前装装B,或者过年过节的在亲戚家人面前当成个节目表演表演(狗头)。不要有畏难心理。比如,工作室布置这个作业下来,我在真正开始着手做这个东西之前,心里想的都是:什么?我才接触编程一年多,你就要我整一个这个玩意儿出来?你也太抬举我了吧…这根本是无法完成的任务啊…但在deadline前一周,我不得不硬着头皮上的时候,我才发现,就这?就这?所以,相信自己!年轻人,不要讲武德,冲就完事儿了,憋整天质疑自己,想这些没用的东西,束手束脚的,走不远。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。