Ale*_*lan 37 python audio synthesis python-2.7 python-3.x
有可能让python生成像正弦波一样的简单声音吗?
有可用的模块吗?如果没有,你会如何创建自己的?
另外,你需要某种主机环境让python运行才能播放声音,还是只能通过终端来电来实现?
如果答案取决于操作系统,我正在使用mac.
Lia*_*iam 30
我一直在寻找相同的东西,最后,我写了这个代码,它工作得很好.
import math #import needed modules
import pyaudio #sudo apt-get install python-pyaudio
PyAudio = pyaudio.PyAudio #initialize pyaudio
#See https://en.wikipedia.org/wiki/Bit_rate#Audio
BITRATE = 16000 #number of frames per second/frameset.
FREQUENCY = 500 #Hz, waves per second, 261.63=C4-note.
LENGTH = 1 #seconds to play sound
if FREQUENCY > BITRATE:
BITRATE = FREQUENCY+100
NUMBEROFFRAMES = int(BITRATE * LENGTH)
RESTFRAMES = NUMBEROFFRAMES % BITRATE
WAVEDATA = ''
#generating wawes
for x in xrange(NUMBEROFFRAMES):
WAVEDATA = WAVEDATA+chr(int(math.sin(x/((BITRATE/FREQUENCY)/math.pi))*127+128))
for x in xrange(RESTFRAMES):
WAVEDATA = WAVEDATA+chr(128)
p = PyAudio()
stream = p.open(format = p.get_format_from_width(1),
channels = 1,
rate = BITRATE,
output = True)
stream.write(WAVEDATA)
stream.stop_stream()
stream.close()
p.terminate()
Run Code Online (Sandbox Code Playgroud)
acs*_*ith 11
我知道我在这个游戏上有点晚了,但这是一个非常棒的python项目,用于综合和音频组合:https://github.com/hecanjog/pippi
它仍在积极开发中,但它已经持续了一段时间.
我正在用 python 开发一个强大的合成器。我使用自定义函数直接写入 .wav 文件。有可用于此目的的内置函数。您需要修改 .wav 标头以反映采样率、每个样本的位数、通道数和合成持续时间。
这是正弦波发生器的早期版本,它输出一个值列表,在应用 bytearray 后,这些值适合写入波形文件的数据参数。[编辑]在应用字节数组之前,转换函数需要将列表转换为小端十六进制值。有关 .wav 规范的详细信息,请参阅下面的 WAVE PCM 声音文件格式链接。[/编辑]
def sin_basic(freq, time=1, amp=1, phase=0, samplerate=44100, bitspersample=16):
bytelist = []
import math
TwoPiDivSamplerate = 2*math.pi/samplerate
increment = TwoPiDivSamplerate * freq
incadd = phase*increment
for i in range(int(samplerate*time)):
if incadd > (2**(bitspersample - 1) - 1):
incadd = (2**(bitspersample - 1) - 1) - (incadd - (2**(bitspersample - 1) - 1))
elif incadd < -(2**(bitspersample - 1) - 1):
incadd = -(2**(bitspersample - 1) - 1) + (-(2**(bitspersample - 1) - 1) - incadd)
bytelist.append(int(round(amp*(2**(bitspersample - 1) - 1)*math.sin(incadd))))
incadd += increment
return bytelist
Run Code Online (Sandbox Code Playgroud)
较新的版本可以使用波形来调制波形参数的频率、幅度和相位。数据格式使得将波混合和连接在一起变得微不足道。如果这似乎是您的习惯,请查看WAVE PCM 声音文件格式。
我喜欢PyAudiere,它可以让你将 numpy 数组当作声音来播放……我想它很适合我的 Matlab 背景。我相信它是跨平台的。我认为scikits.audiolab做了同样的事情,并且可能更最新/更好的支持......对我来说似乎比尝试将内容保存为 wavfiles 或将它们写入缓冲区并使用 Python 的内置声音库更容易。