使用 Python 和 Matplotlib 在图形上绘制各种声音

原文:https://www . geeksforgeeks . org/标绘-各种声音在图形上-使用-python-and-matplotlib/

在本文中,我们将探索使用 Python 和 Matplotlib 可视化声波的方法。

需要的模块

1。Matplotlib:使用以下命令安装 Matplotlib:

pip install matplotlib

2。Numpy:Numpy 安装自动安装 Matplotlib。但是,如果您遇到任何导入错误,请使用下面的命令安装 Numpy

pip install numpy

注意:如果你和我一样在 Linux 上,那么你可能需要使用 pip3 而不是 pip 或者你可以创建一个虚拟环境并运行上面的命令。

方法

  • 导入 matplotlib、Numpy、wave 和 sys 模块。
  • 使用 wave.open() 方法打开音频文件。
  • 使用读取帧()功能读取打开的声波的所有帧。
  • 使用 getframrate ()功能将帧速率存储在变量中。
  • 最后,使用帧速率以秒为单位绘制 x 轴。
  • 使用 matplotlib.figure()函数绘制派生图形
  • 按照要求使用标签。

下面是实现。

Python 3

# imports
import matplotlib.pyplot as plt
import numpy as np
import wave, sys

# shows the sound waves
def visualize(path: str):

    # reading the audio file
    raw = wave.open(path)

    # reads all the frames 
    # -1 indicates all or max frames
    signal = raw.readframes(-1)
    signal = np.frombuffer(signal, dtype ="int16")

    # gets the frame rate
    f_rate = raw.getframerate()

    # to Plot the x-axis in seconds 
    # you need get the frame rate 
    # and divide by size of your signal
    # to create a Time Vector 
    # spaced linearly with the size 
    # of the audio file
    time = np.linspace(
        0, # start
        len(signal) / f_rate,
        num = len(signal)
    )

    # using matlplotlib to plot
    # creates a new figure
    plt.figure(1)

    # title of the plot
    plt.title("Sound Wave")

    # label of x-axis
    plt.xlabel("Time")

    # actual ploting
    plt.plot(time, signal)

    # shows the plot 
    # in new window
    plt.show()

    # you can also save
    # the plot using
    # plt.savefig('filename')

if __name__ == "__main__":

    # gets the command line Value
    path = sys.argv[1]

    visualize(path)

输出:

plotting sound in python

所以,我们完成了编码,现在是关键时刻。让我们看看它是否真的有效。您可以尝试任何音频文件,但要确保它必须是一个 wav 文件。如果您有一些其他的文件类型,那么您可以使用 ffmpeg 将其转换为 wav 文件。如果你想,那么请随意下载我们将使用的音频文件。你可以使用这个链接下载,但是也可以尝试其他文件。 要运行代码,需要在命令行中传递音频文件的路径。为此,请在您的终端中键入以下内容:

python soundwave.py sample_audio.wav

需要注意的是,Python 文件的名称是 soundwave.py ,音频文件的名称是 sample_audio.wav 。你需要根据你的系统改变这些。现在,一个新的窗口应该已经弹出,应该会看到一个声波图。如果你用过我的音频,那么你的剧情应该是这样的。