Python
 Computer >> コンピューター >  >> プログラミング >> Python

Librosaのスペクトログラムを特定サイズの画像として保存する方法

Librosaは、音声や音楽ファイルの分析を支援するPythonパッケージです。音楽情報検索(MIR)システムの構築にも広く活用されています。本記事では、Librosaで生成したスペクトログラムのプロットを、指定したサイズの画像ファイルとして保存する方法を解説します。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • 図とサブプロットのセットを作成します。

  • スペクトログラムの時間ステップあたりのサンプル数、画像の高さ、幅を格納する3つの変数 hlhiwi を初期化します。

  • デモ音源を読み込みます。

  • 音声時系列のリストであるwindowを作成します。

  • melspectrogram()windowと手順3のデータを渡して、メルスケールのスペクトログラムを計算します。

  • power_to_db()メソッドを使用して、パワースペクトログラム(振幅の2乗)をデシベル(dB)単位に変換します。

  • スペクトログラムをimgとして表示します(この時点で保存することも可能です)。

  • savefig()を使用してimgを保存します。

  • plt.show()メソッドで画像を表示します。

コード例

import numpy as np
import matplotlib.pyplot as plt
import librosa.display

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, ax = plt.subplots()

hl = 512 # スペクトログラムの時間ステップあたりのサンプル数
hi = 128 # 画像の高さ
wi = 384 # 画像の幅

# デモ音源の読み込み
y, sr = librosa.load(librosa.ex('trumpet'))
window = y[0:wi*hl]

S = librosa.feature.melspectrogram(y=window, sr=sr, n_mels=hi, fmax=8000,
hop_length=hl)
S_dB = librosa.power_to_db(S, ref=np.max)
img = librosa.display.specshow(S_dB, x_axis='time', y_axis='mel', sr=sr, fmax=8000, ax=ax)

plt.savefig("out.png")
plt.show()

出力結果

Librosaのスペクトログラムを特定サイズの画像として保存する方法

  1. Windows 10でWebPをPNGに変換・保存する4つの方法

    WebP(ウェッピー)は、Googleが開発した次世代の画像フォーマットです。オンラインでの保存容量を削減するために画像サイズを小さくすることを目的としており、Webページの表示速度を高速化するよう設計されています。圧縮によってファイルサイズは小さくなりますが、画質はほとんど損なわれません。しかし、一部のプログラムやブラウザでは依然としてWebP形式がサポートされていないことがあります。また、画像編集の用途では、WebPよりもPNG形式の方が扱いやすいと言えます。この記事では、WebP画像をPNGとしてダウンロード・変換する方法をご紹介します。WebPをPNGに変換・保存するにはWebP画像を

  2. Macで画像を保存する方法|右クリック・ドラッグ&ドロップ・スクリーンショット完全ガイド

    Macに保存した画像は、壁に掛けた絵画のように美しく映えます。ビジネスプレゼン用のコントラストの高いイラストや、SNSでシェアしたい写真など、目的に応じて画像を活用する場面は多いものです。Macでの画像保存はとても簡単で、ローカルフォルダから読み込んだり、スクリーンショットを撮ったり、ドラッグ&ドロップで好きな場所に移動させたりできます。 Apple純正の「写真」アプリは、ライブラリを整理して見やすく管理してくれるだけでなく、専用の編集ツールによって表現の幅も大きく広がります。また、動画プレーヤーを使えば、ワンクリックで動画からスナップショットを切り出すことも可能です。 本記事では、Macで画