使用python实现一个简单的智能聊天机器人(代码片段)

Blue92120 Blue92120     2022-12-04     440

关键词:

简要说明


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

总体的思路


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

  1. 计算机接收用户的语音输入
  2. 将用户输入的语音输入转化为文本信息
  3. 调用智能对话接口, 发送请求文本信息, 获取接口返回的智能回答文本信息
  4. 将回答文本信息转化为语音格式输出

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

需要准备的环境


以下是需要安装的一些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() < t + 5:  # 设置录音时间(秒)
            # 循环read,每次read 2000frames
            string_audio_data = stream.read(num_samples)
            my_buf.append(string_audio_data)


        print('讲话结束')
        self.save_wave_file(FILEPATH, my_buf)    #保存下录音数据
        stream.close()

调用百度AI接口, 识别音频文件并以文本信息返回


之前使用过好几次百度AI的接口,我的毕业设计<在线课堂学生异常行为与分析>也是使用到了百度的智能平台,个人调试的话有很多免费产品,总体来说百度在人工智能领域做得还是相当不错的。

在调用百度AI接口之前,需要首先进入百度AI开放平台,搜索语音识别。

点击立即使用,没有账号的话可以先创建一个账号,然后领取免费的资源使用

我之前已经创建1个了, 假设再次点击创建

系统会自动勾选上语音识别接口,直接创建应用即可,之后会有 AppID、 API Key、Secret Key,之后调用百度接口直接调用即可。

可以查看接口文档,进行具体的接口操作

前奏准备好, 便可以直接调用接口进行语音识别

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '25990397'
API_KEY = 'iS91n0uEOujkMIlsOTLxiVOc'
SECRET_KEY = ''              #此处填写自己的密钥

"""调用接口, 调用BaiDu AI 接口进行录音、语音识别"""
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

class ReadWav():
    # 读取文件
    def get_file_content(self, filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()

    def predict(self):
        # 调用百度AI的接口, 识别本地文件
         return client.asr(self.get_file_content('../voices/myvoices.wav'), 'wav', 16000, 
            'dev_pid': 1537,
        )
        
        
        
readWav = ReadWav()          #实例化方法
print(readWav.predict())      #调用识别方法, 并输出

执行结果 ( 音频文件存的录音是: 你叫什么名字呀?)

'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)                 #播放回答信息

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

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

用aiml开发人工智能聊天机器人

借助Python的AIML包,我们很容易实现人工智能聊天机器人。AIML指的是ArtificialIntelligenceMarkupLanguage(人工智能标记语言),它不过是简单的可XML(扩展标记语言)形式。本文的示例代码将带你初步领略如何借助Python创建属于你的人... 查看详情

基于chatgpt+python快速打造前后端分离的openai人工智能聊天机器人(代码片段)

🚀ChatGPT是最近很热门的AI智能聊天机器人🚀用途方面相比于普通的聊天AI更加的广泛,甚至可以帮助你改BUG,写代码!!!🚀下面是使用python+ChatGPT+Vue实现的在线聊天机器人,可直接调... 查看详情

用go语言实现一个简单的聊天机器人(代码片段)

一、介绍目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识。软件环境:Go1.9,Goland2018.1.5。 二、回顾Go语言基本构成要素:标识符、关键字、字面量、分隔符、操作符。它们可以组成各种表达式... 查看详情

nlp开发python实现聊天机器人(微软azure机器人服务)(代码片段)

1、简介什么是BotFrameworkSDK?MicrosoftBotFramework和Azure机器人服务是库、工具和服务的集合,可用于生成、测试、部署和管理智能机器人。BotFramework包括一个模块化且可扩展的SDK,用于生成机器人并连接到AI服务。借助此框架,开发... 查看详情

chatgpt简单了解下智能聊天机器人的功能和示例代码(代码片段)

🎉🎉最近chatGPT持续火爆,一路狂飙,对应如何注册和使用的优质文章非常多。所以,此篇文章除了整理chatGPT文章外,主要是讲解如何获取APIKey进行接口的调用🎉🎉目录1、chatGPT解读1.1、词语解释... 查看详情

python使用图灵机器人实现微信聊天功能(代码片段)

  首先需要去图灵官网创建一个属于自己的机器人然后得到apikey。一、自动与指定好友聊天#-*-coding:utf-8-*-"""Createdat2019-3-2611:50:49"""fromwxpyimportBot,Tuling,embed,ensure_onebot=Bot()my_friend=ensure_one(bot.search(‘张三‘))#想和机器人聊天的好... 查看详情

开源一个基于智能问答的聊天机器人实现

   智能问答应当是未来智能化发展中人机交互的主要方式,目前无论是在开源社区或者企业应用中,都有广泛的应用。   项目名称是Iveely.Brain,本次源码可以在Github的这里下载,,是主要用于聊天服务的一... 查看详情

使用chatterbot库制作一个聊天机器人

...杂烩我们学习一些如何使用ChatterBot库在Python中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的1什么是聊天机器人聊天机器人也称为聊天机器人、机器人、人工代理等,基本上是由人工... 查看详情

没人陪你聊天?教你使用java制作专属智能陪聊机器人(代码片段)

...留言,“很久没人找我聊天了,可以写一个陪聊机器人展现一下程序员的浪漫吗?”,小禅:“安排!”🚀**文章源码获取**:本文的源码,小伙伴们可以关注文章底部的公众号,点击“联... 查看详情

没人陪你聊天?教你使用java制作专属智能陪聊机器人(代码片段)

...留言,“很久没人找我聊天了,可以写一个陪聊机器人展现一下程序员的浪漫吗?”,小禅:“安排!”🚀**文章源码获取**:本文的源码,小伙伴们可以关注文章底部的公众号,点击“联... 查看详情

没人陪你聊天?教你使用java制作专属智能陪聊机器人(代码片段)

...留言,“很久没人找我聊天了,可以写一个陪聊机器人展现一下程序员的浪漫吗?”,小禅:“安排!”🚀**文章源码获取**:本文的源码,小伙伴们可以关注文章底部的公众号,点击“联... 查看详情

自然语言处理(nlp)聊天机器人模块实现(代码片段)

【自然语言处理(NLP)】聊天机器人模块实现(文章目录)前言(一)、任务描述使用PaddleNLP内置的生成式API的功能和用法,并使用PaddleNLP内置的plato-mini模型和配置的生成式API实现一个简单的闲聊机器人。(二)、环境配置本示例基于... 查看详情

使用python实现一个hello/hi的简单的网络聊天程序(代码片段)

一、TCP/IP协议通信原理   TCP/IP协议包含的范围非常的广,它是一种四层协议,包含了各种硬件、软件需求的定义。TCP/IP协议确切的说法应该是TCP/UDP/IP协议。UDP协议(UserDatagramProtocol用户数据报协议),是一种保护消息边界的... 查看详情

简单的人工智能对话(代码片段)

...sp; 里面有很多实现人工智能的模型可以免费使用图灵机器人: www.turingapi.com 定制一个属于自己的专属智能机器人 在进行语音识别的时候,要求传入音频的格式是pcm,我们电脑的录音机的格式不是人家要求的需要对格 查看详情

chatbot走进聊天机器人(代码片段)

走进聊天机器人1.目前企业中的常见的聊天机器人2.常见的聊天机器人怎么实现的2.1问答机器人的常见实现手段2.2任务机器人的常见实现思路2.3闲聊机器人的常见实现思路3.企业中的聊天机器人是如何实现的3.1阿里小蜜-电商智能... 查看详情

我用python/c++调用chatgpt自制了一个聊天机器人(代码片段)

目录1ChatGPT完整版2Python/C++调用ChatGPT2.1获取API秘钥2.2测试API功能2.3设计简单UI3聊天问答1ChatGPT完整版2015年,OpenAI由马斯克、美国创业孵化器YCombinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得·蒂尔等硅谷科... 查看详情

我用python/c++调用chatgpt自制了一个聊天机器人(代码片段)

目录1ChatGPT完整版2Python/C++调用ChatGPT2.1获取API秘钥2.2测试API功能2.3设计简单UI3聊天问答1ChatGPT完整版2015年,OpenAI由马斯克、美国创业孵化器YCombinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得·蒂尔等硅谷科... 查看详情

我用python/c++调用chatgpt自制了一个聊天机器人(代码片段)

目录1ChatGPT完整版2Python/C++调用ChatGPT2.1获取API秘钥2.2测试API功能2.3设计简单UI3聊天问答1ChatGPT完整版2015年,OpenAI由马斯克、美国创业孵化器YCombinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得·蒂尔等硅谷科... 查看详情