人工智能个人助理是一种软件,可以理解口头或书面命令并完成客户分配的任务。这是弱人工智能的一个例子,它只能执行和执行用户设计的任务。
想打造自己的个人 AI 助手,如 Apple Siri、Microsoft Cortana 和 Google 助手?
您可以查看此博客以通过几个简单的步骤构建一个!
使用 Python 编程升 anguage,由开发商最常用的一种脚本可以用来建立你的个人助理 AI 来执行任务,由用户设计。
现在,让我们使用 python 为我们的个人语音助手编写一个脚本。
技能:
实现的语音助手可以执行以下任务,它可以打开 YouTube、Gmail、谷歌浏览器和堆栈溢出。预测当前时间、拍照、搜索维基百科以提取所需数据、预测不同城市的天气、获取印度时报的头条新闻,还可以回答计算和地理问题。
语音助手的以下查询可以根据用户的需要进行操作。
所需的包裹:
要构建个人语音助手,必须使用 pip 命令在您的系统中安装以下软件包。
1) 语音识别— 语音识别是用于房屋自动化和人工智能设备的重要功能。该库的主要功能是尝试理解人类所说的任何内容并将语音转换为文本。
2) pyttsx3 — pyttxs3 是 Python 中的文本到语音转换库。该软件包支持 Mac os x、Windows 和 Linux 上的文本到语音引擎。
3)维基百科——维基百科是一个多语言在线百科全书,学术界的许多人都在使用,从新生到学生,再到想要获取特定主题信息的教授。python 中的这个包从维基百科中提取所需的数据。
4) ecapture — 该模块用于从您的相机捕捉图像
5) datetime——这是 python 中的一个内置模块,它适用于日期和时间
6) os——这个模块是 python 中的一个标准库,它提供了与操作系统交互的功能
7) time——时间模块帮助我们显示时间
8) Web 浏览器——这是 python 中的一个内置包。它从网络中提取数据
9) Subprocess — 这是一个标准库,用于处理各种系统命令,例如注销或重新启动 PC。
10) Json – json 模块用于存储和交换数据。
11) request – request 模块用于发送所有类型的 HTTP 请求。它接受 URL 作为参数并提供对给定 URL 的访问。
12) wolfram alpha — Wolfram Alpha 是一个 API,可以使用 Wolfram 的算法、知识库和 AI 技术计算专家级答案。Wolfram 语言使之成为可能。
执行:
导入以下库
import speech_recognition as sr import pyttsx3 import datetime import wikipedia import webbrowser import os import time import subprocess from ecapture import ecapture as ec import wolframalpha import json import requests
设置语音引擎:
所述 pyttsx3 模块被存储在一个变量名发动机。
Sapi5是用于语音识别的 Microsoft 文本到语音引擎。
语音 ID 可以设置为 0 或 1,
0 表示男声
1 表示女声
engine=pyttsx3.init('sapi5') voices=engine.getProperty('voices') engine.setProperty('voice','voices[0].id')
现在定义一个将文本转换为语音的函数speak。speak 函数以文本为参数,进一步初始化引擎。
runAndWait:此函数在处理所有当前排队的命令时阻塞。它适当地调用引擎通知的回调,并在此调用之前排队的所有命令从队列中清空时返回。
def speak(text): engine.say(text) engine.runAndWait()
启动一个函数来迎接用户:
定义一个函数 wishMe 供 AI 助手迎接用户。
在 NOW()。小时 功能抽象是从当前时间的小时。
如果小时大于零且小于 12,语音助手会向您发送消息“早安”。
如果小时大于 12 点且小于 18 点,语音助手会向您发送以下消息“下午好”。
否则它会发出“晚安”的消息
def wishMe(): hour=datetime.datetime.now().hour if hour>=0 and hour<12: speak("Hello,Good Morning") print("Hello,Good Morning") elif hour>=12 and hour<18: speak("Hello,Good Afternoon") print("Hello,Good Afternoon") else: speak("Hello,Good Evening") print("Hello,Good Evening")
为您的 AI 助手设置命令功能:
为 AI 助手定义一个函数 takecommand 来理解和接受人类语言。麦克风捕获人类语音,识别器识别语音以给出响应。
异常处理用于处理运行时错误期间的异常,recognize_google函数使用谷歌音频识别语音。
def takeCommand(): r=sr.Recognizer() with sr.Microphone() as source: print("Listening...") audio=r.listen(source) try: statement=r.recognize_google(audio,language='en-in') print(f"user said:{statement}\n") except Exception as e: speak("Pardon me, please say that again") return "None" return statement print("Loading your AI personal assistant G-One") speak("Loading your AI personal assistant G-One") wishMe()
主要功能:
主函数从这里开始,人类给出的命令存储在变量 语句中。
if __name__=='__main__': while True: speak("Tell me how can I help you now?") statement = takeCommand().lower() if statement==0: continue
如果用户给出的语句中有以下触发词,它会调用虚拟助手说出以下命令。
if "good bye" in statement or "ok bye" in statement or "stop" in statement: speak('your personal assistant G-one is shutting down,Good bye') print('your personal assistant G-one is shutting down,Good bye') break
技能 1 – 从维基百科获取数据:
以下命令有助于从维基百科中提取信息。所述 wikipedia.summary() 函数有两个参数,由用户给出的发言,并如何需要从许多维基百科句子要提取被存储在可变 的结果。
if 'wikipedia' in statement: speak('Searching Wikipedia...') statement =statement.replace("wikipedia", "") results = wikipedia.summary(statement, sentences=3) speak("According to Wikipedia") print(results) speak(results)
技能 2 – 访问网络浏览器——谷歌浏览器、G-Mail 和 YouTube:
Web 浏览器从 Web 中提取数据。该 open_new_tab 函数接受 URL 作为一个参数,需要访问。
所述 的 Python 时间睡眠功能 被用于在一个程序的执行增加延迟。我们可以使用这个函数在给定的 时间 内停止程序的执行(以秒为单位)。
elif 'open youtube' in statement: webbrowser.open_new_tab("https://www.youtube.com") speak("youtube is open now") time.sleep(5) elif 'open google' in statement: webbrowser.open_new_tab("https://www.google.com") speak("Google chrome is open now") time.sleep(5) elif 'open gmail' in statement: webbrowser.open_new_tab("gmail.com") speak("Google Mail open now") time.sleep(5)
技能 3 - 预测时间:
当前时间是从显示小时、分钟和秒的 datetime.now() 函数中抽象出来的,并存储在一个变量名strTime 中。
elif 'time' in statement: strTime=datetime.datetime.now().strftime("%H:%M:%S") speak(f"the time is {strTime}")
技能 4 – 获取最新消息:
如果用户想知道最新消息,语音助手被编程为使用网络浏览器功能从印度时代获取头条新闻。
技能 5 – 拍摄照片:
该 ec.capture() 函数是从相机用于捕获图像。它接受 3 个参数。
摄像头索引— 第一个连接的网络摄像头将被指示为索引 0,下一个网络摄像头将被指示为索引 1
窗口名称——它可以是一个变量或一个字符串。如果您不想看到该窗口,请输入 False
保存名称– 可以为图像命名,如果您不想保存图像,请输入 false
elif 'news' in statement: news = webbrowser.open_new_tab("https://timesofindia.indiatimes.com/home/headlines”) speak('Here are some headlines from the Times of India,Happy reading') time.sleep(6) elif "camera" in statement or "take a photo" in statement: ec.capture(0,"robo camera","img.jpg")
技巧 6 - 从网络搜索数据:
在 Web 浏览器中, 您可以通过将用户语句(命令)传递给 open_new_tab() 函数来 搜索 所需的数据。
用户 : 嘿 G -One,请搜索蝴蝶图片
语音助手打开谷歌窗口并从网络获取蝴蝶图像。
elif 'search' in statement: statement = statement.replace("search", "") webbrowser.open_new_tab(statement) time.sleep(5)
技能 7 – 设置您的 AI 助手来回答地理和计算问题:
在这里,我们可以使用名为 Wolfram alpha API 的 第三方 API 来回答计算和地理问题。Wolfram 语言使之成为可能。该 客户 是用于钨阿尔法创建的实例(类)。的 水库 变量存储由钨阿尔法给出的响应。
elif 'ask' in statement: speak('I can answer to computational and geographical questions and what question do you want to ask now') question=takeCommand() app_id="Paste your unique ID here " client = wolframalpha.Client('R2K75H-7ELALHR35X') res = client.query(question) answer = next(res.results).text speak(answer) print(answer)
要访问 wolfram alpha API,需要一个唯一的 App ID,可以通过以下方式生成:
- 如果您没有,请登录 wolfram alpha 的官方页面并创建一个帐户。
2. 使用您的 wolfram ID 登录
3. 现在您将看到该网站的主页。前往右上角的帐户部分,您可以在其中看到您的电子邮件。在下拉菜单中,选择我的应用程序 (API) 选项。
4. 您将看到以下窗口,现在单击 Get APP_ID 按钮
5. 现在你会看到下面的对话框,给一个合适的名字和描述,然后点击 App ID 按钮,就会生成一个 App ID,这是一个唯一的 ID。使用 App Id 可以访问 Wolfram alpha API。
人类:嘿 G -One,加利福尼亚的首府是什么?
G-One 语音助手:美利坚合众国萨克拉门托
技能 8- 额外功能:
为您的 AI 助手编程以回答以下问题会很有趣,例如它可以做什么以及是谁创建的,不是吗?
elif 'who are you' in statement or 'what can you do' in statement: speak('I am G-one version 1 point O your personal assistant. I am programmed to minor tasks like' 'opening youtube,google chrome, gmail and stackoverflow ,predict time,take a photo,search wikipedia,predict weather' 'In different cities, get top headline news from times of india and you can ask me computational or geographical questions too!') elif "who made you" in statement or "who created you" in statement or "who discovered you" in statement: speak("I was built by Mirthula") print("I was built by Mirthula")
技能 9- 预报天气:
现在要对您的 AI 助手进行编程以检测天气,我们需要从 Open Weather 地图生成 API 密钥。
开放天气地图是一种提供天气数据的在线服务。通过在官网生成 API ID,您可以使用 APP_ID 让您的语音助手随时随地检测各地的天气。这个天气检测需要导入的必要模块是 json 和 request 模块。
所述 CITY_NAME 变量 需要通过使用人给出的命令 takeCommand() 函数。
request模块的 get 方法返回一个 响应 对象。并且响应对象的 json 方法将 json 格式的数据转换成 python 格式。
变量 X 包含嵌套字典列表,用于检查“COD”的值是否为 404,即是否找到了城市。
温度和湿度等值存储在变量 Y 的主键中。
elif "weather" in statement: api_key="Apply your unique ID" base_url="https://api.openweathermap.org/data/2.5/weather?" speak("what is the city name") city_name=takeCommand() complete_url=base_url+"appid="+api_key+"&q="+city_name response = requests.get(complete_url) x=response.json() if x["cod"]!="404": y=x["main"] current_temperature = y["temp"] current_humidiy = y["humidity"] z = x["weather"] weather_description = z[0]["description"] speak(" Temperature in kelvin unit is " + str(current_temperature) + "\n humidity in percentage is " + str(current_humidiy) + "\n description " + str(weather_description)) print(" Temperature in kelvin unit = " + str(current_temperature) + "\n humidity (in percentage) = " + str(current_humidiy) + "\n description = " + str(weather_description))
人类:嘿 G -One,我想获取天气数据
G-One:城市名称是什么?
人类:喜马偕尔邦
G-One: 开尔文单位温度为 301.09,湿度百分比为 52,描述为小雨。
技能 10- 注销您的 PC:
这里的 subprocess.call() 函数用于处理系统函数以注销或关闭您的 PC。这会调用您的 AI 助手来自动关闭您的 PC。
elif "log off" in statement or "sign out" in statement: speak("Ok , your pc will log off in 10 sec make sure you exit from all applications") subprocess.call(["shutdown", "/l"]) time.sleep(3)
Hurray,我们终于建立了自己的 AI 语音助手。此外,您仍然可以为 AI 语音助手添加更多功能以执行更多任务。【绝对有效】免费领取 Python 学习资源
原文链接:https://zhuanlan.zhihu.com/p/442952655