Python实现实时程序化声音?

4

我想在Python中实现过程化音效,而不是将它们保存到文件中后再播放。我应该使用什么工具呢?我能否只使用内置模块,还是需要额外的库?

我可能还希望更改音调、音量等参数。

3个回答

3
使用numpy和scikits.audiolab一起使用应该可以解决问题。 audiolab具有支持ALSA和Core Audio后端的play函数。
以下是使用numpy生成简单正弦波的示例:
from __future__ import division
import numpy as np

def testsignal(hz,amplitude = .5,seconds=5.,sr=44100.):
    '''
    Create a sine wave at hz for n seconds
    '''
    # cycles per sample
    cps = hz / sr
    # total samples
    ts = seconds * sr
    return amplitude * np.sin(np.arange(0,ts*cps,cps) * (2*np.pi))

要创建一个持续五秒的440赫兹正弦波并进行听取,你需要执行以下操作:
>>> from scikits.audiolab import play
>>> samples = testsignal(440)
>>> play(samples)

请注意,play是一个阻塞调用。在声音播放完成之前,控制权不会返回到您的代码。

1
看起来很不错,直到我意识到它只支持Mac OS和Linux。(我正在运行Windows) - Muzz5
1
重复调用play()之间会有听得到的间隔...除非我漏掉了什么,否则这对于任何需要连续流动不同声音的实时应用程序都不起作用... - josh

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接