我正在尝试使用 Pygame 的函数来播放正弦波sndarray.make_sound。但是,当我使用这个数组来播放它时:np.sin(2 * np.pi * np.arange(44100) * 440 / 44100).astype(np.float32)其中440是频率,44100是采样率,而是播放响亮、刺耳的噪音。这可以使用pyaudio.PyAudio(),但是我需要一些不会阻止执行的东西。方波也会发生这种情况,但它只是不播放任何内容。我正在使用channels=1formixer.pre_init和mixer.init函数。我怎样才能解决这个问题?如果有帮助的话,我正在使用 Mac。提前致谢!
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
您可以将 numpy 数组直接加载到pygame.mixer.Sound
对象中play
。出现刺耳声音的原因是,当混音器需要 16 位整数样本时,您可能正在向混音器发送 32 位浮点样本。如果要使用 32 位浮点数组,则必须将size
混音器的 init 函数的参数设置为 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))
添加回答
举报
0/150
提交
取消