python库中可以用来录音的基本上就是pyaudio(如何还有其他的库,请高手指路),但笔者在实际录音过程中无法预知录音时长,pyaudio需要手动设置录音时长,有时设置时间过长需要在实际录音完成之后还需要等待设置时间结束,无法动态结束录音,十分不方便,尤其是在gui编程中。
通过一段摸索,终于通过多线程和设置标志位的方法,间接实现随时录音,随时结束录音,不用多说直接上代码。
#-*-coding:UTF-8-*-
# Author : Blake
import threading, time, pyaudio, wave, sys
from PyQt5.QtWidgets import *
signal = 'y' # 创建标志位
def record():
global signal
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 2000 # 理论上可以设置任意数值,一定要足够大于你实际工作中需要录音的最大时长
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,