トニー?スタークのバーチャルパーソナルアシスタントであるJARVISを覚えていますか?きっとあなたはそうするでしょう!

アシスタントを作成することについて疑問に思ったことはありますか?はい?トニースタークはそれで私たちを助けることができます!おっと、彼がもういないことを忘れましたか?悲しいことに、彼はもう私たちを救うことができません。

しかしねえ、あなたの好きな言語のPythonはそれを助けることができます。はい、あなたはそれを正しく聞いた。Pythonを使用して獨自のJARVISを作成できます。転がしてみよう!

1.仮想環境を作成する

プロジェクトの開発中に、さまざまなモジュールや外部ライブラリに出くわします。それらを學び、インストールしましょう。ただし、それらをインストールする前に、仮想環境を作成してアクティブ化しましょう。

を使用して仮想環境を作成しvirtualenvます。Pythonには、プリインストールされたvirtualenv ライブラリが付屬しています。したがって、仮想環境を作成するには、次のコマンドを使用できます。

$ python -m venv env

$ . env/Scripts/activate

  1. pyttsx3:pyttsxは、プラットフォームに依存しないクロスプラットフォームのテキスト読み上げライブラリです。このライブラリをテキスト読み上げ変換に使用する主な利點は、オフラインで機能することです。このモジュールをインストールするには、ターミナルで以下のコマンドを入力します。
    $ pip install pyttsx3
  2. SpeechRecognition:音聲をテキストに変換してさらに処理することができます。このモジュールをインストールするには、ターミナルで以下のコマンドを入力します。
    $ pip install SpeechRecognition
  3. pywhatkit:これは使いやすいライブラリであり、ブラウザと非常に簡単に対話するのに役立ちます。モジュールをインストールするには、ターミナルで次のコマンドを実行します。
    $ pip install pywhatkit
  4. ウィキペディア:ウィキペディアのウェブサイトからさまざまな情報を取得するために使用されます。このモジュールをインストールするには、ターミナルで以下のコマンドを入力します。
    $ pip install wikipedia
  5. リクエスト:これはPython用のエレガントでシンプルなHTTPライブラリであり、HTTP /1.1リクエストを非常に簡単に送信できます。モジュールをインストールするには、ターミナルで次のコマンドを実行します。
    $ pip install requests

このファイルは、プロジェクトに関連するAPIキー、パスワードなどのいくつかのプライベートデータを保存するために必要です。とりあえず、ユーザー名とボットを保存しましょう。

名前の付いたファイルを作成し、.envそこに次のコンテンツを追加します。

USER=Ashutosh 
BOTNAME=JARVIS

$ pip install python-decouple

いくつかの重要な関數の定義を始める前に、まず音聲エンジンを作成しましょう。

import pyttsx3
from decouple import config
USERNAME = config('USER')
BOTNAME = config('BOTNAME')
engine = pyttsx3.init('sapi5')
# Set Rate
engine.setProperty('rate', 190)
# Set Volume
engine.setProperty('volume', 1.0)
# Set Voice (Female)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)

[<pyttsx3.voice.Voice object at 0x000001AB9FB834F0>, <pyttsx3.voice.Voice object at 0x000001AB9FB83490>]

注:PyAudioに関連するエラーが発生した場合は、ここからPyAudioホイールをダウンロードして、仮想環境にインストールしてください。

また、decoupleconfig からのメソッドを使用して、環境変數の値と環境変數からの値を取得しています。USER BOTNAME

Speak関數は、渡されたテキストをすべて話す責任があります。コードを見てみましょう:

# Text to Speech Conversion
def speak(text):
    """Used to speak whatever text is passed to it"""
    
    engine.say(text)
    engine.runAndWait()

2.挨拶機能

この関數は、プログラムが実行されるたびにユーザーに挨拶するために使用されます。現在の時刻によれば、挨拶おはようこんにちは、または良い夜をユーザーに。

from datetime import datetime
# Greet the user
def greet_user():
    """Greets the user according to the time"""
    
    hour = datetime.now().hour
    if (hour >= 6) and (hour < 12):
        speak(f"Good Morning {USERNAME}")
    elif (hour >= 12) and (hour < 16):
        speak(f"Good afternoon {USERNAME}")
    elif (hour >= 16) and (hour < 19):
        speak(f"Good Evening {USERNAME}")
    speak(f"I am {BOTNAME}. How may I assist you?")

3.ユーザー入力を取得します

この機能は、ユーザーからコマンドを受け取り、speech_recognition モジュールを使用してコマンドを認識するためのものです。

import speech_recognition as sr
from random import choice
from utils import opening_text
# Takes Input from User
def take_user_input():
    """Takes user input, recognizes it using Speech Recognition module and converts it into text"""
r = sr.Recognizer()
    with sr.Microphone() as source:
        print('Listening....')
        r.pause_threshold = 1
        audio = r.listen(source)
try:
        print('Recognizing...')
        query = r.recognize_google(audio, language='en-in')
        if not 'exit' in query or 'stop' in query:
            speak(choice(opening_text))
        else:
            hour = datetime.now().hour
            if hour >= 21 and hour < 6:
                speak("Good night sir, take care!")
            else:
                speak('Have a good day sir!')
            exit()
    except Exception:
        speak('Sorry, I could not understand. Could you please say that again?')
        query = 'None'
    return query

次に、Recognizerクラスのrecognize_google() メソッドを使用して、音聲の認識を試みます。このメソッドは、Google音聲認識APIを使用して、渡された音聲に対して音聲認識を実行します。言語を、つまり英語インドに設定しました。文字列に過ぎない音聲のトランスクリプトを返します。と呼ばれる変數に格納しました。recognize_google()en-inquery

クエリに「exit」または「stop」という単語が含まれている場合は、アシスタントにすぐに停止するように求めていることを意味します。そのため、停止する前に、現在の時間に従ってユーザーに再度挨拶します。時間が21?6の場合は、ユーザーにおやすみなさい。それ以外の場合は、他のメッセージを送信してください。次のutils.pyようないくつかのステートメントを含むリストが1つしかないファイルを作成します。

opening_text = [
    "Cool, I'm on it sir.",
    "Okay sir, I'm working on it.",
    "Just a second sir.",
]

このプロセス全體で、例外が発生した場合は、ユーザーに謝罪し、query を[なし]に設定します。最後に、を返しますquery

プロジェクトを実行するために、mainメソッドを使用しています。

if __name__ == '__main__':
    greet_user()
    while True:
        query = take_user_input().lower()
        print(query)

今のところ、の完全なコードはmain.py次のようになります。

import pyttsx3
import speech_recognition as sr
from decouple import config
from datetime import datetime
from random import choice
from utils import opening_text
USERNAME = config('USER')
BOTNAME = config('BOTNAME')
engine = pyttsx3.init('sapi5')
# Set Rate
engine.setProperty('rate', 190)
# Set Volume
engine.setProperty('volume', 1.0)
# Set Voice (Female)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
# Text to Speech Conversion
def speak(text):
    """Used to speak whatever text is passed to it"""
engine.say(text)
    engine.runAndWait()
# Greet the user
def greet_user():
    """Greets the user according to the time"""
    
    hour = datetime.now().hour
    if (hour >= 6) and (hour < 12):
        speak(f"Good Morning {USERNAME}")
    elif (hour >= 12) and (hour < 16):
        speak(f"Good afternoon {USERNAME}")
    elif (hour >= 16) and (hour < 19):
        speak(f"Good Evening {USERNAME}")
    speak(f"I am {BOTNAME}. How may I assist you?")
# Takes Input from User
def take_user_input():
    """Takes user input, recognizes it using Speech Recognition module and converts it into text"""
    
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print('Listening....')
        r.pause_threshold = 1
        audio = r.listen(source)
try:
        print('Recognizing...')
        query = r.recognize_google(audio, language='en-in')
        if not 'exit' in query or 'stop' in query:
            speak(choice(opening_text))
        else:
            hour = datetime.now().hour
            if hour >= 21 and hour < 6:
                speak("Good night sir, take care!")
            else:
                speak('Have a good day sir!')
            exit()
    except Exception:
        speak('Sorry, I could not understand. Could you please say that again?')
        query = 'None'
    return query
if __name__ == '__main__':
    greet_user()
    while True:
        query = take_user_input().lower()
        print(query)

$ python main.py

読んでくれてありがとう。

もともとhttps://iread.gaで公開されました

plainenglish.ioのその他のコンテンツ

提案された投稿

東ヨーロッパの開発者の6つの主な利點

東ヨーロッパの開発者の6つの主な利點

外國企業がロシア、ウクライナ、ベラルーシから開発者を採用しようとしている理由を理解する6年以上、私はシンガポールに本社を置くパートナーと完全に分散したチームでRocketech SoftwareDevelopmentを管理してきました。私たちはIT製品を開発し、2つのサービス形式を開発しています:アウトスタッフと専任チーム。

GPT-3の力

これまでの私のGPT-3探査の包括的な中間報告。継続的に更新されます。

GPT-3の力

ついに!順番待ちリストのないGPT-3。はい、あなたはそれを正しく読みました。

関連記事

GPT-3の力

これまでの私のGPT-3探査の包括的な中間報告。継続的に更新されます。

GPT-3の力

ついに!順番待ちリストのないGPT-3。はい、あなたはそれを正しく読みました。

メッセージングアプリを制御する

メッセージングアプリを制御する

私は混亂に陥る傾向があります。だから私はシステムが好きです。

デザインスプリントを最大限に活用するためのAI製品マネージャーのチェックリスト

優れた製品ですべての利害関係者を満足させる方法

デザインスプリントを最大限に活用するためのAI製品マネージャーのチェックリスト

「デジタル化」、「イノベーション」、「ビッグデータ」などの流行語を生き生きとした収益性の高い製品にするのは困難です。そして通常、失敗するのはテクノロジー自體ではなく、所有者、管理者、クライアント、従業員、そして時には社會の間の連攜です。

英國はメーガン?マークルの取りつかれた、虐待的な元です

英國はメーガン?マークルの取りつかれた、虐待的な元です

メーガン?マークルは正直にそして真に英國から移住しました。今日エレンと一緒に座ったとき、彼女はその島について一度も言及しませんでした。

MORE COOL STUFF

ジョンハムは結婚したことがありますか、そして彼には子供がいますか?

ジョンハムは結婚したことがありますか、そして彼には子供がいますか?

ジョン?ハムは、結婚や交際について非常にプライベートであり、パパラッチの前にパートナーと一緒に現れることはめったにありません。

デュークブルーデビルズバスケットボールコーチのマイク?シャシェフスキーは結婚していますか?

デュークブルーデビルズバスケットボールコーチのマイク?シャシェフスキーは結婚していますか?

今シーズンの終わりにデュークバスケットボールからマイク?シャシェフスキーが引退することで、彼は妻や家族とより多くの時間を過ごすことができます。

ニコラス?ブラウンは「サクセション」からどれくらい背が高いですか?

ニコラス?ブラウンは「サクセション」からどれくらい背が高いですか?

「サクセション」のファンは、グレッグ、別名ニコラス?ブラウンの異常に高い高さに気づかずにはいられません。彼は本當にキャストメンバーの上にそびえ立っていますか?

2021年のホリデーシーズンに向けた「パイオニアウーマン」リードラモンド感謝祭のおかず

2021年のホリデーシーズンに向けた「パイオニアウーマン」リードラモンド感謝祭のおかず

パイオニアウーマンリードラモンドは、感謝祭の準備をするためにここにいます。ここに彼女の最高のおかずのいくつかがあります。

ミニクロスワードをお試しください

ミニクロスワードをお試しください

毎週更新される私たちのミニクロスワードは、私たちのお気に入りのハウスタッフワークスの読みと頭のいい手がかりを組み合わせています!

どれが最も効果的ですか:洗濯ポッド、粉末または液體洗剤?

どれが最も効果的ですか:洗濯ポッド、粉末または液體洗剤?

適切な洗剤を選ぶことを心配することなく、洗濯をすることは十分に悪いことです。では、どちらが最適ですか?それとも重要ですか?

ケンタッキーの青い人々の実話

ケンタッキーの青い人々の実話

ケンタッキー州の田舎に住むFugatesとCombsの家族は、遺伝的寶くじを失いました。どちらも、結婚するにつれて肌が青く見える、まれな劣性形質を共有していました。これの原因は何でしたか?そして、家族はどうなりましたか?

カリフォルニアコンドルの「バージンバース」は種を救うことができますか?

カリフォルニアコンドルの「バージンバース」は種を救うことができますか?

カリフォルニアコンドルを絶滅から救うためのプログラムで、2羽の父親のいないオスのヒナが飼育されています。そのような「処女」の誕生はどのように可能ですか?

#NeverForget:100年前、イーストセントルイスは火事になりました

#NeverForget:100年前、イーストセントルイスは火事になりました

YouTubeのスクリーンショット1917年7月1日、白人男性でいっぱいの車がイリノイ州イーストセントルイスに乗り込みました。

タイラスウォン、有名なバンビアーティスト、106歳で死去

タイラスウォン、有名なバンビアーティスト、106歳で死去

バンビの象徴的な風景とデザインを作成したアーティスト、タイラスウォンは、金曜日に106歳で亡くなりました。彼は、歴史上最も有名な中國系アメリカ人アーティストの1人として遺産を殘していますが、彼自身の物語は差別と偏見。

元司法長官ロレッタ?リンチを調査する上院司法委員會

元司法長官ロレッタ?リンチを調査する上院司法委員會

上院司法委員會のメンバーであるオリンハッチ上院議員(共和黨)、チャールズグラスリー議長(共和黨)およびランキングメンバーのセン。

わずか60年遅れのエドセルへのこの秘密の紹介をご覧ください

わずか60年遅れのエドセルへのこの秘密の紹介をご覧ください

ある時點で、エドセルのこの30分間の秘密のプレリリースプロモーション映畫のナレーターは、「エドセル:フォードモーターカンパニーの自動車の歴史をすでに作っている車です!」と述べています。それは非常に先見の明のある聲明です。エドセルは絶対に自動車の歴史を作りました。

CardiBとOffsetのDaughterKultureがInstagramで美しい新しいブレードを披露

CardiBとOffsetのDaughterKultureがInstagramで美しい新しいブレードを披露

Cardi BとOffsetの3歳の娘、Kultureは、Instagramで彼女の新しい編みこみのヘアスタイルを披露しました。

セレーナ?ゴメスがニックスの試合でキスカムのためにカーラ?デルヴィーニュに頬をつつく

セレーナ?ゴメスがニックスの試合でキスカムのためにカーラ?デルヴィーニュに頬をつつく

「彼女はとても楽しくて、とても冒険的だ」とセレーナ?ゴメスは以前、仲間のカーラ?デルヴィーニュについて語った。

マドンナはジムでボトルからジンを飲む:「今日のトレーニング」

マドンナはジムでボトルからジンを飲む:「今日のトレーニング」

歌手は木曜日に彼女のフィットネスルーチンを変更することにしました

ジェイミー?ドーナンはヘンリー?カヴィルにスーパーマンの役割を失い、スーパーヒーローの役割のためにマーベルに近づいたと言います

ジェイミー?ドーナンはヘンリー?カヴィルにスーパーマンの役割を失い、スーパーヒーローの役割のためにマーベルに近づいたと言います

ジェイミー?ドーナンは、スーパーマンの役割についてオーディションを受けたが、ヘンリー?カヴィルに敗れたことを明らかにした。そして彼はMCUへの參加についてマーベルに話しました。

Languages

野花在线观看免费观看大全-野花视频在线观看免费观看8
国足最新出线概率0.08% 北京冬奥火炬宣传片获金花环奖 速度与激情9 得知母亲出事男子在地铁痛哭 国足战澳大利亚大名单:4归化在列 周冠宇成为中国首位F1车手 安娜贝尔 尚气与十环传奇 胡锡进谈中美元首会晤 红色通缉令 尚气与十环传奇 印度首都准备封城 房价上涨城市创七年新低 拐点来了? 24岁救人牺牲消防员获批为烈士 扫黑风暴 我要我们在一起 意大利错失直接晋级世界杯资格 中美元首会谈重点内容 中国共产党第三个历史决议全文发布 灵媒 意大利错失直接晋级世界杯资格 俄方回应卫星碎片危及国际空间站 中美元首是否达成新共识?中方回应 男子写80页PPT拯救爱情却离婚 动保组织向上饶信州区申请信息公开 许家印为恒大注入超70亿续命资金 动保组织向上饶信州区申请信息公开 千与千寻 意大利错失直接晋级世界杯资格 两个女人 浦发银行回应近3亿存款莫名被质押 罗永浩吐槽苹果文案没文化 大连现超级传播者26人在同一传播链 扫黑风暴 安娜贝尔 中美元首会谈重点内容 长津湖 图兰朵 24岁救人牺牲消防员获批为烈士 房价上涨城市创七年新低 拐点来了? 五个扑水的少年 大连一密接者擅自点外卖聚餐被调查 男子写80页PPT拯救爱情却离婚 #耿直真香哥黑化卖惨# 动保组织向上饶信州区申请信息公开 扫黑风暴 失控玩家 扫黑风暴 许家印为恒大注入超70亿续命资金 外交部回应拜登重申不支持台独 加拿大一枝黄花到底是什么? 中国医生 男子体检血中抽出2升油浆 红色通缉令 大连现超级传播者26人在同一传播链 国际人士热议中共十九届六中全会 俄方回应卫星碎片危及国际空间站 怒火·重案 得知母亲出事男子在地铁痛哭 嘉南传 中美元首是否达成新共识?中方回应 浦发银行回应近3亿存款莫名被质押 斗破苍穹 蜘蛛侠:英雄归来 扫黑风暴 林丹世界排名被正式移除 男子体检血中抽出2升油浆 大连现超级传播者26人在同一传播链 扫黑风暴 林丹世界排名被正式移除 国足战澳大利亚大名单:4归化在列
泽州县| 新沂市| 赣榆县| 石景山区| 包头市| 德江县| 皮山县| 偃师市| 大理市| 鄂托克旗| 高陵县| 大城县| 鸡东县| 镇江市| 天峨县| 贵港市| 桑日县| 靖远县| 濉溪县| 濮阳市| 长顺县| 永福县| 永修县| 宜兴市|