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 (将#修改为@)