12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import io
- import matplotlib
- import matplotlib.figure as mpl_fig
- from matplotlib import pyplot as plt
- import numpy as np
- matplotlib.use("agg")
- def plot_waveform(audio_array: np.ndarray):
- fig = plt.figure(figsize=(10, 3))
- plt.style.use("dark_background")
- plt.plot(audio_array, color="orange")
- plt.axis("off")
- return fig
- def figure_to_image(fig: mpl_fig.Figure):
- with io.BytesIO() as buff:
- fig.savefig(buff, format="raw")
- buff.seek(0)
- data = np.frombuffer(buff.getvalue(), dtype=np.uint8)
- w, h = fig.canvas.get_width_height()
- return data.reshape((int(h), int(w), -1))
- def plot_waveform_as_image(audio_array: np.ndarray):
- fig = plot_waveform(audio_array)
- plt.close()
- return figure_to_image(fig)
- def middleware_save_waveform_plot(audio_array: np.ndarray, filename_png: str):
- # fig = plt.figure(figsize=(10, 3))
- # plt.style.use("dark_background")
- # plt.plot(audio_array, color="orange")
- # plt.axis("off")
- # plt.savefig(filename_png)
- # plt.close()
- fig = plot_waveform(audio_array)
- plt.savefig(filename_png)
- plt.close()
- return figure_to_image(fig)
- if __name__ == "__main__":
- print("Testing save_waveform_plot.py")
- audio_array = np.random.rand(100)
- filename_png = "test.png"
- data = middleware_save_waveform_plot(audio_array, filename_png)
- print(data)
- print("Testing save_waveform_plot.py done")
|