如何解决Python 3:快速播放不同频率
我有排序动画,我想为访问的每个数据发出声音。到目前为止,我正在使用pyaudio,并且我具有生成WAV数据的功能。 排序完成后,这是零件代码。它将条形变为绿色,并播放从索引0到N的声音。
def finish_sorting():
for x in range(len(array)):
bar_list[x].fill_color(green)
bar_list[x].draw(screen)
Bar.update_bar(pygame)
test_audio.play(array[x] + 100,0.4) # i add offset 100 because smallest data is 50
动画在每个持续时间都会延迟,如果我将持续时间设置得较低,则会发出奇怪/ NG的声音。 播放功能看起来像这样
import pyaudio
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 22050
p = pyaudio.PyAudio()
def play(frequency: float,duration: float):
frames = data_for_freq(frequency,duration) # generate frame data
stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,output=True)
stream.write(frames)
stream.stop_stream()
stream.close()
我也尝试了pyglet模块,但是我只找到直接播放wav文件的功能。像这样
sound_1 = pyglet.resource.media("1kHz.wav",streaming=False)
我可能会为每个频率数据生成自己的wav文件,并使用pyglet播放它,但我认为效率不高。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。