前提・実現したいこと
startボタンでpyaudioで音声を取り込み、リアルタイム表示する。 stopボタンでpyaudioでの音声取り込みを終了する。
発生している問題・エラーメッセージ
threadingにて、並列処理を試みたが、セグメントエラーがでて実行できない。
該当のソースコード
import pyaudio import tkinter as tk import matplotlib.pyplot as plt import numpy as np from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.animation import FuncAnimation import threading def start_b(): thread1 = threading.Thread(target=start_func) thread1.start() def start_func(): flag =True while flag == True: input = stream.read(8820, exception_on_overflow=False) ndarray = np.frombuffer(input, dtype='int16') ax.cla() ax.plot(ndarray) canvas.draw() frame.after(200) def stop_b(): thread2 = threading.Thread(target=stop_func) thread2.start() def stop_func(): flag =False frame.after(200) stream.stop_stream() stream.close() P.terminate() root = tk.Tk() root.title("abc") root.geometry("800x700") ##### guiの用意 frame = tk.Frame(root) ##### frameの用意 fig = plt.figure() ax = fig.add_subplot(1,1,1) canvas = FigureCanvasTkAgg(fig, master=frame) ##### frameにcanvasを置く canvas.draw() ##### canvasを書く? canvas.get_tk_widget().pack() ##### canvasを配置 frame.grid(row=0, column=0, columnspan=10, rowspan=5, padx=10, pady=10) ##### frameを配置 start = tk.Button(root, text='Start', command=start_b) start.grid(row=6, column=10, columnspan=1, rowspan=1, padx=10, pady=10) stop = tk.Button(root, text='Stop', command=stop_b) stop.grid(row=7, column=10, columnspan=1, rowspan=1, padx=10, pady=10) P = pyaudio.PyAudio() stream = P.open(format=pyaudio.paInt16, channels=1, rate=44100, frames_per_buffer=8820, input=True, output=False) root.mainloop()
試したこと
補足情報(FW/ツールのバージョンなど)
python3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/14 01:06