智能聊天机器人系统

# 智能聊天机器人系统
# 1.系统简介
# 随着社会的各个公司以及大学对人工智能技术的深入研究和快速发展,人工智能技术将逐步应用到
# 方方面面。智能聊天机器人系统是基于各类传感器收集人类语音数据(智能电视、智能空调,
# 智能冰箱、智能音箱等电器的使用情况)并进行控制,通过算法模型的设计、优化和应用,
# 来达到真正的人机交互,开启人类的智能生活。
# 2.技术要求和限制条件
# 1)根据项目小组讨论情况,确定系统实现的方向,第三方接口的选择等;
# 2)根据数据业务模型,构建信息交互转换平台,提供项目优化方案;
# 3)按照智能助手系统为人类提供的功能,给出各模块的设计,提供语音识别、语音合成等功能。
# 系统开始,按1对话开始,你说话,机器人和你说话
import pyaudio, wave
from aip import AipSpeech
import json
import urllib.request
import os# 采取录音
def record(second,filename):# 采样率RATE = 8000# 采样通道CHANNELS = 2# 采样精度FORMAT = pyaudio.paInt16# 采样时间SECONDS = second# 创建一个pyaudio对象p = pyaudio.PyAudio()frames = list()# 创建流对象stream = p.open(rate=RATE,channels=CHANNELS,format=FORMAT,input=True)print("录音开始了!!!")data = stream.read(RATE*SECONDS)frames.append(data)stream.stop_stream()stream.close()print("录音结束!!!")p.terminate()wf = wave.open(filename,'wb')wf.setnchannels(CHANNELS)wf.setframerate(RATE)wf.setsampwidth(p.get_sample_size(FORMAT))wf.writeframes(b''.join(frames))wf.close()return filename""" 你的 APPID AK SK """
APP_ID = '16720832'
API_KEY = 'Dwur5NHIhoezGptZUGVpe7CN'
SECRET_KEY = 'GNw7Mn6ogcxFScxvwQiMtQMH57riw0NT'# 获取文件内容
def get_file_content(filename):with open(filename,'rb') as fp:return fp.read()# 获取输入的语言
def get_content():client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)text_dict = client.asr(get_file_content('test.wav'),'wav',16000,{'dev_pid':1536,})return text_dict["result"]TU_LING = 'dc601668fced41f0bd67a83be3d6999d'
USER_ID = '475665'
API_URL = 'http://openapi.tuling123.com/openapi/api/v2'# 把内容传给图灵机器人获取聊天内容
def get_message(message):req = {"reqType":0,"perception": {"inputText": {"text": message},# "inputImage": {#     "url": "imageUrl"# },"selfInfo": {"location": {"city": "北京","province": "北京","street": "信息路"}}},"userInfo": {"apiKey": TU_LING,"userId": USER_ID}
}# 将req编码为json格式utf8req = json.dumps(req).encode('utf8')# 生成请求对象http_post = urllib.request.Request(API_URL, data=req, headers={'content-type':'application/json'})response = urllib.request.urlopen(http_post)# 以utf8解码responseresponse_str = response.read().decode('utf8')# 解码response_str 返回python字符串response_dic = json.loads(response_str)response_text = response_dic['results'][0]['values']['text']return response_text# response_dic = json.loads(response_str)
# intent_code = response_dic['intent']['code']# 把图灵机器人返回的答复传给百度AI合成语音
def get_yuyin(response_text):client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)result = client.synthesis(response_text, 'zh', 1, {'vol': 5,})# 识别正确返回语音二进制 错误则返回dict 参照下面错误码if not isinstance(result, dict):with open('auido.mp3', 'wb') as f:f.write(result)os.system('auido.mp3')# 菜单
def menu():print("欢迎来到fxm树鹿的私人聊天")print("1.与智能机器人聊天")print("0.退出")# 聊天菜单
def menu_chat():print("1.语音聊天")print("2.文字输入")# 语音聊天
def yuyin_chat():while 1:# 把语音存到 test.wav 中,录入时间为5秒record(5, "test.wav")# 获取输入的语言content = get_content()content =content[0]print("[无名氏]:", end=' ')print(content)n = get_text(content)if n:break# 文字聊天
def wenzi_chat():print("请输入文字:")while 1:# 获取输入的文字print("[无名氏]:",end=' ')content = input("")n = get_text(content)if n:break# 获取机器人的回复
def get_text(content):# 把内容传给图灵机器人获取聊天内容message = get_message(content)# 语音输出get_yuyin(message)print("[小冰]:", end=' ')print(message, end='    ')print("————fxm树鹿的私人聊天")# 输入 bye / 拜 退出if content == "bye" or content == "拜" or content == "再见":return 1if __name__ == '__main__':menu()n = input("请选择:")if n == '1':menu_chat()n = input("请选择:")if n == '1' :print("提示:说出 bye/拜/再见 退出")yuyin_chat()elif n== '2':print("提示:输入 bye/拜/再见 退出")wenzi_chat()print("期待你的下次聊天!!!")

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记:总结

下面是我们本课程学到的要点: 1)监督学习:线性回归,逻辑回归,神经网络,SVM; 2)无监督学习:k均值,PCA,异常检测 3)特别应用&#xf…

ROS探索总结(十二)——坐标系统

在机器人的控制中&#xff0c;坐标系统是非常重要的&#xff0c;在ROS使用tf软件库进行坐标转换。 相关链接&#xff1a;http://www.ros.org/wiki/tf/Tutorials#Learning_tf 一、tf简介 我们通过一个小小的实例来介绍tf的作用。 1、安装turtle包 <span>$ rosdep instal…

【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)

题干&#xff1a; 随着新版百度空间的下线&#xff0c;Blog宠物绿豆蛙完成了它的使命&#xff0c;去寻找它新的归宿。 给出一个有向无环的连通图&#xff0c;起点为1终点为N&#xff0c;每条边都有一个长度。绿豆蛙从起点出发&#xff0c;走向终点。 到达每一个顶点时&#x…

【LightOJ - 1079】Just another Robbery(概率dp,概率背包)

题干&#xff1a; As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants everything quick!) so he decided to rob banks. He wants to make a calculated risk, and grab as much money as possible. But his friends - Hermi…

强烈推荐的TensorFlow、Pytorch和Keras的样例资源(深度学习初学者必须收藏)

目录 一、TensorFlow 二、Keras 三、Pytorch 总结 本文转自微信公众号&#xff1a;机器学习初学者 原创&#xff1a; 机器学习初学者 机器学习初学者 TensorFlow、Keras和Pytorch是目前深度学习的主要框架&#xff0c;也是入门深度学习必须掌握的三大框架&#xff0c;但…

【LightOJ - 1027】A Dangerous Maze(概率dp,数学期望)

题干&#xff1a; You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors. If you choose the ith door, it can either take you back to the same position wh…

由浅到深理解ROS(2)

ROS文件系统 用户可以直接参看官网&#xff1a; http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem ROS文件系统中的两个最基本的概念&#xff1a;Package和Manifest&#xff0c;即包和清单文件。 &#xff08;1&#xff09;Package是组织ROS代码的最基本单位&…

Django员工管理系统

Django员工管理系统&#xff08;ems&#xff09; 需求分析&#xff1a; 1.实现管理员的注册、登陆页面注册&#xff1a;用户名、真实名字、密码、确认密码、性别、验证码用户名需要判断是否合法、是否存在&#xff0c;loading图片提示密码和确认密码是否相同&#xff0c;load…

【LightOJ - 1104】Birthday Paradox(概率,思维)

题干&#xff1a; Sometimes some mathematical results are hard to believe. One of the common problems is the birthday paradox. Suppose you are in a party where there are 23 people including you. What is the probability that at least two people in the party…

爬虫小记

中国商标网 找到正确的入口 在此页面加入全部data数据获取xhr请求包

【LightOJ - 1038】Race to 1 Again(概率dp,数学期望)

题干&#xff1a; Rimi learned a new thing about integers, which is - any positive integer greater than 1 can be divided by its divisors. So, he is now playing with this property. He selects a number N. And he calls this D. In each turn he randomly choose…

使用matplotlib进行简单的数据展示

import numpy as np import matplotlib.pyplot as plt# 解决中文乱码 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号# 建立一个坐标系 plt.subplot(1, 1, 1) # 指明x和y值 x np.array([1, 2…

由浅到深理解ROS(6)-坐标转换

转自 ROS 中对于多坐标系的处理是使用树型表示&#xff0c;在机器人自主导航中&#xff0c;ROS会构建这几个很重要的坐标系&#xff1a; base_link: 一般位于tf tree的最根部&#xff0c;物理语义原点一般为表示机器人中心&#xff0c;为相对机器人的本体的坐标系。(base_foot…

【BZOJ - 3450】Tyvj1952 Easy(数学期望,期望的线性性)

题干&#xff1a; 某一天WJMZBMR在打osu~~~但是他太弱逼了&#xff0c;有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做&#xff0c;成功了就是o&#xff0c;失败了就是x&#xff0c;分数是按comb计算的&#xff0c;连续a个comb就有a*a分&#xff0c;comb就…

吐血推荐收藏的学位论文排版教程(完整版)

目录 01.保存的高级选项设置 02.纸张设置为A4纸大小 03.设置页边距和装订线距离 04.度量衡的设置 05.创建“论文正文”样式 06.修改论文正文样式 07.设置并修改标题样式 08.给中英文摘要、附录、等大标题套用样式 09.两个Word文档之间进行并排查看 12.一键生成多级列…

由浅到深理解ROS(7)-URDF

转自 相信许多爱好者止步于昂贵的机器人价格。虽然有了Arduino&#xff0c;但一个载重能力很弱的机器人小车成本也得一两百块钱。搭建自己的机器人更是费时费力。 所以如果你只是普通机器人爱好者&#xff0c;或者还没想好要拿机器人做什么&#xff0c;那我们还是从模拟器开始…

Apollo进阶课程 ① | 带你纵览无人车

目录 1&#xff09;无人驾驶级别的分类 2&#xff09;无人驾驶技术的关键点 3&#xff09;火热的无人驾驶 不缺独角兽 原文链接&#xff1a;Apollo进阶课程 ① | 带你纵览无人车 Apollo自动驾驶进阶课程是由百度Apollo联合北京大学共同开设的课程&#xff0c;邀请百度Apoll…

【BZOJ - 4318】OSU!(概率dp,数学期望,期望的线性性)

题干&#xff1a; osu 是一款群众喜闻乐见的休闲软件。 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作&#xff0c;每次操作只有成功与失败之分&#xff0c;成功对应1&#xff0c;失败对应0&#xff0c;n次操作对应为1个长度为n的01串。在这个串中连续的 X个…

word2vec原理详解及实战

目录 1&#xff09;前言 1.1 语言模型 1.2N-gram模型 1.3词向量表示 2&#xff09;预备知识 2.1 sigmoid函数 2.2 逻辑回归 2.3贝叶斯公式 2.4 Huffman编码 3&#xff09;神经网络概率语言模型 4&#xff09;基于Hierarchial Sodtmax模型 4.1CBOW模型 4.2 Skip-gr…

计算机网络通讯协议

网络通讯&#xff1a; 就是要把特定意义的数据通过物理介质传送给对方。把电信号变成有意义的数据&#xff1a; 以字节为单位分组&#xff0c;标识好每一组电信号的信息特征&#xff0c;按照分组的顺序来依次发送。 以太网规定&#xff1a;一组电信号为一个数据包&#xff0c…