使用 Python 实现一个简单的智能聊天机器人(附完整代码) 您所在的位置:网站首页 怎么制作简单的编程代码 使用 Python 实现一个简单的智能聊天机器人(附完整代码)

使用 Python 实现一个简单的智能聊天机器人(附完整代码)

2024-07-12 03:37| 来源: 网络整理| 查看: 265

文章目录 简要说明总体的思路需要准备的环境接收用户的语音输入,并将其存为音频文件技术提升调用百度AI接口, 识别音频文件并以文本信息返回请求智能机器人, 发送文本信息, 返回智能聊天内容将回答信息转化为语音文件并输出组合成为自动聊天机器人(它很硬气)后续

简要说明

最近两天需要做一个python的小程序, 就是实现人与智能机器人(智能对话接口)的对话功能,目前刚刚测试了一下可以实现, 就是能够实现个人与机器的智能对话(语音交流)。

总体的思路

大家可以设想一下, 如果要实现人与机器的智能对话, 肯定要有以下几个步骤:

计算机接收用户的语音输入

将用户输入的语音输入转化为文本信息

调用智能对话接口, 发送请求文本信息, 获取接口返回的智能回答文本信息

将回答文本信息转化为语音格式输出

这里可以安装很多现成的库函数, 辅助我们系统的实现。

需要准备的环境

以下是需要安装的一些python依赖包

pip install pyaudio 安装pyaudio依赖包, 用于录音、生成wav文件

pip install baidu-aip 安装百度AI的sdk, 调用语音技术接口将音频识别为文本数据返回

pip install pyttsx3 安装pyttsx3依赖包, 将文本信息以音频的格式播放出来

接下来我会逐步实现以上每个功能,最后再组合起来。

接收用户的语音输入,并将其存为音频文件 import time import wave from pyaudio import PyAudio, paInt16 framerate = 16000 # 采样率 num_samples = 2000 # 采样点 channels = 1 # 声道 sampwidth = 2 # 采样宽度2bytes FILEPATH = '../voices/myvoices.wav' #该文件目录要存在 #用于接收用户的语音输入, 并生成wav音频文件(wav、pcm、mp3的区别可详情百度) class Speak(): #将音频数据保存到wav文件之中 def save_wave_file(self, filepath, data): wf = wave.open(filepath, 'wb') wf.setnchannels(channels) wf.setsampwidth(sampwidth) wf.setframerate(framerate) wf.writeframes(b''.join(data)) wf.close() # 进行语音录制工作 def my_record(self): pa = PyAudio() # 打开一个新的音频stream stream = pa.open(format=paInt16, channels=channels, rate=framerate, input=True, frames_per_buffer=num_samples) my_buf = [] # 存放录音数据 t = time.time() print('正在讲话...') while time.time() 'corpus_no': '7087884083428433929', 'err_msg': 'success.', 'err_no': 0, 'result': ['你叫什么名字呀?'], 'sn': '255158586831650276613'} 请求智能机器人, 发送文本信息, 返回智能聊天内容

之前我们老师推荐我使用图灵机器人的智能聊天,后来发现认证一直无法通过,且需要付费。

后来发现了一个免费、无需注册、只需要发送get请求就可实现聊天的青云客智能机器人,直接调用接口即可。

代码如下:

def talkWithRobot(msg): url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg)) html = requests.get(url) return html.json()["content"] print(talkWithRobot("你好呀!"))

输出(详情访问青云客官网)

哟~ 都好都好 将回答信息转化为语音文件并输出

此处需要导入pyttsx3包,具体代码如下:

import pyttsx3 class RobotSay(): def __init__(self): # 初始化语音 self.engine = pyttsx3.init() # 初始化语音库 # 设置语速 self.rate = self.engine.getProperty('rate') self.engine.setProperty('rate', self.rate - 50) def say(self, msg): # 输出语音 self.engine.say(msg) # 合成语音 self.engine.runAndWait() robotSay = RobotSay() robotSay.say("你好呀") #会讲出 ~你好呀(女声) 组合成为自动聊天机器人(它很硬气)

代码如下:

def talkWithRobot(msg): url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg)) html = requests.get(url) return html.json()["content"] robotSay = RobotSay() speak = Speak() readTalk = ReadWav() while True: speak.my_record() #录音 text = readTalk.predict()['result'][0] #调用百度AI接口, 将录音转化为文本信息 print("本人说:", text) #输出文本信息 response_dialogue = talkWithRobot(text) #调用青云客机器人回答文本信息并返回 print("青云客说:", response_dialogue) #输出回答文本信息 robotSay.say(response_dialogue) #播放回答信息

运行结果(发现它很硬气)

""" 正在讲话... 讲话结束... 本人说: 你好呀。 青云客说: 哟~ 都好都好 正在讲话... 讲话结束... 本人说: 你叫什么名字呀? 青云客说: 我是小美人菲菲呀~ 正在讲话... 讲话结束... 本人说: 哇,那你多美呀。 青云客说: 你似有問題多啲囉! 正在讲话... 讲话结束... 本人说: 我好看吗? 青云客说: 你真是个地道的美人啊。就是说你只有在地道里才算美人,因为地道里没灯 正在讲话... 讲话结束... 本人说: 你可真是个小可爱呀。 青云客说: 呀,你怎么知道。。。我就是啊。。 正在讲话... 讲话结束... 本人说: 不和你说了。 青云客说: 不说拉倒 """ 后续

现在就是功能的一个简单组合,之后会做出来一个GUI界面,多增加点功能,分享给大家!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有