mieki256's diary



2024/09/18(水) [n年前の日記]

#3 [prog] AIにPythonスクリプトを作成してもらえないか実験

昨日も作業したのだけど、Microsoft Copilot に、Pythonスクリプトを作成してもらえないか試してた。

昨日は何度も修正要求を出して目的のスクリプトに辿り着いたけど、そのあたりをまとめたら以下のプロンプトになった。コレを渡したら、最初からそれらしいスクリプトを生成してくれた。

ちなみに、フツーはEnterを叩くと即座に送信してしまうので改行できないけれど、Shift+Enterで改行できるらしい。あるいは、まとめてコピーして貼り付けるだけでも改行は反映される模様。

以下に示す仕様でPythonスクリプトを作成してください。
・ tkinterとwinsoundを使った、ウインドウサイズが300x140のGUIアプリです。
・ wavファイルをwinsoud.SND_LOOP指定でループ再生します。
・ スレッドは使いません。
・ デフォルトのwavファイル名は「speakertest.wav」です。
・ アプリを起動すると自動でwavが再生されます。
・ ボタンをクリックすると再生を停止してボタン表示が「Play」になります。
・ 再度ボタンをクリックすると再生を開始してボタン表示が「Stop」になります。
・ ウインドウ上にwavファイル名が表示されます。
・ ファイル選択ボタンをクリックするとファイル選択ダイアログが開いてwavファイルを選択できます。
・ Enterキーかスペースキーを押すと再生または停止になります。
・ ESCキーかQキーを押すとアプリが終了します。
・ これらの処理をクラスを使わずに記述します。

生成結果は以下。
import tkinter as tk
from tkinter import filedialog
import winsound

# デフォルトのwavファイル名
wav_file = "speakertest.wav"

# 再生中かどうかのフラグ
is_playing = True


# 再生を開始する関数
def play_sound():
    global is_playing
    winsound.PlaySound(wav_file, winsound.SND_LOOP | winsound.SND_ASYNC)
    button.config(text="Stop")
    is_playing = True


# 再生を停止する関数
def stop_sound():
    global is_playing
    winsound.PlaySound(None, winsound.SND_PURGE)
    button.config(text="Play")
    is_playing = False


# ボタンがクリックされたときの処理
def toggle_sound():
    if is_playing:
        stop_sound()
    else:
        play_sound()


# ファイル選択ダイアログを開く関数
def select_file():
    global wav_file
    file_path = filedialog.askopenfilename(filetypes=[("WAV files", "*.wav")])
    if file_path:
        wav_file = file_path
        label.config(text=wav_file)
        if is_playing:
            play_sound()


# キーが押されたときの処理
def on_key_press(event):
    if event.keysym in ["Return", "space"]:
        toggle_sound()
    elif event.keysym in ["Escape", "q"]:
        root.destroy()


# ウインドウの設定
root = tk.Tk()
root.title("WAV Player")
root.geometry("300x140")

# ラベルの設定
label = tk.Label(root, text=wav_file)
label.pack(pady=10)

# ボタンの設定
button = tk.Button(root, text="Stop", command=toggle_sound)
button.pack(pady=10)

# ファイル選択ボタンの設定
file_button = tk.Button(root, text="Select File", command=select_file)
file_button.pack(pady=10)

# キーイベントのバインド
root.bind("<KeyPress>", on_key_press)

# アプリ起動時に再生を開始
play_sound()

# メインループの開始
root.mainloop()

コメントで何をしてるか解説してくれているし、イイ感じかもしれない。プロンプト次第で生成結果が結構変わるのだな…。

余談。「すげえ。これならもうプログラマー要らねえじゃん」と言い出す人が出てきそうだけど、Python も tkinter も winsound もプログラマーが作ってくれているからこうして呼び出して利用できるわけで…。それに今回の事例に限って言えば、どのモジュール(ライブラリ)を使うのか、どのオプションを使うのか、そこまで逐一指示しないと、音が鳴り続けて止め方すら分からないダメダメなスクリプトを生成してきたので…。

やはり、ある程度分かってる人が ―― プログラムを書ける程度の知識を持ってる人ならコレを使ってちょっと楽ができそうかも、みたいな状況かなと。Copilot = 副操縦士、という名称はなんだか上手い気がする。

以上です。

過去ログ表示

Prev - 2024/09 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project