gpt4 book ai didi

python - 如何同步python线程的开始时间?

转载 作者:行者123 更新时间:2023-12-02 22:48:12 26 4
gpt4 key购买 nike

我想测量信号的时间延迟。为此,将信号放置在扬声器上,然后估计麦克风捕获信号的延迟。延迟预计在毫秒范围内,因此至关重要的是要同时启动扬声器信号和测量。
我的问题是,是否可以通过使用线程来实现:

def play_sound():
# play sound

def record():
# start recording


if __name__ == '__main__':
t1 = threading.Thread(target=play_sound())
t2 = threading.Thread(target=record())

t1.start()
t2.start()
还是有更好的方法?

最佳答案

我将首先启动记录线程,并在麦克风捕获的信号中寻找第一个峰值。这将告诉您在录制开始后多少毫秒内检测到第一个声音。为此,您可能需要知道mic etc-here的采样率是一个很好的起点。
时间线是这样的

---- recording start ------- playback start -------- sound first detected ----

You want to find out how many ms after you start recording a sound was picked up ((first_peak - recording_start) in the code below), and then subtract the time it took to start the playback ((playback_start - recording_start) below)

Here's a rough code outline

from datetime import datetime

recording_start, playback_start, first_peak = None, None, None

def play_sound():
nonlocal playback_start
playback_start = datetime.now()

def record():
nonlocal recording_start, first_peak
recording_start = datetime.now()
first_peak = find_peak_location_in_ms() # implement this


Thread(target=record()).start() # note recording starts first
Thread(target=play_sound()).start()

# once the threads are finished
delay = (first_peak - recording_start) - (playback_start - recording_start)
PS其他答案之一正确指出您需要担心全局解释器锁定。您可以通过使用c级API来录制/播放声音而不会阻塞其他线程,从而绕过它,但是您可能会发现Python不适合该工作

关于python - 如何同步python线程的开始时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64239939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com