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のインストールが、開発環境がことなったせいなのか、手間が掛かりました。
こうした経験から、今後は仮想環境でアプリ開発をしていこうと思います。
以下のリンクから実装動画を視聴できます。
pythonでAlexa作りました。
— つばめ (@ZnRKT46JvWKbHDW) August 7, 2022
今回はjazzを流してもらいました。
しっかり話した内容は理解しています。 pic.twitter.com/MzhVkAUuvy