LoginSignup
1
2

More than 1 year has passed since last update.

PythonでALEXAを作りました

Last updated at Posted at 2022-07-28

1.はじめに

AmazonのAlexaをpythonで作りたいと思い、試行錯誤を繰り返し、ようやく出来上がりました。
オリジナルのAlexaとはほど遠いですが、条件分岐を記述することである程度の質問には答えてくれました。
これからも改良を続けていきます。

2.環境

windows10

3.準備

Speech_recognitionのインストール

$pip install speechRecognition

pyttsx3のインストール

$pip install pyttsx3

pywhatkitのインストール


$pip install pywhatkit

wikipediaのインストール

$pip install wikipedia

4.実装

main.py
import speech_recognition as sr
import pyttsx3
import pywhatkit
import wikipedia

recognizer = sr.Recognizer()
Bob = pyttsx3.init()
voices = Bob.getProperty('voices')
Bob.setProperty('voice', voices[1].id)

'''talk関数を記述することで、入力したテキストに対しコンピューターが話かけます。'''
def talk(text):
    Bob.say(text)
    Bob.runAndWait()
'''take_command関数に話しかけた内容に対してソースとして作成する'''
def take_command():
    try:
        with sr.Microphone() as source:
            print('Listening.....')
            voice = recognizer.listen(source)
            command = recognizer.recognize_google(voice)
            command = command.lower()
            
    except:
        pass
    return command
'''run_alexa関数に受け取った内容をもとに条件に応じて処理を行います'''
def run_alexa():
    command = take_command()
    print(command)
    if 'play' in command:          
        song = command.replace('play', '')
        talk('playing' + song)
        pywhatkit.playonyt(song)#「play 〜」と話すと、それに対応した動画が開きます。
    elif 'who' in command:
        person = command.replace('who', '')
        info = wikipedia.summary(person, 5)
        talk(info)
        print(info) #「who is〜」と話しかけると、wikiに基づいた情報を話してくれたり、ターミナルに文字を起こします
    else:
        talk('please say the command again.....')#話している内容が聞き取れない場合は、もう一度話して頂くように要求します

while True:
    run_alexa()




5.難しかったこと

コンピュータに音声を認識させる為、実装に必要なライブラリーpywhatkitのインストールが、開発環境がことなったせいなのか、手間が掛かりました。
こうした経験から、今後は仮想環境でアプリ開発をしていこうと思います。

以下のリンクから実装動画を視聴できます。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2