📜  wav 文件到数组 python (1)

📅  最后修改于: 2023-12-03 14:48:24.837000             🧑  作者: Mango

将 WAV 文件转换为 Python 数组

本文将介绍如何将 WAV 文件转换为 Python 数组,使得我们可以通过编程的方式读取并处理 WAV 文件中的数据。我们会使用 scipynumpy 库来实现这一目的。

安装依赖库

首先,让我们安装需要使用的库,即 scipynumpy

pip install scipy numpy
读取 WAV 文件

读取 WAV 文件需要使用 scipywavfile 模块。我们需要指定 WAV 文件的路径,并调用 wavfile.read() 函数来读取文件数据:

from scipy.io import wavfile

# 指定 WAV 文件路径
wav_path = "/path/to/wav/file.wav"

# 读取 WAV 文件
sample_rate, data = wavfile.read(wav_path)

sample_rate 变量存储着 WAV 文件的采样率,即每秒钟采集的样本数。data 变量是一个 numpy 数组,其中存储着 WAV 文件的数据。如果 WAV 文件是单声道的,data 将是一维数组;如果是双声道的,data 将是二维数组。

处理 WAV 数据

接下来,我们可以对 WAV 数据进行各种处理。例如,我们可以计算 WAV 文件的长度和总采样数:

# 计算 WAV 文件长度(单位:秒)
wav_length = len(data) / sample_rate

# 计算 WAV 文件总采样数
total_samples = len(data)

我们还可以将 WAV 数据截取为一段特定长度的数据:

# 截取 WAV 文件的前 5 秒数据
start, end = 0, sample_rate * 5
data_5s = data[start:end]

我们还可以将 WAV 数据进行归一化处理,使得所有采样值都在 [-1, 1] 范围内:

# 归一化 WAV 数据
data_norm = data / 32767.0
结论

通过上述步骤,我们就可以将 WAV 文件转换为 Python 数组,并使用 numpyscipy 库对 WAV 数据进行各种操作。在实际应用场景中,我们可以使用这些技巧来处理音频信号数据,如语音识别、音乐处理等。

完整代码如下:

from scipy.io import wavfile
import numpy as np

wav_path = "/path/to/wav/file.wav"

# 读取 WAV 文件
sample_rate, data = wavfile.read(wav_path)

# 计算 WAV 文件长度(单位:秒)
wav_length = len(data) / sample_rate

# 计算 WAV 文件总采样数
total_samples = len(data)

# 截取 WAV 文件的前 5 秒数据
start, end = 0, sample_rate * 5
data_5s = data[start:end]

# 归一化 WAV 数据
data_norm = data / 32767.0