音声でWindowアプリを起動しよう

b-men
2024-11-28
2024-11-28

めんどくさがり屋の私はマウスやキーボードを使ってWordやExcelを探したり、入力する作業も極力なくしていきたいと思っている今日この頃、、

リモートワークをしている利点を生かして「ワード」と喋るだけでWordを立ち上げればいいんだと考えたので、その方法を書いていこうと思います。

方法はいたって単純でPythonと音声認識ライブラリを使用します。

〇使用ライブラリ
・speech_recognition:音声認識を行い文字おこしをする
pyaudio:マイクの音声入力をする

※ pyaudioはPython 3.9までのサポートでそれ以降バージョンでは使えないようです。他のライブラリを使用して同じことができるかは確認中、、

〇実装したコードはこんな感じ
import speech_recognition as sr
import os

commands = {
    "teams": "start ms-teams:",
    "メモ帳": "notepad",
    "電卓": "calc",
    "ペイント": "mspaint",
    "エクセル": "start excel",
    "パワポ": "start powerpnt",
    "ワード": "start winword",
    "アウトルック": "start outlook",
    "Outlook": "start outlook",
    "エクスプローラー": "explorer",
}

def recognize_and_run():
    recognizer = sr.Recognizer()
    mic = sr.Microphone()
    listening = True

    with mic as source:
        recognizer.adjust_for_ambient_noise(source)

        while True:
            if not listening:
                audio = recognizer.listen(source)
                try:
                    command = recognizer.recognize_google(audio, language="ja-JP")
                    if "再開" in command:
                        listening = True
                        print("再開します")
                        continue
                    elif "終了" in command:
                        print("終了します")
                        break
                except sr.UnknownValueError:
                    continue
                except sr.RequestError as e:
                    print(f"予期せぬエラーが発生 {e}")
                    continue

            # 音声をリスニングして取得
            audio = recognizer.listen(source)

            try:
                # 音声をテキストに変換
                command = recognizer.recognize_google(audio, language="ja-JP")
                print("聞き取り結果:", command)

                # 一時停止・再開のキーワードを確認
                if "停止" in command:
                    listening = False
                    print("停止します")
                    continue
                elif "終了" in command:
                    print("終了します")
                    break

                # 辞書からコマンドを取得して実行
                if command in commands:
                    print(f"起動します: {command}")
                    os.system(commands[command])

            except sr.UnknownValueError:
                continue
            except sr.RequestError as e:
                    print(f"予期せぬエラーが発生 {e}")

if __name__ == "__main__":
    recognize_and_run()

実施していることは

  • audio = recognizer.listen(source)
    ⇒ マイクに発言した音声を取得。
  • command = recognizer.recognize_google(audio, language="ja-JP")
    ⇒ 
    音声をテキストに変換
  • os.system(commands[command])
    ⇒ テキストと定数に指定している文言を突合して、コマンド実行

と、以外とやってみるとすぐできるものでした。

他にも作業効率化の方法があれば、どんどん考えていきたいと思います!