Wizard Notes

音楽信号解析の技術録、作曲活動に関する雑記

LibROSA

PythonでSSM(自己類似度行列)を使って楽曲構成(Aメロ,サビなど)を分析

計算機を使った音楽分析技術の一つとして、楽曲構成(Aメロ、Bメロ、サビ)を分析する方法があります。しかし、日本語で技術の具体的な実現方法や実装について説明のある文献はあまり多くありません。また、Pythonの音楽分析ライブラリ LibROSA にはまだ実装…

Python:LibROSAのLPC (線形予測分析)を使って音声・歌声分析

Pythonの音楽分析モジュールLibROSAには、v.0.7から線形予測分析を行う関数librosa.lpcが追加されました。 線形予測分析は音声の音素や声色を分析するのによく利用されています。 今回は、このlibrosa.lpcの紹介と、利用例として歌声に適用してみたいと思い…

librosa.salience() によるSalience (顕著性) スペクトログラムの抽出

はじめに Python の音楽信号分析モジュールである LibROSAには、楽曲の音高/メロディ/和音情報をより精度よく抽出するためのツールとして、Salience (顕著性)スペクトログラムを抽出する関数 librosa.salience が実装されています。 今回は、librosa.sal…

LibROSAにおける Salience (顕著性)スペクトログラムの算出方法の解説

はじめに この記事では、 以下の記事で紹介 LibROSAのSalience スペクトログラムの算出方法を解説します。 www.wizard-notes.com 実際の計算方法、プログラムはlibrosa.salience() をご参照ください。 Salience スペクトログラムとは Salience スペクトログ…

Python:LibROSA のフェーズボコーダで時間伸縮・ピッチシフト librosa.phase_vocoder

まえがき 使い方 関数の仕様 サンプルコードとプロット librosa.phase_vocoderの中身について 重要な中間変数を抜粋 メイン処理 補足:フェーズボコーダを使ったピッチシフトの実現方法 librosa.phase_vocoderの音質について 参考文献 まえがき オーディオ編…

Python (LibROSA) でピッチシフト librosa.effects.pitch_shift

まえがき librosa.effects.pitch_shift() の使い方 引数について 半音単位のピッチシフト 周波数を指定するピッチシフト 使い方のサンプル プロット コード 注意 まえがき ボーカルや楽器の録音データに対して、 「音の長さを変えずに、音の高さを変えたい」…

LibROSA ver. 0.8.0 で基本周波数推定(YIN, pYIN)

Python の楽曲解析モジュール LibROSA が 2020年7月22日に ver. 0.8.0 に更新されていました。 Changelog — librosa 0.8.0 documentation インストール方法 python -m pip install librosa=0.8.0 気になる変更点として、基本周波数推定アルゴリズムとして有…

librosaにおける16-bitでのWAV書き出し

問題 最近のバージョンの librosa では、信号を保存する時、16-bit 整数(int)型のWAVファイルで書き出そうとすると、以下のようなエラーが出てしまい、ファイル出力できません。 >>> import numpy as np >>> import librosa >>> y = np.sin(2.0*np.pi*440*…

librosa.core.magphaseで振幅スペクトルと位相スペクトルを複素信号から抽出

LibROSAの便利な関数として、librosa.core.magphaseがあります。 この関数を使うことで、短時間フーリエ変換librosa.stftや定Q変換librosa.cqtで出力される複素信号から、振幅スペクトルと位相スペクトルを抽出することができます。 それでは、librosa.core.…

Python + LibROSAでクロマ特徴(クロマグラム)を使って和音推定:(1) テンプレートマッチング

音楽の三大要素、メロディ・ハーモニー・リズムの内、ハーモニーの根幹を担っているのが和音です。 おそらく、楽器を演奏したり、曲の耳コピをしたことがある人は、一度は計算機で和音(進行)を自動で分析できたらいいな、と思ったことがあるはずです。 一…

LibROSA:Pythonで手軽に始める音楽データ分析

LibROSA とは? 出典:https://librosa.github.io/ 「自分の好きな音楽をプログラムを使って分析したい!」 「音楽データで機械学習やディープラーニングをやってみたい!」 「でも、音データの信号処理やデータの扱い方がよく分からない…」 と悩んでいるエ…

LibROSA で MFCC(メル周波数ケプストラム係数)を算出して楽器の音色を分析

MFCC 算出の流れ この記事では、 音に関するデータ分析や機械学習・深層学習で良く使われている MFCC*1 (メル周波数ケプストラム係数)という特徴量を使って、楽器の音色を分析できるかどうかを検証します。 MFCC とは? LibROSAを使ったMFCCの算出方法 1. …

Perfume The Best "P Cubed" の全52曲をテンポ特徴でクラスタ分析

事始め Perfume のベストアルバム Perfume The Best “P Cubed” を購入しました。 これまで(~2018年)の楽曲の中から全50曲 + 新曲2曲が収録されています。 全52曲。なかなかのデータ数です。 そういえば、最近のPerfumeの楽曲ってFuture BassやDub系が増え…

matplotlibでタイムラインチャートをプロット

やりたいこと 時系列信号・データを扱っていると、その信号に対する各種イベント・ラベル(例:どんな音が鳴っているか)を時間とともに表示したいと思うことが多々あります。 そこで、Pythonの matplotlib で時間波形に対するイベント(ラベル)のタイムラ…

Python (LibROSA) で音高 ・クロマ特徴を算出する方法

はじめに 音楽の分析では、メロディー、ハーモニー、リズムの3つ要素から特徴を捉えるのが重要です。 特にハーモニーに関しては、音楽理論による体系化(例:コード、コード進行)が出来ています。そのため、 分析した結果の意味付けがしやすいので、計算機…

Pythonで楽曲のリズム・テンポ分析: テンポグラム (Tempogram)

はじめに 楽曲分析では、メロディー、ハーモニー、リズムの3大要素から特徴を捉えるのが大事です。 ハーモニーに関しては、音楽理論による体系化(コード、コード進行など)が出来ていることもあり、計算機による分析も他の要素よりも普及しています。 一方…

librosa.core.load() のバックエンドが audioread から PySoundFile に代わった件

PySoundFile vs audioread ? LibROSAを最新版 (0.7.1) に更新したら、LibROSAの音楽信号の読込を担う load()のバックエンドが、audioreadからPySoundFileに代わったとのこと。 ただし、LibROSA 0.7.1では、PySoundFileがインストールされていない場合は代わ…

Python: LibROSA で調波打楽器音分離 (HPSS)

調波打楽器音分離とは? 一般的な楽曲では、様々な楽器音が含まれています。 そのため、元の楽曲信号から直接、音楽的な情報(例:コード進行)を分析するのは 計算機ではなかなか難しいです*1。 そこで、分析の前処理として、 打楽器の音と非打楽器(調波楽…

Python: LibROSAによるBPM自動算出の詳細 

はじめに この記事では、Pythonの音楽分析モジュールである LibROSAで 実装されているBPM算出手法について、コードをベースに 解説をします。 BPM自動算出の概要・設計方針については、以下の記事をご参考ください。 www.wizard-notes.com はじめに LibROSA…

LibROSA: ステレオ信号のWAV書き出し(write_wav)におけるstruct.errorの解決方法

問題点 表題の通り、以下のコードでエラーが発生します。 import librosa sr=44100 #オーディオ信号をNumpy形式でロードし、yに格納 y, sr = librosa.core.load(input_filepath, sr=sr, mono=False) # yをwavフォーマットで書き出し # ここで、yがステレオ信…