如何使用Python建立AI虛擬助手

做者|Dipesh Pal
編譯|Flin
來源|analyticsvidhyapython

介紹

虛擬助手(也稱爲AI助手或數字助手)是一款應用程序,能夠理解天然語言的語音命令併爲用戶完成任務。git

咱們應該都知道什麼是虛擬助手。打開手機並說「 Ok Google」或「 Hey Siri」。Google助手,Siri,Alexa都是虛擬助手的示例。github

演示和編碼YouTube視頻:web

內容

  1. 咱們要作什麼正則表達式

  2. 代碼說明chrome

  3. 完整的代碼瀏覽器

  4. GitHub儲存庫app

  5. 你如何貢獻dom

  6. 參考文獻機器學習

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)

功能經過方法名稱清除。例如,你能夠檢查代碼。

  1. mic_input
  2. text2speech
  3. shutdown
  4. website_opener
  5. send_mail
  6. tell_me_date
  7. tell_me_time
  8. launch_any_app
  9. weather
  10. news
  11. tell_me

在這裏閱讀更多關於它的信息

你也能夠在這裏爲這個存儲庫作貢獻。

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上訂閱。

只需克隆存儲庫

而後運行pip install -r requirements.txt

它將自動安裝全部內容。

5. 如何貢獻

只需打開此GitHub存儲庫,閱讀該書,你將瞭解你如何作出貢獻。

你的貢獻將反映在這個項目上。

6. 參考

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/

相關文章
相關標籤/搜索