python智能对话机器人,python实现微信聊天机器人

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: