Wizard Notes

Python, JavaScript を使った音楽信号分析の技術録、作曲活動に関する雑記

ディジタルフィルタ

Pythonとresample_polyでオーバーサンプリング

scipy.signal.resample_polyを使ってオーバーサンプリングを実装してみました。 resample_polyのデフォルトの設定では、パラメタβ=5.0のカイザー窓によるFIRローパスフィルタが使われています。 注意すべき箇所として、フィルタ長はresample_polyの引数では…

双2次フィルタ (Biquad Filter) の周波数特性(振幅・位相)の一覧

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

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

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

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

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

Pythonで作る、信号処理開発プラットフォーム用の音楽プレイヤー

今更感がありますが、Pythonで自作のエフェクトをすぐ試せる環境があると開発が捗るので、音楽プレイヤーモジュールを実装 pic.twitter.com/4yEN2wQ07X— Kurene (@_kurene) August 10, 2020 リアルタイム音響信号処理プラグインの開発において、開発言語がC+…

ボイスチェンジャー向けフィルタ設計:周波数ワープによるフィルタ係数の修正と実装方法

リアルタイム声質加工プラグインの開発進捗。声を太くしたり子供っぽくしたりできる処理のデモです。 pic.twitter.com/JcfwPJ2OCc— Kurene (@_kurene) July 18, 2020 線形予測分析+周波数ワープでリアルタイムで声質を加工する処理を作りました。 ボイスチ…

SciPyを使ったデジタルフィルタの周波数特性プロット

実装したIIR/FIRフィルタが正しく動作しているかどうか検証する必要があったため、 デジタルフィルタの周波数応答(周波数特性)をプロットするスクリプトを作りました。 基本的には scipy.signal.freqz() の example とほぼ同じで、 プロット部分を少し整理…

線形畳み込みのforループでのナイーブな実装 (Python)

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日 先日作ったフォルマント強調フィルタ、実は低ビットレート音声符号…