当前位置:   article > 正文

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

语音助手代码

目录

一、准备工作

1.准备爬虫工具

2.python库的安装

3.国内常用源镜像地址

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

5.爬虫使用步骤

6.用到的工具

二、项目构思

1.创建基础窗口

2.创建按钮

3.添加动态背景

4.退出方法添加

5.按钮实现模块

三、整体代码

四、项目运行效果


一、准备工作

1.准备爬虫工具
爬取机器人回复数据:
  • 注册机器人平台:https://console.ownthink.com/
  • 获取Appid
  • 对机器人进行一些基本的设置和训练
2.python库的安装
  1. pip install 库名
  2. pip uninstall 库名
  3. pip list 查询当前安装库和版本号
3.国内常用源镜像地址
  1. 附国内常用源镜像地址
  2. 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  3. 阿里云:http://mirrors.aliyun.com/pypi/simple/
  4. 豆瓣(douban) :http://pypi.douban.com/simple/
  5. 中国科技大学 https://pypi.mirrors.ustc.edu.cn
  6. 华中理工大学:http://pypi.hustunique.com/
  7. 山东理工大学:http://pypi.sdutlinux.org/
4.镜像安装,下载速度更快
  1. pip install 库名 -i
  2. https://pypi.tuna.tsinghua.edu.cn/simple
5.爬虫使用步骤
  • 安装requests库
  1. pip install requests -i
  2. 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.创建基础窗口
  1. from tkinter import *
  2. import dirsetting # 文件结构管理
  3. dirsetting.mk_dir() # 创建基础文件夹
  4. # 创建窗口
  5. window = Tk()
  6. window.geometry('640x480+500+200')
  7. window.title('智能语音助手')
  8. window.resizable(0,0) # 设置窗口尺寸不可更改
  9. # 创建一个画布
  10. bg = Canvas(window,width=640,height=480,bg='#3399ff')
  11. bg.place(x=0,y=0)
  12. window.mainloop()
2.创建按钮
  1. # 按钮点击的函数
  2. def click():
  3. print('点我干哈!')
  4. Button(window,text='点击对话',width=20,bg='#c2c2c2',
  5. command=click).place(x=230,y=80)
3.添加动态背景
  1. # pillow中的 图片工具 Tk图片工具 分割动态图片工具
  2. from PIL import Image,ImageTK,ImageSequence
  3. import time
  4. # 添加背景函数
  5. def pick():
  6. im = Image.open(r'image\bg.gif')
  7. while True:
  8. # 图像分割后 得到静态图片的集合
  9. iter = ImageSequence.Iterator(im)
  10. # 将每张图片设置为背景
  11. for pic in iter:
  12. pic = ImageTk.PhotoImage(pic)
  13. bg.create_image((320,240),image=pic)
  14. time.sleep(0.1)
  15. window.update_idletasks()
  16. window.update()
  17. # 和窗口一起运行 (定时器)
  18. window.after(0,pick)
4.退出方法添加
  1. from MyAudio import * # 语音合成文件
  2. import os
  3. # 退出方法
  4. def on_closing():
  5. getAudio("期待下次再见!")
  6. os._exit(0)
  7. # 添加背景函数
  8. def pick():
  9. while True:
  10. # 添加退出方法
  11. window.protocol('WM_DELETE_WINDOW',on_closing)
5.按钮实现模块
  • 多线程功能——解决按钮使用,其他位置不能运行的问题
  1. import threading # 线程库
  2. # 自定义线程
  3. def thread_it(func,*args):
  4. # 创建线程
  5. t = threading.Thread(target=func,args=args)
  6. # 守护线程 另一段代码也执行
  7. t.setDaemon(True)
  8. # 启动线程
  9. t.start()
  10. # 修改按钮的command命令
  11. Button(window,text='点击对话',width=20,bg='#c2c2c2',
  12. command=lambda:thread_it(click)).place(x=200,y=80)
  • 实现按钮的主要功能
  1. from Record import * # 录音
  2. from xiaoKu import * # 机器人
  3. from take_photo import * # 拍照
  4. from findsongs import * # 找歌
  5. import jieba # 智能分词
  6. 完整代码
  7. # 按钮点击的函数
  8. def click():
  9. # 提示音
  10. getAudio('你好,我是小艺,有什么能帮助你的吗?')
  11. # 录音并转换为文字
  12. say = record()
  13. # 智能分词
  14. keyword = jieba.lcut_for_search(say)
  15. # print(keyword)
  16. # 根据关键词 执行指令
  17. # 访问机器人
  18. if '天气' in keyword or '笑话' in keyword:
  19. result = getReply(say)
  20. elif '播放' in keyword or '音乐' in keyword:
  21. getAudio('请告诉我歌曲名称,例如:刘德华的忘情水!')
  22. say = record()
  23. getsong(say)
  24. return
  25. elif '拍照' in keyword or '照相' in keyword:
  26. take_photo()
  27. return
  28. else:
  29. result = getReply()
  30. getAudio(result)

三、整体代码

  1. from tkinter import *
  2. import dirsetting #文件结构管理
  3. #pillow中的图片工具库,TK图片工具,分割动态图片工具
  4. from PIL import Image,ImageTk,ImageSequence
  5. import time
  6. from MyAudio import * #语音合成文件
  7. import os
  8. import threading #线程库
  9. from Record import * #录音
  10. from xiaoKu import * #机器人
  11. from take_photo import * #拍照
  12. from findsongs import * #找歌
  13. import jieba #智能分词
  14. dirsetting.mk_dir() #创建基础文件夹
  15. #1.创建窗口
  16. window = Tk()
  17. window.geometry("640x480+500+200")
  18. window.title('智能语音助手')
  19. window.resizable(0,0) #设置窗口尺寸不可更改
  20. #创建一个画布
  21. bg = Canvas(window,width=640,height=480,bg='#3399ff')
  22. bg.place(x=0,y=0)
  23. #自定义线程
  24. def thread_it(func,*args):
  25. #创建线程
  26. t = threading.Thread(target=func,args=args)
  27. #守护线程 另一段代码也执行
  28. t.setDaemon(True)
  29. #启动线程
  30. t.start()
  31. #点击按钮退出
  32. def exit():
  33. # 提示音
  34. getAudio('这么快就要说再见了吗?')
  35. # 录音并转换为文字
  36. say = record()
  37. # 智能分词
  38. keyword = jieba.lcut_for_search(say)
  39. # print(keyword)
  40. getAudio("期待下次再见!")
  41. #按钮点击的函数
  42. def click():
  43. #提示音
  44. getAudio("你好,我是小艺,有什么能帮助你的吗?")
  45. #录音并转换为文字
  46. while TRUE:
  47. say = record()
  48. #智能分词
  49. keyword = jieba.lcut_for_search(say)
  50. print(keyword)
  51. #根据关键词,执行指令
  52. #访问机器人
  53. if '再见' in keyword or '拜拜' in keyword:
  54. getAudio('小艺会想你的')
  55. break
  56. elif '头痛' in keyword or '头疼' in keyword:
  57. result = getReply(say)
  58. elif '肚子疼' in keyword or '肚子痛' or '腹部疼痛' in keyword:
  59. result = getReply(say)
  60. elif '不开心' in keyword or '心情不好' or '难过' in keyword:
  61. result = getReply(say)
  62. elif '失眠' in keyword or '睡不着' in keyword:
  63. result = getReply(say)
  64. elif '烫伤' in keyword or '烫到' in keyword:
  65. result = getReply(say)
  66. elif '口腔溃疡' in keyword:
  67. result = getReply(say)
  68. elif '感冒的症状' in keyword:
  69. result = getReply(say)
  70. elif '感冒' in keyword:
  71. result = getReply(say)
  72. elif '发烧' in keyword or '发热' in keyword:
  73. result = getReply(say)
  74. elif '天气' in keyword or '笑话' in keyword:
  75. result = getReply(say)
  76. elif '播放' in keyword or '音乐' in keyword:
  77. getAudio('请告诉我歌曲名称,例如刘德华的《忘情水》')
  78. say = record()
  79. getsong(say)
  80. elif '拍照' in keyword or '照相' in keyword:
  81. take_photo()
  82. return
  83. else:
  84. result = getReply()
  85. getAudio(result)
  86. #退出方法
  87. def on_closing():
  88. getAudio("小艺去睡觉咯!")
  89. os._exit(0)
  90. #添加背景函数
  91. def pick():
  92. im = Image.open('image/8.gif')
  93. while True:
  94. #添加退出方法
  95. window.protocol('WM_DELETE_WINDOW',on_closing)
  96. #图像分割后, 得到静态图片的集合
  97. iter = ImageSequence.Iterator(im)
  98. #将每张图片设置为背景
  99. for pic in iter:
  100. pic = ImageTk.PhotoImage(pic)
  101. bg.create_image((320,240),image=pic)
  102. time.sleep(0.1)
  103. window.update()
  104. #和窗口一起运行,反复执行(定时器)
  105. window.after(0,pick)
  106. Button(window,text='点击对话',width=20,bg='#c2c2c2',
  107. command=lambda:thread_it(click)).place(x=210,y=80)
  108. Button(window,text='结束对话',width=20,bg='#c2c2c2',
  109. command=lambda:thread_it(exit)).place(x=210,y=300)
  110. window.mainloop()

四、项目运行效果

智能医疗语音助手

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/201625
推荐阅读
相关标签
  

闽ICP备14008679号