4

我想在 Python 中制作程序声音,并立即播放它们而不是将它们保存到文件中。我应该为此使用什么?我可以只使用内置模块,还是需要额外的东西?

我可能会想改变音高、音量之类的东西。

4

3 回答 3

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))

要创建 5 秒 440 赫兹的正弦波并收听,您可以:

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

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

于 2012-10-08T14:55:20.240 回答
0

查看这个 Python wiki 页面。特别是“Python 中的音乐编程”部分。

于 2012-10-08T14:50:43.730 回答
0

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

于 2019-02-12T15:34:22.747 回答