2022-01-01から1年間の記事一覧

AIミュージックバトル!『弁財天』スターターキットのPyTorch版Google Colabノートブックを作った話

はじめに AIミュージックバトル!『弁財天』が配布しているスターターキットについて、PyTorch版を作成した記事を以前書いたことがあった。 tam5917.hatenablog.com その記事の段階では、Google Colabのノートブックを用意していなかったので、今回作ってみ…

Pythonによる並列処理の書き方(joblib および concurrent.futures)

joblibとconcurrent.futuresを使った並列処理の実現方法についてそれぞれメモを残しておく。Pythonによる並列処理の関連記事はいくらでも見つかるのだが、個人的な備忘録ということで。 想定している状況:処理対象となるファイル数が多いので、直列で処理を…

異常音検知関連の情報まとめ

異常音検知に関して、まとめてリストしておく。備忘録。 解説論文・スライド スライド 論文 ソフトウェア データセット 書籍 コンペティション 解説論文・スライド スライド 音響信号に対する異常音検知技術と応用 音響信号に対する異常音検知技術と応用 fro…

微分可能な複素正弦波オシレータを用いて日本語5母音を近似させてみた

はじめに 実装 実験 実験条件 実験結果 おわりに はじめに SNSにて、しゃをみん氏が興味深い記事をツイートされていた。 昨日書きました。「コンピューターは遂に「音の高低」を理解した」と言えるほどの大きな進歩です。【注目論文】Sinusoidal Frequency E…

VOSKによるストリーミング音声認識の使い勝手を改善した話

はじめに 改善のヒント ソースコードと動かし方 特徴 おわりに はじめに Pythonで音声認識を実行するためのツールとして、最近はVOSKが少しずつ使われるようになってきた。その大きなメリットのひとつはオフラインで動作するという点である。 インストールも…

AIミュージックバトル!『弁財天』のスターターキットをPyTorchに移植してアドリブメロディの自動生成を試してみた

はじめに スターターキットについて スターターキットが提供するモデルの概要 実装 必要なパッケージ 実装の概要 メロディ生成実験 実験条件 実験結果 実装の舞台裏やTIPS、TensorFlow版との違いなど おわりに はじめに 最近、下記のイベントが開催されるこ…

Transformerを用いてオノマトペから環境音を合成する手法をPyTorchで実装した(Transformer版 Onoma-to-Wave)

はじめに 事前準備 実装の概要 環境音合成実験 実験条件 実験結果 実装の舞台裏など おわりに はじめに 以前、Onoma-to-Waveを実装した記事を書いたことがあった: tam5917.hatenablog.com Onoma-to-Waveとはオノマトペ(文字列)を環境音(スペクトログラム…

Pythonによる日本語チャットボットの構築 in 2022 〜ChatterBotインストール編〜

はじめに Pythonでチャットボットを作りたくなった。 ChatterBotが便利に使えそうだということで、インストールログを残しておく。 動作環境 Python3.9.13 macOS BigSur 11.6 インストール まず仮想環境を準備する。 python3 -m venv chatbot chatbotディレ…

Transformerの学習率を調整するSchedulerクラスをPyTorchで書いた

はじめに Attention is All You Needという論文で「warmup & ステップ数の逆平方根で学習率を減衰」させる学習率スケジューリングが提案されたが、そのようなスケジューリングを手軽に行うスケジューラを書いたということである。 ソースコード from torch.o…

オノマトペ(擬音語)から環境音を合成するニューラルネットワーク(Onoma-to-Wave)をPyTorchで実装した

はじめに 事前準備 ソースコード 実装の概要と動かし方 補助的に作成したモジュールの概要 おまけ:訓練済みモデルのリリース 環境音合成実験 音響イベントによる条件付けなし 音響イベントによる条件付けあり 実装の舞台裏とかTIPS おわりに 参考文献 はじ…

プログレスバーを表示するためのPythonライブラリ progressbar2を使ってみた

はじめに Yoshipon氏の以下のツイートからprogressbar2の存在を知ったので、使ってみたということ。 そういえば,最近from progressbar import progressbarが大変便利であることを知った ()— Yoshipon (@yoshipon0520) May 29, 2022 インストール pipでイン…

Hydraのtutorialに従って書いたらpylintに怒られたので修正した話

最近Hydraを使い始めた。tutorialに従えばひとまず使えるようにはなる。 例えば以下のyamlファイルをconfig.yamlとして保存したとする(ニューラルネット的なconfig)。 model: hidden_dim: 128 latent_dim: 32 output_dim: 256 training: epoch: 100 batch_…

wav2pixがpython2系で実装されていたので、python3系で動くように修正した

wav2pixというGANの派生モデルがある。 要するに、音声から顔画像を生成するgeneratorを持つGANである。 図1: wav2pixのネットワーク構成 qiita.com wav2pixの実装はgithub上に見つかるのだが、いかんせんpython2系で実装されておりイマイチだったので、 こ…

オンラインOCSVMに基づく外れ値検知をPythonで実装し、訓練時間削減の効果をベンチマークデータで検証した

はじめに scikit-learn 1.0の新機能として、OC-SVMのオンライン版が紹介されている。 scikit-learn.org オンライン化のご利益は訓練時間の大幅な削減である。 そこで本記事では、「結局オンライン化でどれくらい速くなったの?」という疑問に答えるべく、オ…

カーネルPCAに基づく外れ値検知にサブセットのサンプリング機能を実装して計算量削減を図った話

はじめに 先の記事 tam5917.hatenablog.com にてカーネルPCAに基づく外れ値検知を実装したが、計算量が多く使い物にならない。 そこで本記事では、 tam5917.hatenablog.com の記事にある、データセットのサブサンプリングを組み込むことで計算量を減らしつつ…

カーネル主成分分析による外れ値検知をPyODフォーマットで実装した

はじめに カーネル主成分分析を用いて外れ値検知ができるので、それを実装してみたということ。 カーネル主成分分析を外れ値検知に使うとは? 以下の論文にすべて書いてある(説明の手抜き!)。 Heiko Hoffmann, "Kernel PCA for novelty detection," Patte…

Random Projection Outlyingness(RPO)に基づく外れ値検知をPyODフォーマットで実装した

はじめに Random Projection Outlyingnessとはなにか? depthについて outlyingnessについて Random Projection Outlyingness (RPO) 実装 PyODのインストール RPOクラス Toy example ベンチマーク 参考文献 はじめに データ分布に対する各サンプル点の外れ度…

外れ値検知手法のベンチマークを測定するスクリプトをPyODとOptunaで書いた

はじめに 外れ値検知の代表的な手法であるkNN, LOF, OC-SVM, Isolation Forestについて、ベンチマークを測定するスクリプトを作成した。 各手法は外れ値検知ライブラリのPyODに実装されており、今回はOptunaによるハイパーパラメータ探索も入れている。 PyOD…

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

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

selected.elの設定 2022

はじめに 以前、selected.elの設定を記事にしたことがあった。 tam5917.hatenablog.com 今回はその設定を一部見直し、新しい関数に置き換えた部分があるので、それをまとめておこうというのが主旨である。 selected.el自体は以下の記事を読むのがよい。 qiit…

consult-ripgrepの検索対象を現在開いているバッファたちに限定するには

以下の関数を使う(consult-ripgrep-multi-file)。通常のconsult-ripgrepはあるディレクトリ以下の全ファイルが検索対象になるが、今回は「現在開いているバッファ(に対応するファイルたち)」に検索対象を限定したということ(串刺し検索)。 consult-lin…

consult-ripgrepの検索対象をカレントバッファに限定するには

以下の関数を使う。 consult-lineと実質的な働きは変わらないのがメリット。 つまり、 consult-ripgrepの設定(migemo化など)が活きるので、例えばconsult-line系に限定したmigemo化の設定は不要となる点。 そのほか、consult-lineをmigemo化すると、最初の…

カーソル下のシンボルを初期入力にしてconsult-ripgrepをするには

こうする。 (defun consult-ripgrep-symbol-at-point () (interactive) (consult-ripgrep nil (thing-at-point 'symbol))) C-uつきで呼び出したときにシンボル初期入力を行いたい場合は (defun my-consult-ripgrep (use-symbol) (interactive "p") (cond ((e…

consult-ripgrepのmigemo化

consult-ripgrepのmigemo化に取り組んだ方がいらっしゃった。 www.yewton.net しかしながら、上記の記事で紹介されている設定では手元の環境でうまく動かなかったので、少し修正してみたという話。 (require 'consult) (defvar consult--migemo-regexp "") (…

perspective-modeの設定

書いておく (require 'perspective) (setq persp-show-modestring 'header) ;; 有効化 (persp-mode 1) ;; persp-modeはC-x xがプレフィックス ;; 現在のperspectiveに限定したbs-show (global-set-key (kbd "C-x C-M-b") '(lambda (arg) (interactive "p") (…

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

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

consultの設定 2022

(require 'consult) ;; consult-line ... swiper の代替 ;; consult-isearch ... isearch中にconsultインタフェースでクエリを再入力し、isearch再実行 ;; consult-multi-occur ... multi-occurの代替 ;; consult-focus-line ... クエリにヒットする部分のみ…

corfuまわりの設定(vertico, marginalia, orderless, cape, kind-icon, affe)

corfuおよび関連するパッケージの設定をメモとして残す。* 追記:2024年時点のcorfuの設定は以下の記事tam5917.hatenablog.com*追記:2024年時点のverticoの設定は以下の記事tam5917.hatenablog.com corfu ... companyパッケージの代わり。カーソル位置で…

Company-modeの設定 2022

書いてみた。 (require 'company) (add-hook 'after-init-hook 'global-company-mode) (setq company-minimum-prefix-length 2) ;; キー設定 (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p")…

EmacsでPythonを書く設定2022

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