Python 流随机音频与烧瓶

Python 流随机音频与烧瓶,python,web,flask,audio,Python,Web,Flask,Audio,我有下面的函数,它生成一个音调并将其写入wav文件 import struct import numpy as np from scipy import signal as sg import wave import math # Parameters sampleRate = 44100 frequency = 400 duration = 1 # define wave file file = wave.open('test.wav', 'w') file.setnchannels(1

我有下面的函数,它生成一个音调并将其写入wav文件

import struct
import numpy as np
from scipy import signal as sg
import wave
import math

# Parameters
sampleRate = 44100
frequency = 400
duration = 1


# define wave file
file = wave.open('test.wav', 'w')
file.setnchannels(1)
file.setsampwidth(2)
file.setframerate(sampleRate)



def generate(output, freq, dur):
    # create sine wave
    n_cycles = math.floor(freq*dur)  # number of cycle
    dur2 = n_cycles /freq            # adjusted duration
    samples = dur2*sampleRate
    x = np.arange(samples+1)         # want inclusive range
    sineWave = (32767.0*np.sin(2 * np.pi * freq * x / sampleRate))

    for i in sineWave:
        value = i
        data = struct.pack('<h', int(value))
        output.writeframesraw(data);


for x in range(1):
    generate(file, 1153.1, 1.0)


file.close();
导入结构
将numpy作为np导入
来自scipy的输入信号为sg
输入波
输入数学
#参数
采样率=44100
频率=400
持续时间=1
#定义波形文件
file=wave.open('test.wav','w')
文件.setnchannels(1)
file.setsampwidth(2)
file.setframerate(sampleRate)
def生成(输出、频率、dur):
#创建正弦波
n#u循环=数学地板(频率*dur)#循环次数
dur2=n#u个周期/频率#调整的持续时间
样品=dur2*取样器
x=np.arange(样本+1)#想要包含范围
正弦波=(32767.0*np.sin(2*np.pi*freq*x/采样器))
对于正弦波中的i:
值=i

data=struct.pack('你能扩展一下你的例子来说明这个函数是如何运行的吗?具体来说就是什么是
输出
。这是如何创建一个wav的?我粘贴了我当前代码的其余部分。我希望我能带着答案回到这个问题上来,但解决方案可能介于和之间。