人工智慧個人助理是一種軟體,可以理解口頭或書面命令並完成客戶分配的任務。這是弱人工智慧的一個例子,它只能執行和執行用戶設計的任務。
想打造自己的個人 AI 助手,如 Apple Siri、Microsoft Cortana 和 Google 助手?
您可以查看此博客以通過幾個簡單的步驟構建一個!
使用Python編程升anguage,由開發商最常用的一種腳本可以用來建立你的個人助理AI來執行任務,由用戶設計。
現在,讓我們使用 python 為我們的個人語音助手編寫一個腳本。
技能:
實現的語音助手可以執行以下任務,它可以打開 YouTube、Gmail、谷歌瀏覽器和堆棧溢出。預測當前時間、拍照、搜索維基百科以提取所需數據、預測不同城市的天氣、獲取印度時報的頭條新聞,還可以回答計算和地理問題。
語音助手的以下查詢可以根據用戶的需要進行操作。
【絕對有效】免費領取Python學習資源
所需的包裹:
要構建個人語音助手,必須使用 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學習資源