一 源码:
下面为你提供一个 Python 示例代码,借助 numpy
库来生成 16kHz 采样率的正弦波音频数据,同时使用 scipy
库将生成的数据保存为 .wav
文件。
import numpy as np
from scipy.io import wavfile# 采样率,单位为 Hz
sample_rate = 16000# 正弦波的频率,单位为 Hz
frequency = 440# 音频时长,单位为秒
duration = 5# 生成时间轴
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)# 生成正弦波数据
sine_wave = np.sin(2 * np.pi * frequency * t)# 将音频数据转换为 16 位整数
sine_wave = (sine_wave * 32767).astype(np.int16)# 保存为 .wav 文件
wavfile.write('sine_wave_16k.wav', sample_rate, sine_wave)
二 源码解析
- 导入必要的库:导入
numpy
用于生成正弦波数据,导入scipy.io.wavfile
用于保存音频数据为.wav
文件。 - 设置参数:
sample_rate
:采样率设为 16000Hz。frequency
:正弦波的频率设为 440Hz(A4 音)。duration
:音频时长设为 5 秒。
- 生成时间轴:使用
np.linspace
函数生成从 0 到duration
的时间轴,点数为sample_rate * duration
。 - 生成正弦波数据:依据正弦波公式
sin(2 * pi * f * t)
生成正弦波数据。 - 数据类型转换:将生成的正弦波数据乘以 32767 并转换为 16 位整数类型,这是因为
.wav
文件通常使用 16 位整数来存储音频数据。 - 保存音频文件:使用
wavfile.write
函数将生成的音频数据保存为名为sine_wave_16k.wav
的文件。