【Python】第9章第12回:スマートスピーカーアプリ開発
Warning: preg_match(): Compilation failed: regular expression is too large at offset 37624 in /home/wp769435/a-mun.com/public_html/wp-content/plugins/easy-table-of-contents/easy-table-of-contents.php on line 1806

本記事では、Pythonを活用したスマートスピーカーアプリの開発について解説します。音声認識や音声合成を利用し、独自のアプリを構築する方法を詳しく学べます。
0. 記事の概要
この記事を読むメリット
- 音声認識の基礎:Pythonで音声をテキストに変換する方法が理解できます。
- アプリ開発スキルの向上:音声コマンドを活用したアプリを構築可能になります。
- 実践的スキル:音声合成や自動化に応用できる技術を学べます。
この記事で学べること
- スマートスピーカーアプリの基本構造
- 音声認識・音声合成ライブラリの使い方
- 簡単な音声コマンドアプリの実装例
1. スマートスピーカーアプリ開発の基本構造

1.1 スマートスピーカーの仕組み
- 音声認識の基礎:Pythonで音声をテキストに変換する方法が理解できます。
- アプリ開発スキルの向上:音声コマンドを活用したアプリを構築可能になります。
- 実践的スキル:音声合成や自動化に応用できる技術を学べます。
この記事で学べること
- スマートスピーカーアプリの基本構造
- 音声認識・音声合成ライブラリの使い方
- 簡単な音声コマンドアプリの実装例
1. スマートスピーカーアプリ開発の基本構造

1.1 スマートスピーカーの仕組み

1.1 スマートスピーカーの仕組み
スマートスピーカーアプリは、音声認識、コマンド解析、音声合成の3つの主要なステップで構成されています。
- 音声認識: ユーザーの音声をテキストに変換。
- コマンド解析: 音声内容を解析し、適切なアクションを実行。
- 音声合成: 結果を音声でユーザーに返答。
1.2 使用するライブラリ
以下のPythonライブラリを使用します。
- speech_recognition: 音声認識用。
- pyttsx3: 音声合成用。
- playsound: 音声ファイルの再生。
2. Pythonを使った音声認識とアプリ作成

2.1 基本コード例:音声をテキストに変換
# 必要なライブラリをインポート
import speech_recognition as sr # 音声認識ライブラリ
# 音声認識インスタンスを作成
recognizer = sr.Recognizer()
# マイクから音声を取得
with sr.Microphone() as source:
print("音声を入力してください...")
audio = recognizer.listen(source) # 音声データを取得
# 音声をテキストに変換
try:
text = recognizer.recognize_google(audio, language="ja-JP") # 日本語で認識
print(f"認識結果: {text}")
except sr.UnknownValueError:
print("音声を認識できませんでした。")
2.2 音声合成の実装
# 音声合成ライブラリをインポート
import pyttsx3
# エンジンを初期化
engine = pyttsx3.init()
# テキストを音声で出力
engine.say("こんにちは!スマートスピーカーへようこそ。")
engine.runAndWait()
動作解説
- speech_recognition: 音声データをGoogle APIを使ってテキストに変換します。
- pyttsx3: 音声合成エンジンでテキストを音声に変換します。
3. 簡単なスマートスピーカーアプリの構築

3.1 基本アプリのコード例
# 簡単なスマートスピーカーアプリ
import speech_recognition as sr
import pyttsx3
# 音声認識と合成エンジンを初期化
recognizer = sr.Recognizer()
engine = pyttsx3.init()
def respond(text):
print(f"応答: {text}")
engine.say(text)
engine.runAndWait()
with sr.Microphone() as source:
print("音声を入力してください...")
audio = recognizer.listen(source)
try:
command = recognizer.recognize_google(audio, language="ja-JP")
print(f"認識結果: {command}")
if "天気" in command:
respond("今日の天気は晴れです。")
elif "時間" in command:
respond("現在の時間は午後3時です。")
else:
respond("すみません、わかりませんでした。")
except sr.UnknownValueError:
respond("音声を認識できませんでした。")
動作解説
- マイクから音声を入力し、Google APIでテキストに変換します。
- 認識したコマンドに基づき、音声で応答します。
4. 練習問題

# 必要なライブラリをインポート
import speech_recognition as sr # 音声認識ライブラリ
# 音声認識インスタンスを作成
recognizer = sr.Recognizer()
# マイクから音声を取得
with sr.Microphone() as source:
print("音声を入力してください...")
audio = recognizer.listen(source) # 音声データを取得
# 音声をテキストに変換
try:
text = recognizer.recognize_google(audio, language="ja-JP") # 日本語で認識
print(f"認識結果: {text}")
except sr.UnknownValueError:
print("音声を認識できませんでした。")
2.2 音声合成の実装
# 音声合成ライブラリをインポート
import pyttsx3
# エンジンを初期化
engine = pyttsx3.init()
# テキストを音声で出力
engine.say("こんにちは!スマートスピーカーへようこそ。")
engine.runAndWait()
動作解説
# 音声合成ライブラリをインポート
import pyttsx3
# エンジンを初期化
engine = pyttsx3.init()
# テキストを音声で出力
engine.say("こんにちは!スマートスピーカーへようこそ。")
engine.runAndWait()
- speech_recognition: 音声データをGoogle APIを使ってテキストに変換します。
- pyttsx3: 音声合成エンジンでテキストを音声に変換します。
3. 簡単なスマートスピーカーアプリの構築

3.1 基本アプリのコード例
# 簡単なスマートスピーカーアプリ
import speech_recognition as sr
import pyttsx3
# 音声認識と合成エンジンを初期化
recognizer = sr.Recognizer()
engine = pyttsx3.init()
def respond(text):
print(f"応答: {text}")
engine.say(text)
engine.runAndWait()
with sr.Microphone() as source:
print("音声を入力してください...")
audio = recognizer.listen(source)
try:
command = recognizer.recognize_google(audio, language="ja-JP")
print(f"認識結果: {command}")
if "天気" in command:
respond("今日の天気は晴れです。")
elif "時間" in command:
respond("現在の時間は午後3時です。")
else:
respond("すみません、わかりませんでした。")
except sr.UnknownValueError:
respond("音声を認識できませんでした。")
動作解説
- マイクから音声を入力し、Google APIでテキストに変換します。
- 認識したコマンドに基づき、音声で応答します。
4. 練習問題

# 簡単なスマートスピーカーアプリ
import speech_recognition as sr
import pyttsx3
# 音声認識と合成エンジンを初期化
recognizer = sr.Recognizer()
engine = pyttsx3.init()
def respond(text):
print(f"応答: {text}")
engine.say(text)
engine.runAndWait()
with sr.Microphone() as source:
print("音声を入力してください...")
audio = recognizer.listen(source)
try:
command = recognizer.recognize_google(audio, language="ja-JP")
print(f"認識結果: {command}")
if "天気" in command:
respond("今日の天気は晴れです。")
elif "時間" in command:
respond("現在の時間は午後3時です。")
else:
respond("すみません、わかりませんでした。")
except sr.UnknownValueError:
respond("音声を認識できませんでした。")
動作解説
以下の課題に挑戦してみましょう。
- 「ニュース」コマンドを追加し、ランダムなニュースを応答させてください。
- 音声合成の速度や声の種類を変更する機能を実装してください。
5. 練習問題の解答と解説
問1の解答例
# ニュースコマンドの実装
import random
news_list = ["ニュース1", "ニュース2", "ニュース3"]
if "ニュース" in command:
news = random.choice(news_list)
respond(f"今日のニュース: {news}")
問2の解答例
# 音声合成の設定変更
engine.setProperty("rate", 150) # 音声速度を設定
engine.setProperty("voice", voices[1].id) # 別の声に変更
6. まとめ
# ニュースコマンドの実装
import random
news_list = ["ニュース1", "ニュース2", "ニュース3"]
if "ニュース" in command:
news = random.choice(news_list)
respond(f"今日のニュース: {news}")
問2の解答例
# 音声合成の設定変更
engine.setProperty("rate", 150) # 音声速度を設定
engine.setProperty("voice", voices[1].id) # 別の声に変更
6. まとめ
# 音声合成の設定変更
engine.setProperty("rate", 150) # 音声速度を設定
engine.setProperty("voice", voices[1].id) # 別の声に変更
本記事では、Pythonを使ったスマートスピーカーアプリの開発について解説しました。音声認識や音声合成を組み合わせることで、便利なアプリを簡単に作成できます。ぜひ、独自の機能を追加してオリジナルのアプリを作ってみてください。