我正在尝试使用 Pygame 播放正弦波sndarray.make_sound
功能。但是,当我使用这个数组来播放它时:
np.sin(2 * np.pi * np.arange(44100) * 440 / 44100).astype(np.float32)
where 440
是频率并且44100
是采样率,而是播放响亮、刺耳的噪音。这可以使用pyaudio.PyAudio()
,但是我需要一些不会阻止执行的东西。方波也会发生这种情况,但它只是不播放任何内容。我在用着channels=1
为了mixer.pre_init
and mixer.init
功能。
我怎样才能解决这个问题?如果有帮助的话,我正在使用 Mac。提前致谢!
您可以将 numpy 数组直接加载到pygame.mixer.Sound对象和play它。出现刺耳声音的原因是,当混音器需要 16 位整数样本时,您可能正在向混音器发送 32 位浮点样本。如果要使用 32 位浮点数组,则必须设置size
混频器初始化函数的参数为32:
import pygame
import numpy as np
pygame.mixer.init(size=32)
buffer = np.sin(2 * np.pi * np.arange(44100) * 440 / 44100).astype(np.float32)
sound = pygame.mixer.Sound(buffer)
sound.play(0)
pygame.time.wait(int(sound.get_length() * 1000))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)