import time from ctypes import * # 在此添加需要在多媒体定时器中执行的程序 def _timer_callback(uTimerID, uMsg, dwUser, dw1, dw2): """ Callback function :param uTimerID: 计时器的标识符。该标识符由timeSetEvent函数返回。 :param uMsg: 保留。 :param dwUser: 为timeSetEvent函数的dwUser参数指定的值。 :param dw1: 保留。 :param dw2: 保留。 """ # 输出毫秒时间戳 print(time.time() * 1000) # 导入动态链接库 _winmm = windll.LoadLibrary('winmm.dll') # 定义传入多媒体定时器的回调函数 _cb = CFUNCTYPE(c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_void_p)(_timer_callback) """ UDelay 事件延迟,以毫秒为单位。 如果该值不在计时器支持的最小和最大事件延迟范围内,则该函数返回错误。 uResolution 计时器事件的分辨率,以毫秒为单位。 分辨率随着值的减小而增加;分辨率为0表示周期性事件应以尽可能高的精度发生。 但是,为了减少系统开销,您应该使用适合您的应用程序的最大值。 lpTimeProc 指向回调函数的指针,该回调函数在单个事件到期时调用一次,或在周期性事件到期时定期调用。 如果fuEvent指定TIME_CALLBACK_EVENT_SET或TIME_CALLBACK_EVENT_PULSE标志,则lpTimeProc参数被解释为事件对象的句柄。 该事件将在单个事件完成时设置或触发,或在周期性事件完成时定期设置或触发。 对于fuEvent的任何其他值,lpTimeProc参数是指向LPTIMECALLBACK类型的回调函数的指针。 dwUser 是否用户提供回调数据 fuEvent 计时器事件类型 0 单次 1 定时 """ # 使用timeSetEvent创建定时器 _timerId = _winmm.timeSetEvent(5, 1, _cb, 0, 1) time.sleep(1) _winmm.timeKillEvent(_timerId)
pip3 install pywin32 from win32com.client import Dispatch speaker = Dispatch("SAPI.SpVoice") # 设置语速,区间[-10, 10] speaker.Rate = 5 # 设置音量,区间[0, 100] speaker.Volume = 100 speaker.Speak("你好,世界!", 0) 同步 speaker.Speak("Hello World!", 1) 异步 speaker.Speak("", 2) 阻断异步,可以用于中断上一次异步朗读