前言

该项目的背景是大一下的时候人工智能课老师要求出一个大作业,笔者辗转各个网站找到了一个名为Jarvis的项目,当时我对这个项目很感兴趣,也觉得很符合老师作业的要求,于是便把该项目的源码拷贝了一份并做一些相应的修改与个性化,原项目地址为:https://github.com/sukeesh/Jarvis

作品演示

20221019133214

代码调试

前些日子点进去那个仓库,发现原作者好像已经将源码模块化了,笔者已经找不回来当时大一看到的那份源码,那个时候刚把代码拷下来会报很多个错误,排查了许多错误之后,发现原作者好像调用了一个国外的语音识别接口,这就让当时的我有点头疼(当时我也笨),使用那个接口要在该网站上面注册账号,要绑定Visa信用卡啥的(反正乱七八糟),遂打算放弃,后面突然想到可以用国内的一些接口,修修补补一晚上,终于把这个项目调通了,该门课程也拿到了99的高分,下面是源代码

import wave
import pyttsx3
import webbrowser
import datetime
import os
import sys
import random
import time
import pyaudio
from aip import AipSpeech# 初始化语音配置
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[len(voices) - 1].id)# 语音输出
def speak(audio):print('Computer: ' + audio)engine.say(audio)engine.runAndWait()""" 你的 APPID AK SK """
APP_ID = 'xxxx'
API_KEY = 'xxxx'
SECRET_KEY = 'xxxx'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)# 获取麦克风输入并保存到本地
input_filename = "xxxx"  # 麦克风采集的语音输入
input_filepath = "xxxx"  # 输入文件的path
in_path = input_filepath + input_filenamedef get_audio(filepath):# aa = str(input("是否开始录音?   (是/否)"))# if aa == str("是") :CHUNK = 256FORMAT = pyaudio.paInt16CHANNELS = 1  # 声道数RATE = 16000  # 采样率RECORD_SECONDS = 5WAVE_OUTPUT_FILENAME = filepathp = pyaudio.PyAudio()stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)print("开始录音:请在5秒内输入语音")frames = []for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):data = stream.read(CHUNK)frames.append(data)print("*" * 10, "录音结束\n")stream.stop_stream()stream.close()p.terminate()wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()while 1:speak('How may I help you?')get_audio(in_path)# 识别本地文件def get_file_content(in_path):with open(in_path, 'rb') as fp:return fp.read()result = client.asr(get_file_content('testname.wav'), 'wav', 16000, {'dev_pid': 1537,})key = result['result']for i in key:if '打开百度' in i:webbrowser.open('www.baidu.com')elif '4399' in i:webbrowser.open('www.4399.com')elif '打开B站' in i:webbrowser.open('www.bilibili.com')elif '你好' in i:speak('hello sir')elif "你怎么样" in i:stMsgs = ['Just doing my thing!', 'I am fine!', 'Nice!', 'I am nice and full of energy']speak(random.choice(stMsgs))elif "关机" in i:os.system('shutdown /s /t 0')elif '退出' in i:sys.exit()

总结

如果要使用该代码,需要先将存放语音的路径给配置好(33行和34行),并且去申请一个百度的语音识别接口(26~28行)(或者你要用其他的也行,反正你自己看着改),该项目仅仅只是做了一些简单的人机交互(对话、打开浏览器、关机等),想要添加更多功能可以在代码最后的那个for循环中添加,后面有空的话我会把它封装成一个exe文件,然后再加点功能(支持中文啥的)第一次写项目博客,肯定会有不少纰漏,希望读者可以多多包涵,有问题或者建议也可以在评论区留言,感谢你的观看。

Python语音助手相关推荐

  1. 单片机学习:第一篇 基于Python的树莓派语音助手

    title: 单片机学习:第一篇 基于Python的树莓派语音助手 tags: 树莓派,python,语音助手,百度AIP 目录 一.pyaudio录音 二.语音识别 三.与图灵机器人对话 四.语音合 ...

  2. 使用Python把树莓派改造成一个语音助手

    对博客平台有些失望,转语雀只当留档用了. 语音助手已经不是什么新事物了.就在两三年前,语音助手的使用体验还不是那么好,尝尝鲜后也就没用过了.但最近发现不管是微软的Cortana.苹果的Siri,还是一 ...

  3. python控制小爱同学_神秘鸭,用Siri小爱同学语音助手控制你的电脑

    智能手机发展至今,智能可不仅是改变了沟通和上网形式,依据强大的算法核心,各种基于AI的智能语音助手屡见不鲜,其中苹果的Siri.小米的小爱同学.阿里的天猫精灵,极受欢迎.虽说现在的人工智能语音助手,仍 ...

  4. 爆肝一周,用Python在物联网设备上写了个智能语音助手

    1. 背景介绍 智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解放双手,随时提供服务,无须借助任何按键.想必很多开发者都有玩过天猫精灵.小爱同学或者小度吧,看到这些炫酷的人 ...

  5. Python构建您自己的交互式语音助手 Voice Assistant with Python – Alexa Clone

    构建您自己的交互式语音助手 你会学到: 构建虚拟助理 使用API 根据个人需求修改语音助手 Python编程 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语 ...

  6. Python语言打造智能语音助手——附完整源码

    Python语言打造智能语音助手--附完整源码 随着智能家居.智能办公等领域的逐渐兴起,实现语音控制与交互已成为了一种趋势.而Python语言是一门极具魅力的编程语言,其强大的库.简洁的语法以及易于学 ...

  7. 爆肝一周,用Python在物联网设备上写了个智能语音助手-阿里云智能语音交互

    基于HaaS云端一体框架,用Python打造HaaS EDU K1智能语音助手的过程中需要用到云端能力.本篇文章介绍如何开通阿里云智能语音交互,并创建配置语音识别及语音合成项目,获取Appkey.请参 ...

  8. 【小白教程】基于树莓派的智能语音助手-python

    [完整教程零基础]基于树莓派的智能语音助手-python 树莓派3b+.python3系统自带.百度语音识别与合成.调用图灵机器人(热词唤醒失败,可用snowboy) 1.Windows系统下[下载+ ...

  9. 【一分钟学会】用python做一个语音对话ChatGPT的程序——打造私人语音助手

    本项目灵感来源是我的一个专业课程设计,当时耗时近四天在网上都没找到十分有用的信息. 以下是本项目完整的步骤流程,算是对自己工作的一个阶段性总结.希望同感兴趣的小伙伴们相互探讨.交流和学习. 一.准备工 ...

  10. 如何快速搭建一个像“天猫精灵”的智能语音助手?

    不看这几篇好文,就别说自己了解物联网 天猫精灵相信大家都不陌生了,它是阿里巴巴于2017年7月5日发布的AI智能终端品牌.让用户以自然语言对话的交互方式,实现影音娱乐.购物.信息查询.生活服务等功能操 ...

最新文章

  1. JVM之盘点家底查看初始默认值和更改值
  2. 大学计算机基础毕业论文操作步骤,大学计算机基础教学论文
  3. java exec mvn_maven---常用插件之EXEC
  4. 组织机构代码输入测试用例_测试代码以用于过大的输入
  5. 5s的app显示无法连接服务器,苹果iphone5s手机无法连接App Store问题解决方法汇总...
  6. java模拟数据库压测_Jmeter压测工具使用总结
  7. ffmpeg 编码如何做带宽控制输出
  8. 谷歌开源 VR 应用
  9. 只身单车游山东(一)
  10. python tushare
  11. IDEA 导入项目 导入不进去
  12. 两条平滑曲线相乘_圆锥曲线中两条相交直线的斜率之积为定值,这点你可能不会用...
  13. oracle 快速检索表名称及包含的字段名称
  14. Keil下无法跳转查看函数定义
  15. ipad如何与手机微信连接服务器地址,如何设置微信在手机和ipad同步 - 卡饭网
  16. 雪花飘落代码java_JavaScript实现雪花飘落效果
  17. Spark中distinct、reduceByKey和groupByKey的区别与取舍
  18. JavaScript如何判定一个给定的时间区间在哪些时间段范围内?
  19. 文秘专业计算机基础考题,文秘计算机测试题.doc
  20. rfid档案管理-基于RFID技术的智能档案管理系统—铨顺宏fuwit

热门文章

  1. 财务造假判断+面试+车牌识别
  2. Linux从入门到精通二(Windows:你知道我的兄弟Linux吗?)
  3. linux mysql 光盘安装教程_Linux上mysql安装详细教程
  4. angular实现国密算法sm2、sm3和sm4的ts版,基于sm-crypto库实现,前后端实现
  5. jquery漏洞修复方案
  6. 在html中不是链接目标属性,在HTML中,()不是链接的目标属性。A、selfB、newC、blankD、Top - 扁豆云问答...
  7. CSS溢出文字使用省略号表示
  8. Exchange Rate Difference
  9. 东京大学情报理工学系研究科招生海报
  10. 每日词根——vad(走)