欢迎访问宙启技术站
智能推送

使用Python生成paInt16()格式的方波音频信号

发布时间:2024-01-17 10:34:24

要生成一个带有方波音频信号的音频文件,首先需要引入wavenumpy库。

import wave
import numpy as np

然后,我们需要设置一些参数来生成音频信号。这些参数包括音频文件名称、采样率、持续时间、频率和音量。

filename = "square_wave.wav"
sample_rate = 44100
duration = 5
frequency = 440
volume = 0.5

现在,我们可以使用numpy库来生成方波音频信号。方波的定义是在一个周期内有两个不同的值,即正值和负值。我们可以使用numpy.arange()函数生成一个时间序列,并使用numpy.sin()函数在每个时间点计算方波的值。

t = np.arange(int(sample_rate * duration)) / sample_rate
signal = np.where(np.sin(2 * np.pi * frequency * t) >= 0, volume, -volume)

接下来,我们可以使用wave库创建一个新的音频文件,并设置其参数。

audio = wave.open(filename, "w")
audio.setparams((1, 2, sample_rate, len(signal), "NONE", "not compressed"))

然后,我们可以将生成的信号写入音频文件中。

audio.writeframes(signal.astype(np.int16).tobytes())

最后,不要忘记关闭音频文件。

audio.close()

下面是一个完整的例子,生成一个持续时间为5秒、频率为440Hz的方波音频文件:

import wave
import numpy as np

filename = "square_wave.wav"
sample_rate = 44100
duration = 5
frequency = 440
volume = 0.5

t = np.arange(int(sample_rate * duration)) / sample_rate
signal = np.where(np.sin(2 * np.pi * frequency * t) >= 0, volume, -volume)

audio = wave.open(filename, "w")
audio.setparams((1, 2, sample_rate, len(signal), "NONE", "not compressed"))

audio.writeframes(signal.astype(np.int16).tobytes())
audio.close()

运行这个代码片段后,将在当前目录下生成一个名为square_wave.wav的音频文件,其中包含了一个持续时间为5秒、频率为440Hz的方波音频信号。