制作一个语音智能助手小艺

目录

一、准备工作

1.准备爬虫工具

2.python库的安装

3.国内常用源镜像地址

4.镜像安装,下载速度更快

5.爬虫使用步骤

6.用到的工具

二、项目构思

1.创建基础窗口

2.创建按钮

3.添加动态背景

4.退出方法添加

5.按钮实现模块

三、整体代码

四、项目运行效果


一、准备工作

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. 定义 url
    3. 爬取并返回数据
    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()


四、项目运行效果

智能医疗语音助手

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值