音響音楽信号処理
はじめに この記事では、 以下の記事で紹介 LibROSAのSalience スペクトログラムの算出方法を解説します。 www.wizard-notes.com 実際の計算方法、プログラムはlibrosa.salience() をご参照ください。 Salience スペクトログラムとは Salience スペクトログ…
まえがき 使い方 関数の仕様 サンプルコードとプロット librosa.phase_vocoderの中身について 重要な中間変数を抜粋 メイン処理 補足:フェーズボコーダを使ったピッチシフトの実現方法 librosa.phase_vocoderの音質について 参考文献 まえがき オーディオ編…
まえがき librosa.effects.pitch_shift() の使い方 引数について 半音単位のピッチシフト 周波数を指定するピッチシフト 使い方のサンプル プロット コード 注意 補足:ピッチシフトはタイムストレッチ? まえがき ボーカルや楽器の録音データに対して、 「…
最近の音の配信サービスでは様々な音源を聴感的に同じ音量で聞けるように、ラウドネスノーマライゼーションが採用されています。 身近なオーディオ加工用ソフトウェアでは、2020年5月にリリースされた Audacity ver. 2.4.0 もしくはそれ以降のバージョンでラ…
問題 最近のバージョンの librosa では、信号を保存する時、16-bit 整数(int)型のWAVファイルで書き出そうとすると、以下のようなエラーが出てしまい、ファイル出力できません。 >>> import numpy as np >>> import librosa >>> y = np.sin(2.0*np.pi*440*…
Pythonで作る音楽プレイヤー:PyQt5 で簡易GUI作成 Pythonで作る、信号処理開発プラットフォーム用の音楽プレイヤー - Wizard Notes で作った音楽プレイヤーモジュールですが、CUIでは使いにくいので、PyQt5を使って簡単なGUIを作ってみました。 実装 クリッ…
今更感がありますが、Pythonで自作のエフェクトをすぐ試せる環境があると開発が捗るので、音楽プレイヤーモジュールを実装 pic.twitter.com/4yEN2wQ07X— Kurene (@_kurene) August 10, 2020 リアルタイム音響信号処理プラグインの開発において、開発言語がC+…
線スペクトル対 (LSP) を実装するにあたり、第1チェビシェフ多項式を利用するため実装してみました。 実装・検証したコードはPythonですが、VSTプラグイン化を見据えてC++を想定したナイーブ実装となっています。 概要 チェビシェフ多項式 - Wikipedia Cheb…
リアルタイム声質加工プラグインの開発進捗。声を太くしたり子供っぽくしたりできる処理のデモです。 pic.twitter.com/JcfwPJ2OCc— Kurene (@_kurene) July 18, 2020 線形予測分析+周波数ワープでリアルタイムで声質を加工する処理を作りました。 ボイスチ…
実装したIIR/FIRフィルタが正しく動作しているかどうか検証する必要があったため、 デジタルフィルタの周波数応答(周波数特性)をプロットするスクリプトを作りました。 基本的には scipy.signal.freqz() の example とほぼ同じで、 プロット部分を少し整理…
VSTプラグインで線形畳み込みを実装する必要が出てきたので、 事前にPythonでC++ライクな実装を検証しました。 とりあえず、2つの入力信号の配列サイズ不明で、最適化していない実装です。 import numpy as np from numba import jit @jit def conv_linear(…
フォルマントの強調っぽい処理で"いい声"に加工する自作フィルタのプロトタイプ(前半:元の歌声、後半:フィルタリング後) pic.twitter.com/deOz1DJjIv— Kurene (@_kurene) 2020年7月7日 先日作ったフォルマント強調フィルタ、実は低ビットレート音声符号…
概要 ラルクの似た曲検索、とりあえず類似度プロットまで。 pic.twitter.com/FbIF4Wf9tm— Kurene (@_kurene) December 24, 2019 これまでに、Perfumeや東方プロジェクトなどの楽曲を使って、同一アーティストの似た曲を検索するアルゴリズム構築をしてきまし…
はじめに Spotify の Web APIを調べていたら、APIを叩いて取得できる音響・楽曲特徴量のドキュメントを発見しました。 developer.spotify.com 非常に興味深い特徴量がいくつかあったので、紹介したいと思います 各特徴量の説明 duration_ms: int 楽曲の時間…
LibROSAの便利な関数として、librosa.core.magphaseがあります。 この関数を使うことで、短時間フーリエ変換librosa.stftや定Q変換librosa.cqtで出力される複素信号から、振幅スペクトルと位相スペクトルを抽出することができます。 それでは、librosa.core.…
www.youtube.com PyQt5の習作として、PyQt5とPyAudioを使ったBPM計測アプリを作ってみました。 よくあるBPM計測器の仕様となっていて、ユーザが拍位置でボタンクリックやキータイピングをすることで、BPMを計測をすることができます。 インターフェースもア…
Pythonで複数の楽曲データの長さを調べる時、真面目に楽曲ファイルを読み込んでNumpy配列のshapeを調べて…とすると、かなり時間がかかってしまいます。数百曲以上になると、それだけで時間の無駄です。 そこで、Mutagenを利用して、メタタグ情報から長さを得…
生成した音信号を気軽に鳴らせるシステムが欲しくなり、結果的にシンセサイザもどきを作ってみました。 MIDIを扱うと面倒なので、Numpy/Scipyで生成した音信号を直接オーディオ出力できるような構造になっています。 また、一応シンセサイザっぽい見た目なの…
東方プロジェクトの音楽をデータ分析:テンポ特徴+主成分分析+類似度行列で楽曲推薦 に引き続き、「Perfume The Best "P Cubed"」で似たテンポの楽曲を探すためのデータ分析をしてみました。 (以下の記事で)以前にも分析しましたが、今回は類似度行列を…
前回、東方プロジェクト原曲(紅魔郷~輝針城)のBPM(テンポ)分析では、近年の作品ほどテンポが速くなっている傾向があるなど、いくつも興味深い結果が得られました。 今回は、BPMではなく、テンポ特徴(サイクリックテンポグラム)という最近の手法を使う…
伝統的な自動作曲・文章生成システムで使われている代表的アルゴリズムとして、マルコフ連鎖があります。 アカデミックな研究やアプリケーションとしては常套手段なのですが、Web上には音楽での 利用例・実装例があまりないようです。 そこで、マルコフ連鎖…
音楽の三大要素、メロディ・ハーモニー・リズムの内、ハーモニーの根幹を担っているのが和音です。 そのため、計算機を使った楽曲分析でも和音分析は非常に重要な処理です。 ただ、楽譜データ*1は簡単ですが、オーディオファイルのような楽曲データからの和…
歌入りオリジナル音源から、カラオケ音源を引くことで、ボーカルだけを抽出できることはよく知られています。歌声りっぷのようなソフトウェアもこの仕組みを利用しており、また、オーディオ編集に慣れている人であればDAW上で簡単に抽出することができます。…
LibROSA とは? 出典:https://librosa.github.io/ 「自分の好きな音楽をパソコンで分析したい!」 「音楽データで機械学習・ディープラーニングをやってみたい!」 「でも、音データの信号処理やデータの扱い方がよく分からない…」 と悩んでいるエンジニア…
MS処理(Mid/Side変換)とは? MS処理のイメージ 音響機器やマスタリングプラグインでMS処理という表記を見かけたことはありませんか? MS処理は、通常左右に分かれているステレオの信号を、 中央(ミッド)成分と非中央(サイド)成分に変換し、それぞれに…
MFCC 算出の流れ この記事では、 音に関するデータ分析や機械学習・深層学習で良く使われている MFCC*1 (メル周波数ケプストラム係数)という特徴量を使って、楽器の音色を分析できるかどうかを検証します。 MFCC とは? LibROSAを使ったMFCCの算出方法 1. …
デモ・概要 https://github.com/Kurene/pyaudio_spectrum_analyzer/blob/master/libmir/rasp_audio_stream.py PyAudioとmatplotlib で、リアルタイムで音高を表示するプログラムを作ってみました。 このプログラムは、前回のリアルタイムスペクトルアナライ…
デモ+概要 Python のPyAudio と matplotlib を使って、PC上で流れている音をリアルタイムで表示・分析できるスペクトルアナライザを作りました。以下の実装では VB-Audio社の仮想ミキサ "Voice Meeter" 向けの設定となっていますが、PortAudio 対応かつルー…
事始め Perfume のベストアルバム Perfume The Best “P Cubed” を購入しました。 これまで(~2018年)の楽曲の中から全50曲 + 新曲2曲が収録されています。 全52曲。なかなかのデータ数です。 そういえば、最近のPerfumeの楽曲ってFuture BassやDub系が増え…
やりたいこと 時系列信号・データを扱っていると、その信号に対する各種イベント・ラベル(例:どんな音が鳴っているか)を時間とともに表示したいと思うことが多々あります。 そこで、Pythonの matplotlib で時間波形に対するイベント(ラベル)のタイムラ…