【中編】音声メモアプリ-要件定義からPythonアプリ作成まで

音声メモアプリ-要件定義からPythonアプリ作成 ChatGPT

第4章:ChatGPTでPythonコードを生成

コード生成

  • 作成した要件をもとに実際にChatGPTに入力してコードを作成してみましょう。
    「先ほどの要件+Pythonのコードを作成して」と入力するだけです。
    実際に生成をした結果が以下の通りです。
import TkEasyGUI as eg
import speech_recognition as sr
import threading

text_log = ""           # 認識結果を格納
stop_event = threading.Event()
recording_thread = None

def recognize_microphone():
    global text_log
    recognizer = sr.Recognizer()
    mic = sr.Microphone()

    with mic as source:
        recognizer.adjust_for_ambient_noise(source)
        eg.print("🎤 音声認識を開始しました...\n")
        while not stop_event.is_set():
            try:
                audio = recognizer.listen(source, timeout=1, phrase_time_limit=5)
                text = recognizer.recognize_google(audio, language="ja-JP")
                text_log += text + "\n"
                eg.print(text)
            except sr.WaitTimeoutError:
                continue
            except sr.UnknownValueError:
                eg.print("(認識できませんでした)\n")
            except Exception as e:
                eg.print(f"[エラー] {e}")
                break

def start_recording():
    global recording_thread
    stop_event.clear()
    recording_thread = threading.Thread(target=recognize_microphone, daemon=True)
    recording_thread.start()

def stop_recording():
    stop_event.set()
    eg.print("🔇 録音を停止しました。\n")

def save_text():
    if not text_log.strip():
        eg.alert("保存する内容がありません。")
        return
    file_path = eg.saveas("保存ファイル名を入力", defaultext=".txt")
    if file_path:
        with open(file_path, "w", encoding="utf-8") as f:
            f.write(text_log)
        eg.alert("✅ 保存しました!")

def main():
    while True:
        choice = eg.select(
            "音声メモ帳メニュー",
            ["録音開始", "録音停止", "保存", "終了"]
        )

        if choice == "録音開始":
            start_recording()
        elif choice == "録音停止":
            stop_recording()
        elif choice == "保存":
            save_text()
        elif choice == "終了":
            stop_event.set()
            break

if __name__ == "__main__":
    main()

コードの実行

ここでは上記のコードを実行する手順を説明いたします。
Pythonのインストールについてはこちらの記事を参考にしてください。

  1. Pyhton IDLEの起動
    Winキーを押し、検索窓からIDLEと打ち込んでください。
    IDLE(Python3.10)を選択して起動します。
    IDLE検索
    起動すると以下の画面が表示されます。
    IDLE起動画面
    File>New Fileを押す。
    New Filleの作成
  2. コードの貼り付け
    起動したエディタにコードを貼り付けて、File>Save asで保存してください。
    エディタ
  3. コードの実行
    F5を押すとコードが実行されます。実行画面がこちらです。
    起動画面

ライブラリのインストール

  • おそらく、初めてこのコードを使用しようとするとこんなエラーが発生します。
    import speech_recognition as sr
    ModuleNotFoundError: No module named ‘speech_recognition’

    こういったものはライブラリがインストールされていないことで発生します。
    この場合にはspeechrecognitionというライブラリをインストールする必要があります。
    CMDにて以下を実行してください。
    詳細についてはこちら(【ライブラリ紹介】Pythonのインストール、導入手順)
python -m pip install SpeechRecognition 
  • ※ここではspeechrecognition以外にもPySimpleGUIとpyaudioというライブラリのインストールを含めて設定しています。
    こういったエラーが出たときの対処法
    まずはChatGPTにエラーログを送りましょう。
    同じようにCMDにて同様の指令を入力する必要があることを教えてくれます。

アプリの実行

  • 起動したあとのGUIがこちらです。なんとなくうまくできていそう。
    音声メモ帳アプリ

    じゃあ、録音開始ポチっと。。。。。
    音声が認識されません。私の環境では外付けのマイクをつけているのですが、このアプリでは標準のマイクを使用してしまっている模様。
    録音画面

    ここで重要なキーワードとなるのが、非機能要件というものです。

    要件定義では二つの要件、機能要件と非機能要件なるものが存在しているのです。
    少し難しく感じるかもしれませんが、実は中身はとても簡単です。
    次回からは、非機能要件と機能要件を改めて定義しなおして、アプリの完全版作成にトライしていこうと思います。
  • ご質問、ご要望などはこちらから

    コメント

    タイトルとURLをコピーしました