在代码中,RecordThread是一个继承自QThread的线程类,用于录制音频。
线程内部使用PyAudio打开麦克风输入流,循环读取音频数据,
并将数据通过update_signal信号发送给主线程。主线程可以在update函数中处理音频数据,
例如显示录音波形。当用户点击停止按钮时,主线程会调用requestInterruption方法通知录音线程停止录音。
在MainWindow类中,toggle_recording方法用于切换录音状态。
如果当前未在录音,则创建一个RecordThread对象并启动线程;
如果当前正在录音,则调用requestInterruption方法通知录音线程停止录音。
当录音线程发送音频数据时,主线程会调用update方法更新UI。
当用户点击退出按钮时,主线程会检查录音状态并调用requestInterruption方法停止录音线程,
然后退出应用程序。
import sys
import pyaudio
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
import wave
# 在上述代码中,RecordThread是一个继承自QThread的线程类,用于录制音频。
# 线程内部使用PyAudio打开麦克风输入流,循环读取音频数据,
# 并将数据通过update_signal信号发送给主线程。主线程可以在update函数中处理音频数据,
# 例如显示录音波形。当用户点击停止按钮时,主线程会调用requestInterruption方法通知录音线程停止录音。
# 在MainWindow类中,toggle_recording方法用于切换录音状态