python智能对话机器人,python实现微信聊天机器人
简单说明一下最近两天需要做一个python小程序,就是实现人与智能机器人的对话功能(智能对话接口)。目前刚刚测试完毕,可以实现,即可以实现个人与机器的智能对话(语音交流)。
你可以想象一下大概的意思。如果要实现人与机器的智能对话,必须要有以下几个步骤:
计算机接收用户的语音输入,将用户的语音输入转换成文本信息,调用智能对话接口,发送请求文本信息,获取接口返回的智能回答文本信息,将回答文本信息转换成语音格式输出。这里可以安装很多现成的库函数来辅助我们系统的实现。
下面是一些需要安装的python依赖包。
Pip pyaudio安装Py音频依赖包,用于录制和生成wav文件。pip安装百度-aip安装百度AI的sdk,调用语音技术接口,识别音频为文本数据,并返回给pip安装pyttsx3,安装pyttsx3依赖包,以音频格式播放文本信息。接下来我会逐步实现上面的每一个功能,最后结合起来。
接收用户的语音输入,并将其保存为音频文件。
导入时间
进口波
从pyaudio导入PyAudio,油漆16
帧率=16000 #采样率
Num_samples=2000 #采样点
通道=1 #通道
Sampwidth=2 #采样宽度2字节
路径=./voices/myvoices.wav #文件目录应该存在
#用于接收用户的语音输入,并生成wav音频文件(wav、pcm、mp3的区别详见百度)
课堂发言():
#将音频数据保存到wav文件
def save_wave_file(self,filepath,data):
wf=wave.open(filepath, wb )
wf.setnchannels(频道)
设置取样宽度(取样宽度)
wf.setframerate(帧速率)
wf.writeframes(b 。join(数据))
wf.close()
#执行语音录制。
定义我的记录(自己):
pa=PyAudio()
#打开新的音频流
stream=pa.open(format=paInt16,channels=channels,
速率=帧速率,输入=真,帧每缓冲区=样本数)
My_buf=[] #存储记录的数据
t=time.time()
打印(说话.)
While time.time() t 5: #设置录制时间(以秒为单位)
#循环读取,每次读取2000帧
字符串_音频_数据=流.读(样本数)
my_buf.append(字符串_音频_数据)
打印(“讲话结束”)
自我。save _ wave _ file (filepath,my _ buf) #保存记录的数据。
stream.close()
百度AI接口在调用之前已经用过几次,识别音频文件,返回文本信息。我的毕业设计学生异常行为与分析在线课也是用百度的智能平台。个人调试有很多免费产品。总的来说,百度在人工智能领域做得相当不错。
在调用百度AI接口之前,需要先进入百度AI开放平台,搜索语音识别。
单击立即使用。如果没有账号,可以先创建一个账号,然后免费领取资源使用权。
我之前已经创建了一个,假设我再次单击创建。
系统会自动检查语音识别界面,直接创建应用程序。之后会有AppID,API Key,Secret Key。然后,调用百度界面,直接调用。
您可以查看界面文档并执行特定的界面操作。
前奏准备好了,就可以直接调用接口进行语音识别了。
从aip导入AipSpeech
您的APPID AK SK
APP_ID=25990397
API _ KEY= is 91n 0 ueoujkmilsotlxivoc
SECRET_KEY= #在这里填写您自己的密钥
调用接口,调用百度AI接口进行录音和语音识别
client=AipSpeech(APP_ID,API_KEY,SECRET_KEY)
类ReadWav():
#读取文件
def get_file_content(self,filePath):
使用open(filePath, rb )作为fp:
返回fp.read()
定义预测(自我):
#调用百度AI的接口识别本地文件
return client . ASR(self . get _ file _ content(./voices/myvoices.wav ), wav ,16000,{
dev_pid: 1537,
})
ReadWav=ReadWav() #实例化方法
Print(readWav.predict()) #调用识别方法并输出执行结果(音频文件中的录音是:你叫什么名字?)
{ corpus _ no : 708788408342843929 , err _ msg :成功, err _ no: 0, result: [你叫什么名字?],序号: 255158586831650276613}
在请求智能机器人,发送短信,返回智能聊天的内容之前,我们老师推荐我用图灵机器人的智能聊天。后来发现认证已经无法通过,要付费。
后来找了一个青云客智能机器人,免费,不需要注册,只需要发送get请求就可以聊天。直接调用接口就可以了。
代码如下:
def talkwithbrobot(msg):
URL= http://API . qingyunke . com/API . PHP?key=free appid=0 msg={} 。格式(urllib.parse.quote(msg))
html=requests.get(url)
return html.json()[content]
print(talkwithprobot( Hello!))输出(详见青云客官网)
哟~一切都好,一切都好。
要将答案信息转换成语音文件输出,需要在这里导入pyttsx3包。具体代码如下:
导入pyttsx3
类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 (Hello) #会说~ Hello(女声)
成为自动聊天机器人(很硬气)的代码如下:
def talkwithbrobot(msg):
URL= http://API . qingyunke . com/API . PHP?key=free appid=0 msg={} 。格式(urllib.parse.quote(msg))
html=requests.get(url)
return html.json()[content]
robotSay=RobotSay()
说话=说话()
readTalk=ReadWav()
虽然正确:
Speak.my_record() #录音
text=read talk . predict()[ result ][0]#调用百度AI接口将录音转换为文本信息。
Print(我说:,text) #输出文本信息
response _ dialogue=talkwithbrobot(text)#调用青云机器人回复短信并返回。
Print(青云客说:,response_dialogue) #输出答案文本信息
robot say . say(response _ dialogue)#播放回答消息。
结果跑了(觉得很难)
聊天。
演讲结束.
我说:你好。
青云客说:哟~一切都好。
聊天。
演讲结束.
我说,你叫什么名字?
青云客说,我是小美女菲菲~
聊天。
演讲结束.
我说:哇,你真漂亮。
青云客说:你好像有很多问题!
聊天。
演讲结束.
我说:我好看吗?
青云客说:你真是地道的美女。也就是说,你只有在隧道里才是美丽的,因为隧道里没有灯。
聊天。
演讲结束.
我说:“你真是个可爱的小女孩。”。
青云客说:啊,你怎么知道。我是。
聊天。
演讲结束.
我说:不跟你说了。
青云客说:不谈了。
现在后续就是简单的功能组合。之后会做一个GUI界面,增加更多的功能,分享给大家!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。