実現したいこと
tkinterを使って、googleのspeech_recognitionを使って、メモリ上にオブジェクト(インスタンス)を保存して、textに変換したい。ただ実行した場合、4秒くらい数行はテキスト化されるのですが、「プログラムは応答していません」となり、「pythonは応答していません」となります。再度ボタンを押して追記されるのですが、それも4秒ほどで止まります。原因をどのように見たらいいかがわかりません。また最初は(pyaudioで)wavファイルとして、SSDに保存して、60秒の録音ファイルをtextにすることが出来ました。その時に60秒の音声をテキスト化するのに10分ほどかかりました。
今回の主な失敗の要因として考えられるのは次のうち二つで、
①変数作成時に必要メモリが決まるため、割り当てられた後に増えていくaudioインスタンスが割り当てられたメモリ量を超えるから?(調べたらメモリは50byte程度作成されると書かれていましたが、自動で変更されるものではないのか?)
②処理に限界があり、どこかにデフォルトで設定してあるtimeoutの秒数を超えたから?
一応タスクマネージャーは見ていてcpuの使用率は70%ほどでした。
前提
私のパソコンのスペックはcpuがceleron 3865uで1.8ghz、2コア2スレッドと低いスペックです。
メモリは8ギガです。
該当のソースコード
import tkinter as tk import speech_recognition as sr # Create a new window root = tk.Tk() root.title("議事録アプリ") root.geometry("400x300") # Create a recognizer object r = sr.Recognizer() # Function to convert speech to text def speech_to_text(): with sr.Microphone() as source:#引数なしで既定のデバイスが使用されます # Adjust for ambient noise r.adjust_for_ambient_noise(source)#引数durationを設定するとnoise関係の時間設定できる # Listen for audio audio = r.listen(source)#audioこれ変数に持たしてるけどメモリに大容量保存できるのか? # Convert audio to text try: text = r.recognize_google(audio, language='ja-JP') return text except: return "認識できませんでした" # Function to close the window def close_window(): root.destroy() # Create a button to start speech-to-text conversion button = tk.Button(root, text="音声入力開始", command=lambda: text_box.insert(tk.END, speech_to_text() + "\n")) button.pack(pady=10) # Create a text box text_box = tk.Text(root, height=10, width=50) text_box.pack() # Create a button to close the window exit_button = tk.Button(root, text="終了", command=close_window) exit_button.pack() # Start the main loop root.mainloop()
試したこと、補足情報
それぞれの関数内を見てみたのですが、時間設定をしているのが一つだけでした。
この書き方で"音声入力開始"ボタン側に、終了時間を明示してないですが、
書き方的にはまずいことはわかっています。下手をすれば容量をいっぱい食い、圧迫するような書き方ですが、
本当は終了ボタンclose_windowで"音声入力開始"buttonを終了させたい予定です。
ご教授のほどをよろしくお願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。