Python的实时程序声音?

时间:2012-10-07 22:41:20

标签: python audio

我想在Python中执行程序化声音,并立即播放它们而不是将它们保存到文件中。我该怎么用呢?我可以使用内置模块,还是需要额外的东西?

我可能想要改变音高,音量等等。

3 个答案:

答案 0 :(得分:3)

使用numpy和scikits.audiolab应该可以解决问题。 audiolab具有play功能,支持ALSA和Core Audio后端。

以下是使用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赫兹创建5秒的正弦波并听取它,你会这样做:

>>> from scikits.audiolab import play
>>> samples = testsignal(440)
>>> play(samples)

请注意play是阻止通话。在声音播放完毕之前,控制权不会返回到您的代码。

答案 1 :(得分:0)

结帐this Python wiki page。特别是“Python中的音乐编程”部分。

答案 2 :(得分:0)

Pyglet可能是一个不错的选择,因为它嵌入了音频程序的功能: Pyglet/media_procedural