Python
※ITU-R BS, 1770によるラウドネスレベルの算出は以下の記事をご覧ください。 www.wizard-notes.com はじめに ラウドネスの算出・実装方法の勉強のため、心理音響評価モジュール/開発フレームMoSQIToの非定常信号向けラウドネス(時変ラウドネス)算出モジュ…
前回の記事で紹介したPythonの心理音響評価モジュールMoSQIToでラウドネスを算出してみました。 基本的に以下のドキュメント・ソースコードを参考にしています。 MoSQITo/tuto3_Loudness-zwicker-time-varying.ipynb at master · Eomys/MoSQITo · GitHub ソ…
https://github.com/Eomys/MoSQITo 心理音響学について調べていたら、興味深いPythonライブラリがあったので紹介します。 github.com 心理音響学に基づく音質評価ソフトウェアの多くは市販製品であり、オープンソースでさくっと使えるものはほとんどないのが…
Kerasでカスタムレイヤーを含むモデルを保存/読み込むヒントとなる情報があったので試してみました。 まず、以下の日本語のドキュメントの方法のコードでは、Custom layerを含むモデルのsave/loadはできませんでした。 オリジナルのKerasレイヤーを作成する…
※ISO 532 (Zwicker method) による推定ラウドネスおよびラウドネスレベルの算出は以下の記事をご覧ください。 www.wizard-notes.com 先日、下記の記事で統合ラウドネス値(Integrated loudness) LKFS/LUFS のPython実装 pyloudnorm をご紹介しました。 pylo…
K-weighting filter の実装の記事 を書いている時に、Python向けの双2次フィルタのライブラリがあったらいいなーと思ったので、年末年始の自由研究開発として作ってみました。 プロトタイプ版ですが、とりあえず公開します。 githubにあまり慣れていなかった…
音信号処理のプログラムを書いていると、 import numpy as np y_array = np.log10(x_array) のように対数をとることがよくあります。 ここで、x_array には 0 が含まれていることが多々あり、その場合には RuntimeWarning: divide by zero encountered in lo…
Pythonで平均ラウドネス値 (LUFS) を算出したりラウドネス正規化をすることができるモジュール pyloudnorm を試してみました。 https://github.com/csteinmetz1/pyloudnorm オフラインでの分析/加工を想定したような設計となっており、ラウドネスメータープ…
2021/1/3: alphaの算出方法がsin(w0)/Qとなっていたため、sin(w0)/(2Q)に修正 導入 ラウドネスメーターで使われるLKFSやLUFSの算出における信号処理の流れは、以下のブロック図のように、 K周波数重み付け(K-weighting) 各チャネルでエネルギーを計算し集…
はじめに 音信号の分析では、時間波形を直接分析するのではなく、様々な周波数分析手法を利用します。 比較的細かい周波数成分を見る方法としては、 STFT (短時間フーリエ変換) CQT (定Q変換) メルフィルタバンク がよく使われています。これらのライブラリ…
dB単位の音量フェーダー pic.twitter.com/mJK2E6RmnJ— Kurene (@_kurene) 2020年12月22日 PyQtで作るdB単位の音量フェーダーを作ってみました。 信号に乗算するゲイン係数は、音量フェーダーのdB値 x から、 として算出しています。 ソースコード GUI クリッ…
PyQt 5 / PySide 2 には、オーディオファイルの再生/停止ができるモジュール QSound があります。 使い方は非常に簡単で、play(),stop()といった関数でオーディオの再生/停止を操作できます。 from PyQt5.QtMultimedia import QSound audiofilepath = ...…
はじめに Python の音楽信号分析モジュールである LibROSAには、楽曲の音高/メロディ/和音情報をより精度よく抽出するためのツールとして、Salience (顕著性)スペクトログラムを抽出する関数 librosa.salience が実装されています。 今回は、librosa.sal…
はじめに この記事では、 以下の記事で紹介 LibROSAのSalience スペクトログラムの算出方法を解説します。 www.wizard-notes.com 実際の計算方法、プログラムはlibrosa.salience() をご参照ください。 Salience スペクトログラムとは Salience スペクトログ…
RxPY でのrx.scheduler.ThreadPoolSchedulerを使った並行処理の書き方です。 注意として、rx.scheduler.ThreadPoolSchedulerは from concurrent.futures import ThreadPoolExecutor を利用しています。 Pythonでは GIL (Global Interpreter Lock, GIL) によ…
Python 用の Reactive Extensions ライブラリである RxPY を勉強し始めました。 RxPY を使えば、非同期的に流れてくるデータのシーケンス/ストリームに対する処理を簡単に記述できます。 https://www.atmarkit.co.jp/fdotnet/introrx/introrx_01/introrx_01…
PyQtを使っていると、背景色やテキスト文字をサクッと設定したいことが多々あります。 各QWidgetオブジェクトごとに設定してもいいのですが、面倒なので、まとめて設定する方法を紹介します。 方法1:QPallete QPaletteクラスを使うことで、コンポーネントご…
pypi.org Pythonのワイルドカードインポートimport * は便利ですが、どの変数・関数を利用しているか分かりにくいです。 そんな場合、このremovestarを使うと、ワイルドカードインポートを明示的インポートに置き換えてくれます。 import文周りがスッキリす…
はじめに 少しハマってしまったところなのでメモ。 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…
まえがき 使い方 関数の仕様 サンプルコードとプロット librosa.phase_vocoderの中身について 重要な中間変数を抜粋 メイン処理 補足:フェーズボコーダを使ったピッチシフトの実現方法 librosa.phase_vocoderの音質について 参考文献 まえがき オーディオ編…
まえがき librosa.effects.pitch_shift() の使い方 引数について 半音単位のピッチシフト 周波数を指定するピッチシフト 使い方のサンプル プロット コード 注意 補足:ピッチシフトはタイムストレッチ? まえがき ボーカルや楽器の録音データに対して、 「…
Python インタプリタを起動してパスワード用のランダムな文字列をさくっと生成する方法を調べていたら、以下の記事を見つけました。 Pythonで複雑なパスワードを簡単に生成する | ガンマソフト株式会社 単純なやり方としては、random.choice()を使う方法があ…
Python の楽曲解析モジュール LibROSA が 2020年7月22日に ver. 0.8.0 に更新されていました。 Changelog — librosa 0.10.0 documentation インストール方法 python -m pip install librosa=0.8.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(…