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

Python中paInt16()音频数据的读取与显示方法

发布时间:2024-01-17 10:28:11

在Python中,可以使用wave模块中的Wave_read类来读取和处理音频数据。下面是一个使用paInt16音频数据的读取与显示的示例:

import wave
import numpy as np
import matplotlib.pyplot as plt

# 打开音频文件
wave_file = wave.open("audio.wav", 'rb')

# 获取音频参数
nchannels = wave_file.getnchannels()
sampwidth = wave_file.getsampwidth()
framerate = wave_file.getframerate()

# 读取音频数据
frames = wave_file.readframes(-1)

# 关闭音频文件
wave_file.close()

# 将字符串转换为numpy数组
audio_data = np.frombuffer(frames, dtype=np.int16)

# 计算时间轴
time = np.linspace(0, len(audio_data) / framerate, num=len(audio_data))

# 绘制音频波形图
plt.figure(figsize=(10, 4))
plt.plot(time, audio_data)
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
plt.title("Audio Waveform")
plt.grid(True)
plt.show()

在这个示例中,我们首先导入了wave模块以及numpymatplotlib模块。

然后,我们使用wave.open()函数打开了名为audio.wav的音频文件,并分别获取了音频的通道数、样本宽度和帧速率。

接下来,我们使用readframes()函数读取了所有音频数据,并使用frombuffer()函数将读取的字符串数据转换为paInt16的numpy数组。

最后,我们使用linspace()函数生成了一个时间轴 time,它的长度与音频数据的长度相同,并以秒为单位。

最后,我们使用plot()函数绘制了音频数据的波形图,并使用xlabel()ylabel()title()函数设置了横轴、纵轴和标题的名称,grid()函数绘制了网格线,并使用show()函数显示图形。

以上示例可以读取并显示一个paInt16格式音频的波形图。你只需要将audio.wav替换为你自己的音频文件路径即可。