作者|Dipesh Pal
編譯|Flin
來源|analyticsvidhya
介紹
虛擬助手(也稱為AI助手或數字助手)是一款應用程式,可以理解自然語言的語音命令并為用戶完成任務,

我們應該都知道什么是虛擬助手,打開手機并說“ Ok Google”或“ Hey Siri”,Google助手,Siri,Alexa都是虛擬助手的示例,
演示和編碼YouTube視頻:
- https://youtu.be/LliTjuxDw_o
內容
-
我們要做什么
-
代碼說明
-
完整的代碼
-
GitHub儲存庫
-
你如何貢獻
-
參考文獻
1.我們要做什么
我們的虛擬助手將能夠執行以下操作:
天氣預報,啟動游戲,啟動Windows應用程式,打開網站,告訴你幾乎你所要求的一切,告訴你日期和時間,問候,新聞等,
你可以與筆記本電腦的麥克風/控制臺進行互動,助手生成的回應將顯示在控制臺上,或者通過揚聲器直接說出來,
未來的可能:自拍,與人聊天更多,等等,
2. 代碼說明
讓我們一起來創建自己的虛擬助手,
- 所有代碼都可以在我的GitHub上找到,
- 我的頻道上還提供了演示YouTube視頻和代碼YouTube視頻,
- 所需的鏈接和軟體包如下所述,
- 如果你愿意分享,我將不勝感激,
2.1 所需的軟體包和庫
pip install JarvisAI
這是我創建的最新虛擬助手模塊,它提供任何虛擬助手的基本功能,前提條件是Python版本 > 3.6,
用法和功能
安裝庫后,你可以匯入模塊
import JarvisAI
obj = JarvisAI.JarvisAssistant()
response = obj.mic_input()
print(response)
功能通過方法名稱清除,例如,你可以檢查代碼,
- mic_input
- text2speech
- shutdown
- website_opener
- send_mail
- tell_me_date
- tell_me_time
- launch_any_app
- weather
- news
- tell_me
在這里閱讀更多關于它的資訊
- https://pypi.org/project/JarvisAI/
你也可以在這里為這個存盤庫做貢獻,
- https://github.com/Dipeshpal/Jarvis_AI
2.2 編碼
導包
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)
3.完整的代碼
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)
4. Github倉庫
你可以隨意使用我的代碼,如果你喜歡我的作品,請為其點亮star;如果你喜歡,請在YouTube上訂閱,
只需克隆存盤庫
- https://github.com/Dipeshpal/Jarvis-Assisant.git
然后運行pip install -r requirements.txt
它將自動安裝所有內容,
5. 如何貢獻
只需打開此GitHub存盤庫,閱讀該書,你將了解你如何做出貢獻,
- https://github.com/Dipeshpal/Jarvis_AI
你的貢獻將反映在這個專案上,
- https://pypi.org/project/JarvisAI/
6. 參考
GitHub存盤庫和代碼
- https://github.com/Dipeshpal/Jarvis-Assisant.git
貢獻的GitHub Pypi存盤庫
- https://github.com/Dipeshpal/Jarvis_AI
JarvisAI庫
- https://pypi.org/project/JarvisAI/
YouTube頻道
- https://www.youtube.com/DIPESHPAL17
演示和代碼(YouTube)
- https://youtu.be/LliTjuxDw_o
原文鏈接:https://www.analyticsvidhya.com/blog/2020/09/ai-virtual-assistant-using-python/
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/169935.html
標籤:其他
上一篇:AttributeError: module 'tensorflow' has no attribute 'global_variables_initializ
下一篇:MILP問題,R語言
