目录
一、准备工作
1.准备爬虫工具
爬取机器人回复数据:
- 注册机器人平台:https://console.ownthink.com/
- 获取Appid
- 对机器人进行一些基本的设置和训练
2.python库的安装
pip install 库名
pip uninstall 库名
pip list 查询当前安装库和版本号
3.国内常用源镜像地址
附国内常用源镜像地址
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣(douban) :http://pypi.douban.com/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
4.镜像安装,下载速度更快
pip install 库名 -i
https://pypi.tuna.tsinghua.edu.cn/simple
5.爬虫使用步骤
- 安装requests库
pip install requests -i
https://pypi.tuna.tsinghua.edu.cn/simple
-
1. 导入爬虫库2. 定义 url3. 爬取并返回数据4. 将数组转换为指定格式5. 显示结果
6.用到的工具
1.运用python爬虫技术并使用Json解析工具进行格式转换
2.导入pillow库,进行图像处理
3.通过百度人工智能平台获取智能语音资源
4.导入playaudio库,进行声音的录制
5.导入jieba库,进行智能分词的实现
6.导入tqdm库,实现语音录制过程中进度条的显示
7.导入baidu-aip库,进行声音的识别
8.导入playsound库,进行语音的合成
二、项目构思
1.创建基础窗口
from tkinter import *
import dirsetting # 文件结构管理
dirsetting.mk_dir() # 创建基础文件夹
# 创建窗口
window = Tk()
window.geometry('640x480+500+200')
window.title('智能语音助手')
window.resizable(0,0) # 设置窗口尺寸不可更改
# 创建一个画布
bg = Canvas(window,width=640,height=480,bg='#3399ff')
bg.place(x=0,y=0)
window.mainloop()
2.创建按钮
# 按钮点击的函数
def click():
print('点我干哈!')
Button(window,text='点击对话',width=20,bg='#c2c2c2',
command=click).place(x=230,y=80)
3.添加动态背景
# pillow中的 图片工具 Tk图片工具 分割动态图片工具
from PIL import Image,ImageTK,ImageSequence
import time
# 添加背景函数
def pick():
im = Image.open(r'image\bg.gif')
while True:
# 图像分割后 得到静态图片的集合
iter = ImageSequence.Iterator(im)
# 将每张图片设置为背景
for pic in iter:
pic = ImageTk.PhotoImage(pic)
bg.create_image((320,240),image=pic)
time.sleep(0.1)
window.update_idletasks()
window.update()
# 和窗口一起运行 (定时器)
window.after(0,pick)
4.退出方法添加
from MyAudio import * # 语音合成文件
import os
# 退出方法
def on_closing():
getAudio("期待下次再见!")
os._exit(0)
# 添加背景函数
def pick():
略
while True:
# 添加退出方法
window.protocol('WM_DELETE_WINDOW',on_closing)
略
5.按钮实现模块
- 多线程功能——解决按钮使用,其他位置不能运行的问题
import threading # 线程库
# 自定义线程
def thread_it(func,*args):
# 创建线程
t = threading.Thread(target=func,args=args)
# 守护线程 另一段代码也执行
t.setDaemon(True)
# 启动线程
t.start()
# 修改按钮的command命令
Button(window,text='点击对话',width=20,bg='#c2c2c2',
command=lambda:thread_it(click)).place(x=200,y=80)
- 实现按钮的主要功能
from Record import * # 录音
from xiaoKu import * # 机器人
from take_photo import * # 拍照
from findsongs import * # 找歌
import jieba # 智能分词
完整代码
# 按钮点击的函数
def click():
# 提示音
getAudio('你好,我是小艺,有什么能帮助你的吗?')
# 录音并转换为文字
say = record()
# 智能分词
keyword = jieba.lcut_for_search(say)
# print(keyword)
# 根据关键词 执行指令
# 访问机器人
if '天气' in keyword or '笑话' in keyword:
result = getReply(say)
elif '播放' in keyword or '音乐' in keyword:
getAudio('请告诉我歌曲名称,例如:刘德华的忘情水!')
say = record()
getsong(say)
return
elif '拍照' in keyword or '照相' in keyword:
take_photo()
return
else:
result = getReply()
getAudio(result)
三、整体代码
from tkinter import *
import dirsetting #文件结构管理
#pillow中的图片工具库,TK图片工具,分割动态图片工具
from PIL import Image,ImageTk,ImageSequence
import time
from MyAudio import * #语音合成文件
import os
import threading #线程库
from Record import * #录音
from xiaoKu import * #机器人
from take_photo import * #拍照
from findsongs import * #找歌
import jieba #智能分词
dirsetting.mk_dir() #创建基础文件夹
#1.创建窗口
window = Tk()
window.geometry("640x480+500+200")
window.title('智能语音助手')
window.resizable(0,0) #设置窗口尺寸不可更改
#创建一个画布
bg = Canvas(window,width=640,height=480,bg='#3399ff')
bg.place(x=0,y=0)
#自定义线程
def thread_it(func,*args):
#创建线程
t = threading.Thread(target=func,args=args)
#守护线程 另一段代码也执行
t.setDaemon(True)
#启动线程
t.start()
#点击按钮退出
def exit():
# 提示音
getAudio('这么快就要说再见了吗?')
# 录音并转换为文字
say = record()
# 智能分词
keyword = jieba.lcut_for_search(say)
# print(keyword)
getAudio("期待下次再见!")
#按钮点击的函数
def click():
#提示音
getAudio("你好,我是小艺,有什么能帮助你的吗?")
#录音并转换为文字
while TRUE:
say = record()
#智能分词
keyword = jieba.lcut_for_search(say)
print(keyword)
#根据关键词,执行指令
#访问机器人
if '再见' in keyword or '拜拜' in keyword:
getAudio('小艺会想你的')
break
elif '头痛' in keyword or '头疼' in keyword:
result = getReply(say)
elif '肚子疼' in keyword or '肚子痛' or '腹部疼痛' in keyword:
result = getReply(say)
elif '不开心' in keyword or '心情不好' or '难过' in keyword:
result = getReply(say)
elif '失眠' in keyword or '睡不着' in keyword:
result = getReply(say)
elif '烫伤' in keyword or '烫到' in keyword:
result = getReply(say)
elif '口腔溃疡' in keyword:
result = getReply(say)
elif '感冒的症状' in keyword:
result = getReply(say)
elif '感冒' in keyword:
result = getReply(say)
elif '发烧' in keyword or '发热' in keyword:
result = getReply(say)
elif '天气' in keyword or '笑话' in keyword:
result = getReply(say)
elif '播放' in keyword or '音乐' in keyword:
getAudio('请告诉我歌曲名称,例如刘德华的《忘情水》')
say = record()
getsong(say)
elif '拍照' in keyword or '照相' in keyword:
take_photo()
return
else:
result = getReply()
getAudio(result)
#退出方法
def on_closing():
getAudio("小艺去睡觉咯!")
os._exit(0)
#添加背景函数
def pick():
im = Image.open('image/8.gif')
while True:
#添加退出方法
window.protocol('WM_DELETE_WINDOW',on_closing)
#图像分割后, 得到静态图片的集合
iter = ImageSequence.Iterator(im)
#将每张图片设置为背景
for pic in iter:
pic = ImageTk.PhotoImage(pic)
bg.create_image((320,240),image=pic)
time.sleep(0.1)
window.update()
#和窗口一起运行,反复执行(定时器)
window.after(0,pick)
Button(window,text='点击对话',width=20,bg='#c2c2c2',
command=lambda:thread_it(click)).place(x=210,y=80)
Button(window,text='结束对话',width=20,bg='#c2c2c2',
command=lambda:thread_it(exit)).place(x=210,y=300)
window.mainloop()
四、项目运行效果
智能医疗语音助手