总体而言,我正在尝试实现的是FFT分析的数据记录自动化。现在,我正在使用音频发生器生成恒定的音频,然后记录系统的输出。录制完成后,声音会停止。对整个频域重复此操作。之后,将通过各种分析步骤(例如FFT)处理所有数据。所有这些都是在Python3中完成的
在此过程中,我一直试图使无聊的东西自动化,我想进行手动频率扫描。
我需要的是在持续时间y内产生频率x的音调。启用提示音后,我需要执行代码才能继续进行录音。
到目前为止,在搜索中我发现了winsound。但是,winsound.beep不能与winsound的异步选项一起使用,我想避免使用记录的信号。现在我没主意了。有没有人可以帮助我?
示例代码:
import winsound
winsound.Beep(500,1000)
print('this is not simultaneously printed with the sound playing')
答案 0 :(得分:0)
@furas感谢您的反馈,以及您对使用线程的建议,我已经设法使概念证明有效。我在这里提供反馈和我的基本代码,以防其他人遇到这个问题。 导入线程 导入时间 导入日志 导入winsound
logging.basicConfig(level=logging.DEBUG,
format='(%(threadName)-10s) %(message)s',
)
def makeTone(freq,dur):
logging.debug('Starting Sound with f=%sHz for t=%ss',freq,dur)
winsound.Beep(freq,dur)
logging.debug('Sound stopped')
def recorder():
logging.debug('Startrecording')
time.sleep(3)
logging.debug('Stoprecording')
frequency = 500 #Hz
duration = 5000 #ms
makeTone = threading.Thread(name='makeTone', target=makeTone,args=(frequency, duration))
recorder = threading.Thread(name='recorder', target=recorder)
makeTone.start()
recorder.start()