做者|Dipesh Pal
編譯|Flin
來源|analyticsvidhyapython
虛擬助手(也稱爲AI助手或數字助手)是一款應用程序,能夠理解天然語言的語音命令併爲用戶完成任務。git
咱們應該都知道什麼是虛擬助手。打開手機並說「 Ok Google」或「 Hey Siri」。Google助手,Siri,Alexa都是虛擬助手的示例。github
演示和編碼YouTube視頻:web
咱們要作什麼正則表達式
代碼說明chrome
完整的代碼瀏覽器
GitHub儲存庫app
你如何貢獻dom
參考文獻機器學習
咱們的虛擬助手將可以執行如下操做:
天氣預報,啓動遊戲,啓動Windows應用程序,打開網站,告訴你幾乎你所要求的一切,告訴你日期和時間,問候,新聞等。
你能夠與筆記本電腦的麥克風/控制檯進行交互。助手生成的響應將顯示在控制檯上,或者經過揚聲器直接說出來。
將來的可能:自拍,與人聊天更多,等等。
讓咱們一塊兒來建立本身的虛擬助手。
pip install JarvisAI
這是我建立的最新虛擬助手模塊。它提供任何虛擬助手的基本功能。前提條件是Python版本 > 3.6。
安裝庫後,你能夠導入模塊
import JarvisAI obj = JarvisAI.JarvisAssistant() response = obj.mic_input() print(response)
功能經過方法名稱清除。例如,你能夠檢查代碼。
在這裏閱讀更多關於它的信息
你也能夠在這裏爲這個存儲庫作貢獻。
導包
import JarvisAI import re import pprint import random
根據文檔建立 JarvisAI的對象
obj = JarvisAI.JarvisAssistant()
咱們已經建立了這個「t2s(text)」函數。這會將任何文本轉換爲語音。咱們將使用(調用)此函數的整個程序從文本產生語音。
def t2s(text): obj.text2speech(text)
咱們但願不斷聽取用戶的輸入,所以此「 mic_input() 」將嘗試從計算機的麥克風中連續獲取音頻。它將處理音頻並在「 res」變量中返回文本。咱們能夠使用此「 res」變量根據用戶輸入執行某些操做。
while True: res = obj.mic_input()
天氣預報:咱們使用正則表達式來匹配用戶輸入中的查詢。若是在用戶輸入「 res」中找到「天氣」或「溫度」,則咱們要進行天氣預報。無需從頭開始編寫東西,只需調用「 obj.weather(city = city)」便可。
你只須要從用戶輸入中獲取城市並將其傳遞給天氣功能便可。它會告訴你你所在城市的天氣預報。
咱們能夠將此返回的「 weather_res」傳遞到「 t2s(weather_res)」,以從「 weather_res」字符串中產生語音。
while True: res = obj.mic_input() if re.search('weather|temperature', res): city = res.split(' ')[-1] weather_res = obj.weather(city=city) print(weather_res) t2s(weather_res)
新聞:與上述相似,匹配用戶輸入「 res」中的「新聞」一詞。若是匹配,則調用「 obj.news」。
它將返回15條新聞做爲字符串列表。所以,咱們能夠將新聞做爲「 news_res [0]」來獲取,並將其傳遞給「 t2s(news_res [0])」。
while True: res = obj.mic_input() if re.search('news', res): news_res = obj.news() pprint.pprint(news_res) t2s(f"I have found {len(news_res)} news. You can read it. Let me tell you first 2 of them") t2s(news_res[0]) t2s(news_res[1])
講述幾乎全部內容:它將從維基百科中獲取前500個字符,並將它們做爲字符串返回。你能夠使用'obj.tell_me(topic)'。
你須要將「主題」傳遞給「 tell_me(topic = topic)」。主題是你想知道的關鍵字。
while True: res = obj.mic_input() if re.search('tell me about', res): topic = res.split(' ')[-1] wiki_res = obj.tell_me(topic) print(wiki_res) t2s(wiki_res)
日期和時間:它將告訴你係統的當前日期和時間。
while True: res = obj.mic_input() if re.search('date', res): date = obj.tell_me_date() print(date) print(t2s(date)) if re.search('time', res): time = obj.tell_me_time() print(time) t2s(time)
打開任何網站:此'obj.website_opener(domain)'將爲你打開任何網站。你只須要從用戶輸入中獲取domain,而後傳遞給'obj.website_opener(domain)'。它將在你的默認瀏覽器中打開網站。
while True: res = obj.mic_input() if re.search('open', res): domain = res.split(' ')[-1] open_result = obj.website_opener(domain) print(open_result)
啓動任何應用程序,遊戲等:
這有點棘手,在「 obj.launch_any_app(path_of_app = path)」中,你須要傳遞「 .exe」文件路徑的函數。
所以,咱們建立了「 dict_app」字典,其中以「應用名稱」做爲鍵,以「路徑」做爲值。咱們能夠使用此「 dict_app」進行查找。若是字典中存在用戶輸入的應用程序,那麼咱們將經過獲取路徑來打開它。
如下示例僅適用於Chrome和Epic Games。
while True: res = obj.mic_input() if re.search('launch', res): dict_app = { 'chrome': 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', 'epic games': 'C:\Program Files (x86)\Epic Games\Launcher\Portal\Binaries\Win32\EpicGamesLauncher.exe' } app = res.split(' ', 1)[1] path = dict_app.get(app) if path is None: t2s('Application path not found') print('Application path not found') else: t2s('Launching: ' + app) obj.launch_any_app(path_of_app=path)
問候和聊天,你如今能夠像這樣建立問候和聊天。
我正在 https://pypi.org/project/JarvisAI/ 上使用Tensorflow添加聊天功能。你能夠爲使其更好而作出貢獻。
while True: res = obj.mic_input() if re.search('hello', res): print('Hi') t2s('Hi') if re.search('how are you', res): li = ['good', 'fine', 'great'] response = random.choice(li) print(f"I am {response}") t2s(f"I am {response}") if re.search('your name|who are you', res): print("My name is Jarvis, I am your personal assistant") t2s("My name is Jarvis, I am your personal assistant")
問「你能作什麼?」:在這裏,咱們只是使用「 obj.t2s()」來發表講話。若是你瞭解python,則能夠輕鬆理解如下代碼
while True: res = obj.mic_input() if re.search('what can you do', res): li_commands = { "open websites": "Example: 'open youtube.com", "time": "Example: 'what time it is?'", "date": "Example: 'what date it is?'", "launch applications": "Example: 'launch chrome'", "tell me": "Example: 'tell me about India'", "weather": "Example: 'what weather/temperature in Mumbai?'", "news": "Example: 'news for today' ", } ans = """I can do lots of things, for example you can ask me time, date, weather in your city, I can open websites for you, launch application and more. See the list of commands-""" print(ans) pprint.pprint(li_commands) t2s(ans)
import JarvisAI import re import pprint import random obj = JarvisAI.JarvisAssistant() def t2s(text): obj.text2speech(text) while True: res = obj.mic_input() if re.search('weather|temperature', res): city = res.split(' ')[-1] weather_res = obj.weather(city=city) print(weather_res) t2s(weather_res) if re.search('news', res): news_res = obj.news() pprint.pprint(news_res) t2s(f"I have found {len(news_res)} news. You can read it. Let me tell you first 2 of them") t2s(news_res[0]) t2s(news_res[1]) if re.search('tell me about', res): topic = res.split(' ')[-1] wiki_res = obj.tell_me(topic) print(wiki_res) t2s(wiki_res) if re.search('date', res): date = obj.tell_me_date() print(date) print(t2s(date)) if re.search('time', res): time = obj.tell_me_time() print(time) t2s(time) if re.search('open', res): domain = res.split(' ')[-1] open_result = obj.website_opener(domain) print(open_result) if re.search('launch', res): dict_app = { 'chrome': 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', 'epic games': 'C:\Program Files (x86)\Epic Games\Launcher\Portal\Binaries\Win32\EpicGamesLauncher.exe' } app = res.split(' ', 1)[1] path = dict_app.get(app) if path is None: t2s('Application path not found') print('Application path not found') else: t2s('Launching: ' + app) obj.launch_any_app(path_of_app=path) if re.search('hello', res): print('Hi') t2s('Hi') if re.search('how are you', res): li = ['good', 'fine', 'great'] response = random.choice(li) print(f"I am {response}") t2s(f"I am {response}") if re.search('your name|who are you', res): print("My name is Jarvis, I am your personal assistant") t2s("My name is Jarvis, I am your personal assistant") if re.search('what can you do', res): li_commands = { "open websites": "Example: 'open youtube.com", "time": "Example: 'what time it is?'", "date": "Example: 'what date it is?'", "launch applications": "Example: 'launch chrome'", "tell me": "Example: 'tell me about India'", "weather": "Example: 'what weather/temperature in Mumbai?'", "news": "Example: 'news for today' ", } ans = """I can do lots of things, for example you can ask me time, date, weather in your city, I can open websites for you, launch application and more. See the list of commands-""" print(ans) pprint.pprint(li_commands) t2s(ans)
你能夠隨意使用個人代碼。若是你喜歡個人做品,請爲其點亮star;若是你喜歡,請在YouTube上訂閱。
只需克隆存儲庫
而後運行pip install -r requirements.txt
它將自動安裝全部內容。
只需打開此GitHub存儲庫,閱讀該書,你將瞭解你如何作出貢獻。
你的貢獻將反映在這個項目上。
GitHub存儲庫和代碼
貢獻的GitHub Pypi存儲庫
JarvisAI庫
YouTube頻道
演示和代碼(YouTube)
原文連接:https://www.analyticsvidhya.com/blog/2020/09/ai-virtual-assistant-using-python/
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/