gpt4 book ai didi

python-3.x - 在 Python 的 sounddevice 模块中使用 Stream 方法的基本音调转换?

转载 作者:行者123 更新时间:2023-12-02 23:03:13 25 4
gpt4 key购买 nike

我真的不了解有关如何实现 Sounddevice Stream 方法的正确格式或代码结构。我想创建一个基本缓冲区,它几乎实时地写入要在回调中读取的数组数据。我希望能够通过与流集成的线程查询来更改声波的频率。我正在尝试了解基本 API 以及输入到输出如何通过 Sounddevice 进行流式处理。

https://python-sounddevice.readthedocs.io/en/0.3.12/api.html

我对这个 API 缺乏了解,让我不知道从哪里开始。这只是为了学习声音处理并将效果应用到没有任何可听截止的连续声音,有点像 Theremin。

最佳答案

因此,在大量阅读 API 和一些 euroscipy 视频之后,我找到了 sounddevice (portaudio fork) 流方法的正确格式。我还学习了一些线程和队列的基本知识来创建一个几乎实时的基本音高更改器(mutator)。音高移位器将需要更改并使用旋钮实现。还需要提高缓冲速度以考虑实时性。希望这可以帮助任何想要轻松地操纵声音的人!

def waveform(q):

with sd.Stream(samplerate=RATE,blocksize=CHUNK,dtype='int32',latency='low',callback=None) as s:

sps = 44100
wave = signal.square
t = .3
atten = .015
while True:
i = q.get()
freq = i
waveform = wave(2*np.pi*(np.arange(t*sps))*freq/sps)
waveform_quiet = waveform*atten
wave_int = waveform_quiet * 2147483647
s.write(np.ascontiguousarray(wave_int, np.int32))

q=Queue()
q.put(i)

p = Thread(target=waveform, args=(q,))
p.daemon = True
p.start()

#pitch shifter, increments of 10hz
while True:
i+ = 10
q.put(i)
print('Queues being stored')
print(i)
if i >880:
print('Queues Stored')
break

关于python-3.x - 在 Python 的 sounddevice 模块中使用 Stream 方法的基本音调转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54389841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com