如何使用 Python 構建自己的 AI 個人助理

2022-01-07 Python大本營

人工智慧個人助理是一種軟體,可以理解口頭或書面命令並完成客戶分配的任務。這是弱人工智慧的一個例子,它只能執行和執行用戶設計的任務。

想打造自己的個人 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學習資源

相關焦點

  • 如何使用Visual Studio工具創建python項目
    工具Visual Studio 2019python環境技術python一般情況下,我們使用Visual Studio進行C#、C++和C語言項目進行開發。隨著工具不斷完善,現在也可以進行python項目開發了。那麼,如何在Visual Studio 2019工具上創建python項目?
  • 用python將你的頭像「卡通化」
    https://github.com/minivision-ai/photo2cartoonpython 3.6pytorch 1.4tensorflow-gpu 1.14face-alignmentdlib訓練訓練數據包括真實照片和卡通畫像,為降低訓練複雜度,該項目對兩類數據進行了如下預處理:檢測人臉及關鍵點。
  • python+ pycharm 環境安裝 + pycharm使用
    ,點擊Windows(因為這裡是Windows系統所以選擇Windows,你是Mac就選擇Mac)4.這裡全是迭代的歷史版本號,我們選擇最新的版本點擊進入5.進入後一直滑到最底下,根據自己的電腦是32位或者64位進行下載6.下載完成後開始安裝,打開下載好的安裝包
  • Python 單元測試(unittest)的使用小結
    >Pytest如何使用skip跳過執行測試Python Django框架單元測試之文件上傳測試示例Python單元測試與測試用例簡析Python單元測試模塊doctest的具體使用>python單元測試unittest實例詳解Python中unittest用法實例Python+request+unittest實現接口測試框架集成實例python中如何打包用戶自定義模塊
  • 使用PaddleGAN修復老電影
    研究人員們使用GAN構建出許多有趣應用,例如圖片變化、超解析度、動作遷移等。本文帶大家使用基於百度PaddlePaddle框架的GAN套件PaddleGAN,實現老電影修復。首先我們先看看修復效果吧。怎麼樣?效果還不錯吧。下面我將帶領大家一步一步實現老電影修復。
  • 使用Python+OpenCV實現圖像數據採集
    通常,數據科學家會建立一個圖像識別模型,觀察其準確性,如果足夠高,就表示工作完成了。
  • 使用python-PIL庫處理照片(更改照片尺寸及背景色)
    更改照片尺寸主要使用image.resize()函數,其中(width, height)分別為目標尺寸的寬度和高度,Image.ANTIALIAS參數表示高質量處理照片。更改證件照背景色更改照片背景使用到的庫有Pillow(PIL)和removebg,後者anaconda未自帶,需要手動 pip install removebg 安裝。
  • 用 python 快速「卡通化」人物頭像
    有了這個項目,再也不用找同學了,我自己也可以把頭像卡通化了。該項目為小視科技卡通肖像探索項目。可使用微信掃描下方二維碼或搜索「AI卡通秀」小程序體驗卡通化效果。項目地址:https://github.com/minivision-ai/photo2cartoon
  • 如何利用Python開發App?
    準備工作利用python開發app需要用到python的一個模塊–kivy,kivy是一個開源的,跨平臺的Python開發框架,用於開發使用創新的應用程式。簡而言之,這是一個python桌面程序開發框架(類似wxpython等模塊),強大的是kivy支持linux、mac、windows、android、ios平臺,這也是為什麼開發app需要用到這個模塊。
  • 使用Python生成藝術二維碼
    今天簡單介紹如何用python製作動態二維碼。    實現是用一個免費的python庫myqr, 在這裡可以看到:https://pypi.org/pypi/MyQR/先要安裝:pip install myqr    安裝完成後,在命令行中輸入 myqr 查看下使用幫助。
  • Python 打包的現狀:包的三種類型
    如果你想了解 Python 打包(packaging)生態的現狀及將來如何演變,請繼續閱讀。我們希望,即使上述提到的 Python 增強提案(譯註:即 PEP,關於 PEP 的介紹,請閱讀這篇文章),如今可能會引起一些不愉快,但從長遠來看,我們將從中受益。我大約在三年前加入了 Python 開源社區(儘管使用它已有 8 年之久)。從早期開始,我就聽說 Python 打包有一點黑匣子的名聲。
  • 谷歌智能助理操作,如何在智能家居中使用智能助理
    調整樂器,要求提供特定音符,助理可以提供。方便調整吉他和其他樂器。「告訴我一個笑話」,一個呻吟聲的圖書館,肯定會減輕任何人的心情。「背誦一首詩」,助理有一系列經典詩歌,隨時準備幫助您放鬆身心。「你喜歡」星際迷航「,還是」星球大戰「?為一系列令人困惑的交叉答案做好準備,這些答案一定會令人高興並激怒粉絲。小編會讓你自己發現其餘部分:「做飛行特技表演。」
  • 如何用PYTHON代碼寫出音樂
    我一直在做這樣的嘗試,就是通過人工智慧算法實現機器自動的作詞和編曲(在這裡預告下,通過深度學習寫歌詞已經實現了,之後會分享給大家),本文我們主要聊下如何寫曲。說到用代碼寫曲子,有一個東西大家一定要了解就是MIDI。MIDI是一種樂器數字接口,是編曲界最廣泛的音樂標準格式。MIDI並不是真正意義上的音樂文件,大家可以把它理解成樂譜,需要有環境編譯MIDI文件,才可以生成音樂。
  • 【Python基礎】Python 函數使用總結
    我們把一些經常或反覆被使用的任務放在一起,創建一個函數,而不是為不同的輸入反覆編寫相同的代碼。Python提供了print、sorted、max、map等內置函數,但我們也可以創建自己的函數,稱為用戶定義函數。
  • 轉載 | 如何使用 python 提取 pdf 表格及文本,並保存到 excel
    pdfplumber 在 github 上有英文官方文檔,後面我們會撿重點講解,先看下如何用 pdfplumber 提取 pdf 表格?有個初步認知後,接下來詳細講講 pdfplumber 的安裝、導入、api 接口等信息前面已經介紹過 pdfplumber 的用途,也用一個小案例展示了如何提取表格,我覺得對於 pdfplumber 只需要了解三點就可以1、它是一個純 python 第三方庫,適合 python 3.x 版本2、它用來查看 pdf 各類信息,能有效提取文本、表格
  • 在Ubuntu中安裝OpenCV-Python | 三
    但是在本教程中,我們還使用Matplotlib進行一些簡單而又漂亮的繪圖目的(與OpenCV相比,我感覺好多了)。Matplotlib是可選的,但強烈建議使用。同樣,我們還將看到IPython,這是一個強烈推薦的交互式Python終端。
  • Pytest丨如何使用全功能的Python測試框架?小白必看
    pytest斷言前面說到pytest的斷言比較強大,它直接可以使用python自帶的斷言內容,當然不止而已,pytest還有一個重要的功能是可以重寫assert關鍵字,pytest會截斷對python中自帶的assert的調用然後替換成自己定位的assert,從而可以獲取更多的錯誤信息,讓我們知道具體哪裡出現了問題
  • 音樂人聲分離,AI提取伴奏人聲
    但是 Spleeter 不太適合小白使用,因為它安裝起來麻煩,安裝好用還需要訓練它。訓練好後呢,還要通過命令行去使用。如果有興趣可以自行搜索 spleeter 使用教程。我個人是不推薦使用的,好在有很多大神基於 spleeter 開發了在線分離人聲和伴奏的工具,同時幫我們訓練好了AI。比如以下介紹的幾個網站。工具2 spleeterGUIspleeterGUI是基於 Slpleeter 的windows軟體。
  • 使用Python+OpenCV進行面部合成
    pyquery一些自定義的用法【視頻】貓途鷹網站評論數據抓取【視頻講解】在scrapy框架中如何使用selenium?【實戰視頻】使用scrapy寫爬蟲-爬知乎live簡易SQLite3資料庫學習【視頻教程】對視頻進行基本操作【視頻】抓包小練習-B站評論數據抓取fake-useragent庫:值得花2分鐘學習的庫【視頻】爬取餓了麼平臺上的門店信息如何抓取視頻資源-以頭條視頻為例
  • 慢步python,你苦苦找尋的python中文使用手冊在哪裡?這裡有答案
    #學習難度大python對大家來說,應該算是相對新的程式語言。即使這樣,我們學習python的道路依舊困難重重。問題在,相關的學習資料不夠系統。初學者使用手冊像以前剛開始使用電視、手機一樣,都有一本使用說明書,即使用手冊。