python

Rapid Distance-Based Outlier Detection via Sampling (NIPS 2013) に基づく外れ値検知手法をPyODフォーマットで実装した

はじめに "Rapid Distance-Based Outlier Detection via Sampling" という論文の中で提案された手法を、外れ値検知のためのPythonライブラリ PyOD のフォーマットに落とし込んで、手軽に使えるように実装したということ。併せてベンチマークデータを用いて性…

畳み込みのスクラッチ実装(Python)

ディジタル信号処理を勉強するひとは、すべからくマスターすべき演算が畳み込みである(私見)。 畳み込み演算の重要性は論を俟たない。いわゆる線形時不変システムはインパルス応答と入力信号との畳み込みにより記述される。音声のディジタル信号処理の文脈…

EmacsでPythonを書く設定2022

はじめに 2022年にあたってPythonまわりのEmacsの設定を再び整理した。 今回もLanguage serverの紹介がメイン。追記:2024年のものには3rd party plugin に ruffを使うものを書いてみた。language serverはお好みで。 tam5917.hatenablog.com Python-mode ME…

LightGBM (LGBM) with Optunaで多クラス分類を行わせるときのパラメタ設定

例えばこんな感じ(10クラス)。 params = { "objective": "multiclass", "num_class": 10, "metric": "multi_logloss", "boosting_type": "gbdt", "verbosity": -1, } 多クラス分類させるときは、"metric"に"multi_logloss"を設定する。 残りのパラメタ調整…

PySimpleGUIとPyAudioとPyWORLDを使ったリアルタイムボイスチェンジャーの実装

こんな感じ。 pysimpleguiとpyaudioとpyworldでボイスチェンジャーができた pic.twitter.com/5V8A6I9ZX4— mat (@ballforest) January 10, 2022 ソースコードは以下。スペクトルのプロット機能はおまけのようなもの。 Real-time voice conversion by using Py…

PyAudioとPySimpleGUIを使ったリアルタイムスペクトル包絡表示

タイトルの通り。PyWORLDを使ってスペクトル包絡を抽出した。 gist.github.com 軸の表示は今後の課題。

PyAudioとPySimpleGUIを使ったリアルタイムFFTスペクトル表示

タイトルの通り。軸の表示やラベルは今後の課題。 gist.github.com

PySimpleGUIとPyAudioを使ったリアルタイム波形プロット

偉大なる先人のプログラムを参考に書いてみたということ。 gist.github.com 参考: Real Time PyAudio wave plot and FFT transform plots from microphone · GitHub

Pythonで2値の乱数ベクトルを生成したいとき

2値が-1と1とした場合、こう書く。 import numpy numpy.random.choice([-1, 1], 10) # 10個生成

音声認識結果に基づき複数話者でテキスト音声合成する簡易音声変換アプリをPythonで書いた話

はじめに PySimpleGUIの応用シリーズ。スクリプトの動作の様子は以下の通り。wavファイルを音声認識して、複数話者で音声合成するデモ(最初はデフォルトのテキストで合成) pic.twitter.com/CYX5pw0qiX— mat (@ballforest) September 5, 2021 本記事の趣旨…

Yahoo天気予報をスクレイピングしてしゃべらせるPythonプログラム

表題の通り。 音声認識結果に基づく天気予報の結果を音声合成によりしゃべらせた、ということ。 必要なライブラリ pipでインストール可能である。 pip3 install numpy pip3 install pyopenjtalk pip3 install speech_recognition pip3 install urllib3 pip3 …

Pythonの異常検知用パッケージPyODの形式に従って、ガウス混合モデル(GMM)に基づく異常検知を実装した

はじめに 2021年8月22日現在、Pythonの異常検知用パッケージであるPyODにガウス混合モデル(Gaussian Mixture Model; GMM)ベースの 異常検知が実装されていなかったので、それを実装したということである。 PyODのインストール pipでインストール可能である…

DAGMMに基づく教師なし異常検知をPyTorchで実装した

はじめに 教師なし異常検知の機械学習モデルの一つとして、"Deep Autoencoding Gaussian Mixture Model" (以降DAGMM)が知られている。 今回はこれを、異常検知/外れ値検知のためのPythonパッケージPyODの仕様に沿った形で、PyTorchにより実装したというこ…

OC-NNに基づく教師なし異常検知をPyTorchで実装した

はじめに 教師なし異常検知の機械学習モデルの一つとして、"One-Class Neural Network" (以降OC-NN)が知られている。 今回はこれを、異常検知/外れ値検知のためのPythonパッケージPyODの仕様に沿った形で、PyTorchにより実装したということである。 異常検…

Deep SVDDに基づく外れ値検知をPyTorchで実装した

はじめに 外れ値検知の機械学習モデルの一つとして"Deep SVDD" が知られている。 今回はこれを、異常検知/外れ値検知のためのPythonパッケージPyODの仕様に沿った形で、PyTorchにより実装したということである。 外れ値検知は1クラス分類と捉えることができ…

Pythonの異常検知パッケージPyODのフォーマットに従って、カーネル密度推定に基づく異常検知を実装した

はじめに 異常検知(外れ値検知)のための便利なPythonパッケージとしてPyODが存在する。 pyod.readthedocs.io github.com クラシックな手法から比較的最先端の手法まで実装されており、インタフェースも使いやすいのでオススメできる。 2021年8月9日現在、P…

EmacsからJupyter Notebookを触るための設定

はじめに Emacsのeinというパッケージを用いることで、EmacsからJupyter Notebookを編集し、表示することができる。 実行イメージは以下の通りである。ein(emacsからjupyter)は便利なのでぜひ pic.twitter.com/yBeAucc1n7— mat (@ballforest) August 21, 2…

EmacsでPythonを書く設定 2021

はじめに PythonまわりのEmacsの設定を整理したということ。Company-modeの設定は言語共通の部分が多く長くなるので省略した。Language serverの紹介がメイン。 ※最新の設定は2022の記事に tam5917.hatenablog.com Language server Emacsからlanguage server…

Griffin-Limアルゴリズムの実行時間をlibrosaとtorchaudioで比較してみた話

はじめに 音声の振幅スペクトルから位相を推定し、元の音声を復元するためのGriffin-Limアルゴリズムが知られている。 Griffin-Limアルゴリズムはlibrosaパッケージとtorchaudioパッケージの両方に実装されている。 librosa librosa.org torchaudio pytorch.…

音声認識結果を音声合成するPythonスクリプトをSpeechRecognitionとPyOpenJTalkで書いたみた話

はじめに かつて、音声認識と音声合成を組み合わせて遊んでみるという主旨の記事を書いたことがある。 tam5917.hatenablog.com 音声合成には、コマンドラインから音声合成できるOpenJTalkパッケージを用いたのだった。これをPythonから動かす場合には、専用…

torchaudioとtorchlibrosaの実行速度に違いはあるのか?

はじめに PyTorchには音声系データを処理するのに便利なtorchaudioというライブラリが存在する。 pytorch.org一方、音声系データの処理に便利なlibrosaというパッケージが存在する。 librosa.orgさらにtorchlibrosaという、librosa内部の行列計算まわりをPyT…

black用py-isortの設定

私はblackをpythonコードのformatterに用いているので、blackの仕様に合うようにisortを設定して動かしたいというわけである。isortをEmacsから触るためにはpy-isortを用いる。以下の記事は参考になる。 qiita.com isortのマニュアルはこちらから: pycqa.gi…

numpy.arange関数におけるstepに0.1を指定したときの振る舞いとその原因を追ってみた話

はじめに 先日、接点QB氏による以下のツイートを見かけた: ??????俺の脳みそがバグってるのか?? pic.twitter.com/zyzzdb3ijS— 接点QB (@setten_QB) February 10, 2021 興味深いので少し調べてみたというわけである(少々長い記事)。 はじめに numpyのara…

第2弾:Waveデータに対するLSB置換法に基づくステガノグラフィ by Python (バグ修正済)

表題の通り。今回も外部パッケージの力を借りてLSB置換法に基づくステガノグラフィを試してみた。 参考にしたのは以下のリポジトリである(Steganography/stego_lsb)。 リトルエンディアン環境で正常に動作するよう、バグを修正したPythonコードを以下に置い…

ヒルベルト変換のデモスクリプトをPythonで書いた話

表題の通りのまさに備忘録。音声波形をヒルベルト変換して包絡および瞬時位相を計算し、そこから元の音声波形を再構成するスクリプトをPythonで書いた話。SPTKに付属のdata.shortをwavに変換して用いた。発話内容は「青い植木鉢」である。処理の核となるのは…

フーリエ級数展開のデモンストレーションをPythonで書いた話

はじめに 東京大学の小山先生が、フーリエ級数展開のデモンストレーションをMATLABでお書きになった。講義でフーリエ変換というかフーリエ級数展開の説明用に作った動画をせっかくなのでここに置いておく。。 pic.twitter.com/2wm4ecjdty— Shoichi Koyama (@…

Waveデータに対してLSB置換法に基づくステガノグラフィをPythonでやってみた

はじめに ステガノグラフィとは、秘密のメッセージを「ばれないように、こっそりと」隠す技術である。画像メディアに対するステガノグラフィのPythonパッケージは見つかるのだが、音メディア系はちょっと見当たらなかったので、試しにPythonで書いてみたとい…

Pyroomacousticsを使ってfastMNMF法に基づく音源分離を試してみた

概要 ブラインド音源分離手法の1つであるfastMNMF法が件のPythonパッケージに実装されているので、手元の音源で音源分離を試してみたということ。 スクリプト gist.github.com 結果 オリジナルの音源信号(ドラム) soundcloud.com オリジナルの音源信号(…

Pythonの音声区間検出ライブラリ inaSpeechSegmenterを試してみた話

Pythonでいい感じの音声区間検出してくれるライブラリはないかなと探していたら、inaSpeechSegmenterというものが見つかったので使ってみた。 github.comデフォルトでは音声の区間、音楽の区間、ノイズの区間、無音の区間を検出し、その区間ラベルと時間情報…

spleeterを使って音源分離を試しただけ

はじめに 界隈で有名な、音源分離のためのPythonパッケージであるspleeterを使ってみたという話。 github.com 手順 事前にffmpegとlibsndfileはインストールしておく必要はあるとのこと。 https://github.com/deezer/spleeter/wiki/1.-Installation#using-pi…