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

思路及流程

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

完整代码

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

from aip import AipSpeech
import requests
import json
import speech_recognition as sr
import 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"# 将语音转文本STT
def 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 = "http://openapi.tuling123.com/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之两小儿辩日》

心得

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

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

  1. php百度大脑,百度大脑和图灵机器人制作一个简单的自动聊天机器人【PHP代码】...

    可以和机器人聊天 文字发送消息 网页进行语音回复 这里主要用到了两个接口 一个是百度大脑  用来实现语音合成 一个是图灵机器人用来实现自动聊天 以下是代码分两个版本 版本一是没有语音合成 版本二是加上 ...

  2. Python3调用百度翻译API进行英文翻译

    一.API的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力 ...

  3. python调用百度翻译-python3调用百度翻译API实时翻译的实例代码

    python3调用百度翻译API实现实时翻译 今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个 ...

  4. 基于Python+百度语音的智能语音ChatGPT聊天机器人(机器学习+深度学习+语义识别)含全部工程源码 适合个人二次开发

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 Pycharm 环境 ChatterBot 环境 模块实现 1. 模型构建 2. 服务器端 3. 客户端 4. 语音录入 ...

  5. 树莓派智能家居-语音聊天机器人实现

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-42.html 最近开始复习考研了,所以博客更新频率要降下来了, ...

  6. 2020最新智能客服|聊天机器人算法、架构及应用分享

    智能客服(聊天机器人)是在大规模知识处理基础上发展起来的一项面向行业应用的,适用大规模知识处理.自然语言理解.知识管理.自动问答系统.推理等等技术行业,智能客服不仅为企业提供了细粒度知识管理技术,还为 ...

  7. 东京・京都“APARTMENT HOTEL MIMARU”首次导入运用智能音箱和聊天机器人的IT服务

    应对客户逐年递增的需求 东京和京都 -- (美国商业资讯) -- 大和房屋集团旗下的株式会社Cosmos Hotel Management(母公司:东京都港区:社长:藤岗 英树:主页:https:// ...

  8. AIGC:ChatGPT(一个里程碑式的对话聊天机器人)的简介(意义/功能/核心技术等)、使用方法(七类任务)、案例应用(提问基础性/事实性/逻辑性/创造性/开放性的问题以及编程相关)之详细攻略

    AIGC:ChatGPT(一个里程碑式的对话聊天机器人)的简介(意义/功能/核心技术等).使用方法(七类任务).案例应用(提问基础性/事实性/逻辑性/创造性/开放性的问题以及编程相关)之详细攻略 导读 ...

  9. 历经一个炒作周期,聊天机器人为什么还没成功?

    ▼ 点击上方蓝字 关注网易智能 为你解读AI领域大公司大事件,新观点新应用 2016年,我们说,机器人模式的转变将比过去十年从网络向移动应用的转变更具破坏性和趣味性.我们相信,聊天机器人是下一个即将发 ...

最新文章

  1. 让数百万台手机训练同一个模型?Google把这套框架开源了
  2. 微信一键关注 php,微信公众平台开发一键关注微信公众平台账号
  3. oracle默认初始化用户名密码和密码修改
  4. springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格
  5. java 类名重复_更快地重复访问Java的Java类名?
  6. namespace命名空间的使用
  7. mysql增加sort_buffer_MySQL数据库之MySQL中的sort_buffer_size参数大小的设置问题
  8. 从零开始学centos(一)
  9. postgresql 查询sql字符串拼接相关
  10. nvivo服务器项目,【NVivo教程】在Nvivo中设置案例路线图
  11. Windows 10, version 21H2 (released Nov 2021) 简体中文版、英文版(企业版)下载
  12. 股票涨停是什么意思呀?股市中股票涨停是什么意思?
  13. 恩,今天把git和sublime结合了一下。。然后看了下《西部世界》
  14. nmn作用是什么意思,nmn是怎么做到抗衰老的,详细说明
  15. php单元测试入门教程phpunit详解
  16. 暗影精灵电脑 开机速度慢的解决方法
  17. python绘制散点图的步骤_python绘制散点图
  18. 从图形到像素:前端图形编程技术概览
  19. 解决open()不能打开带中文的文件路径
  20. Docker 启动镜像

热门文章

  1. 【转载】深入浅出的讲解傅里叶变换
  2. 写给在校的GISER
  3. 实战案例——小帅优化网站,70天目标关键词全部第一
  4. (二十):网络表情包的单模态与双模态情感分析
  5. 并发编程之深入理解十三:CompletionService CompletableFuture
  6. 基本的计算机结构知识----基础向
  7. sql注入登陆(菜鸟级)
  8. nmon以及nmon analyser 教程
  9. if单选,双选,多选及switch多选择结构
  10. 安卓开发:安卓应用上架主流平台汇总