Wizard Notes

音楽信号解析の技術録、音楽のレビューおよび分析、作曲活動に関する雑記です

Python"MoSQITo"で学ぶラウドネスの算出・実装方法

はじめに ラウドネスの算出・実装方法の勉強のため、心理音響評価モジュール/開発フレームMoSQIToの非定常信号向けラウドネス(時変ラウドネス)算出モジュールのソースコードを分析/コメント翻訳してみました。 ソースコードの分析において、以下の文献を…

Pythonの心理音響評価モジュール"MoSQITo"でオーディオデータからラウドネスを算出

前回の記事で紹介したPythonの心理音響評価モジュールMoSQIToでラウドネスを算出してみました。 基本的に以下のドキュメント・ソースコードを参考にしています。 MoSQITo/tuto3_Loudness-zwicker-time-varying.ipynb at master · Eomys/MoSQITo · GitHub ソ…

Pythonの心理音響評価モジュール/開発フレームワーク"MoSQITo"の紹介

https://github.com/Eomys/MoSQITo 心理音響学について調べていたら、興味深いPythonライブラリがあったので紹介します。 github.com 心理音響学に基づく音質評価ソフトウェアの多くは市販製品であり、オープンソースでさくっと使えるものはほとんどないのが…

双2次フィルタ (Biquad Filter) の周波数特性一覧

以下の記事で作成した双2次フィルタのプログラムで出力した、双2次フィルタの周波数特性の一覧ページです。 www.wizard-notes.com カットオフ周波数 (fc) とQ値 (q) を動かしてプロットしています。 フィルタ作成の参考等にご利用ください。 Lowpass (ローパ…

EVE Audio SC203 レビュー

mngして音楽がさらに楽しくなりました☺️ pic.twitter.com/OwzR8mWvHZ— Kurene (@_kurene) 2021年1月6日 昨年度からメインモニターとして使える3インチサイズのパワードスピーカーを探していました*1。 Twitterのタイムライン等でこのEVE audio SC203を知って…

Kerasでカスタムレイヤーを含むモデルをsave/load_modelする

Kerasでカスタムレイヤーを含むモデルを保存/読み込むヒントとなる情報があったので試してみました。 まず、以下の日本語のドキュメントの方法のコードでは、Custom layerを含むモデルのsave/loadはできませんでした。 オリジナルのKerasレイヤーを作成する…

pyloudnormで学ぶ平均ラウドネス値 (LKFS/LUFS) の算出・実装方法

先日、下記の記事で統合ラウドネス値(Integrated loudness) LKFS/LUFS のPython実装 pyloudnorm をご紹介しました。 pyloudnormでLUFS算出/ラウドネス正規化 - Wizard Notes こちらのライブラリのコードは、Rec. ITU-R BS.1770-4 に沿って実装されている…

双2次フィルタのPythonライブラリ"PyQuadFilter"を作ってみました

K-weighting filter の実装の記事 を書いている時に、Python向けの双2次フィルタのライブラリがあったらいいなーと思ったので、年末年始の自由研究開発として作ってみました。 プロトタイプ版ですが、とりあえず公開します。 githubにあまり慣れていなかった…

numpy.errstateで対数をとった時のwarningを無視する

音信号処理のプログラムを書いていると、 import numpy as np y_array = np.log10(x_array) のように対数をとることがよくあります。 ここで、x_array には 0 が含まれていることが多々あり、その場合には RuntimeWarning: divide by zero encountered in lo…

pyloudnormで平均ラウドネス値 (LUFS) 算出/ラウドネス正規化

Pythonで平均ラウドネス値 (LUFS) を算出したりラウドネス正規化をすることができるモジュール pyloudnorm を試してみました。 https://github.com/csteinmetz1/pyloudnorm オフラインでの分析/加工を想定したような設計となっており、ラウドネスメータープ…

様々なサンプリング周波数に対応した K-weighting フィルタの設計

2021/1/3: alphaの算出方法がsin(w0)/Qとなっていたため、sin(w0)/(2Q)に修正 導入 ラウドネスメーターで使われるLKFSやLUFSの算出における信号処理の流れは、以下のブロック図のように、 K周波数重み付け(K-weighting) 各チャネルでエネルギーを計算し集…

Sonokinetic の音源をKontaktで読み込めない/インストールできないエラーへの対処方法

先日の Sonokinetic 社の Holiday Gift/Sale で 同社の音源を入手された方も多いと思います。 Sonokinetic - Sample libraries and Virtual Instruments Carousel - Sonokinetic - Sample libraries and Virtual Instruments Sonokinetic 社の音源はSonokine…

Python PyFilterBankで環境音をオクターブバンド分析

はじめに 音信号の分析では、時間波形を直接分析するのではなく、様々な周波数分析手法を利用します。 比較的細かい周波数成分を見る方法としては、 STFT (短時間フーリエ変換) CQT (定Q変換) メルフィルタバンク がよく使われています。これらのライブラリ…

PyQtで作るdB単位の音量フェーダー

dB単位の音量フェーダー pic.twitter.com/mJK2E6RmnJ— Kurene (@_kurene) 2020年12月22日 PyQtで作るdB単位の音量フェーダーを作ってみました。 信号に乗算するゲイン係数は、音量フェーダーのdB値 x から、 として算出しています。 ソースコード GUI クリッ…

PyQt Qsound でオーディオファイルを再生/停止

PyQt 5 / PySide 2 には、オーディオファイルの再生/停止ができるモジュール QSound があります。 使い方は非常に簡単で、play(),stop()といった関数でオーディオの再生/停止を操作できます。 from PyQt5.QtMultimedia import QSound audiofilepath = ...…

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

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

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

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

RxPY での並行処理(ThreadPoolScheduler,subscribe_on() と observe_on() の比較)

RxPY でのrx.scheduler.ThreadPoolSchedulerを使った並行処理の書き方です。 注意として、rx.scheduler.ThreadPoolSchedulerは from concurrent.futures import ThreadPoolExecutor を利用しています。 Pythonでは GIL (Global Interpreter Lock, GIL) によ…

RxPY 3 入門メモ(簡単なサンプルコード、用語、使用例)

Python 用の Reactive Extensions ライブラリである RxPY を勉強し始めました。 RxPY を使えば、非同期的に流れてくるデータのシーケンス/ストリームに対する処理を簡単に記述できます。 https://www.atmarkit.co.jp/fdotnet/introrx/introrx_01/introrx_01…

PyQt でアプリの背景色やテキスト文字の色などの属性を設定する方法

PyQtを使っていると、背景色やテキスト文字をサクッと設定したいことが多々あります。 各QWidgetオブジェクトごとに設定してもいいのですが、面倒なので、まとめて設定する方法を紹介します。 方法1:QPallete QPaletteクラスを使うことで、コンポーネントご…

removestar: Pythonでワイルドカードインポートを明示的インポートに自動で置換

pypi.org Pythonのワイルドカードインポートimport * は便利ですが、どの変数・関数を利用しているか分かりにくいです。 そんな場合、このremovestarを使うと、ワイルドカードインポートを明示的インポートに置き換えてくれます。 import文周りがスッキリす…

Embertone: Popelka Bassoonのインストール(解凍)方法メモ(Windows)

www.youtube.com Popelka Bassoon Popelka Bassoonのインストールに少し迷ったのでメモ。 音源を購入 購入後、ブラウザ or メールの"Download"をそれぞれクリックし、4つのファイル(PopelkaBassoon.zip.00x)をダウンロード 4つのファイル(PopelkaBassoon.…

NumPyのビュー(view)がどのndarrayオブジェクトを参照しているか確認する方法

はじめに 少しハマってしまったところなのでメモ。 NumPyでは、あるndarrayオブジェクトを明示的に参照する手段としてviewがあります。 numpy.ndarray.view — NumPy v1.19 Manual 使用例: >>> x = np.arange(0,5) >>> x array([0, 1, 2, 3, 4]) >>> y = x.v…

チェレスタ音源 "Soniccouture Celesta" のデモ

高品質かつ繊細な音質に定評のある "Soniccouture" からチェレスタ音源がリリースされました。 Celeste | Soniccouture youtu.be このデモ動画を視聴して、高帯域は繊細で、魔法のように滑らかな音色に一目惚れし購入しました。 イントロプライスで通常$129…

バグパイプ(イリアン・パイプス)音源"Dicky Deegan's Uilleann Pipes"のデモと感想

Audio Plugin Dealsでセール中のKontakt用バグパイプ(イリアン・パイプス)音源、買ったので音質チェックのため打ち込んでみました。このくらい泥臭い音質の方が個人的には好みDicky Deegan's Uilleann Pipes - Xtant Audio$47.31 -> $9.99 https://t.co/6Z…

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

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

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

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

Pythonでのパスワード用ランダム文字列の作成メモ

Python インタプリタを起動してパスワード用のランダムな文字列をさくっと生成する方法を調べていたら、以下の記事を見つけました。 Pythonで複雑なパスワードを簡単に生成する | ガンマソフト株式会社 単純なやり方としては、random.choice()を使う方法があ…

AmazonゴールドカードでWeb明細書の金額が合わなかった

タイトル通りなのですが、ふと以前のWeb明細を眺めていたら、 利用金額と支払金額が合っていない月がありました。 ※マイ・ペイすリボは支払金額を利用限度額にしているため、リボ払いの支払はありません。 Web上で情報を探してみましたが、原因は分からず… …

Audacity でラウドネスノーマライゼーション

最近の音の配信サービスでは様々な音源を聴感的に同じ音量で聞けるように、ラウドネスノーマライゼーションが採用されています。 身近なオーディオ加工用ソフトウェアでは、2020年5月にリリースされた Audacity ver. 2.4.0 もしくはそれ以降のバージョンでラ…