如何使用Python 3播放非整数Hz频率?解决winsound兼容问题
解决winsound无法播放非整数频率的问题
winsound的Beep()方法要求频率参数必须是整数,直接传入计算得到的浮点数值会触发错误。你只需要把每个频率值四舍五入取整(或按需用int()截断小数部分),就能正常播放了。
修改后的代码如下:
import winsound a4_frequency_hz = 440 # 计算十二平均律频率并转为整数 range_of_pitches = [round(2**(i/12) * a4_frequency_hz) for i in range(13)] for pitch in range_of_pitches: winsound.Beep(pitch, 1000)
如果需要更高精度的音频播放(比如保留浮点频率的原始精度),可以考虑使用pygame或pyaudio这类专业音频库,但如果只是简单的蜂鸣需求,上面的方法完全够用。
内容的提问来源于stack exchange,提问作者birdfromejipt
相关产品推荐
相关产品推荐

