2025年度のデモ大会で発表した内容です。
<概要>
本デモでは、武道館の広さや空間の大きさ、反響の仕方などの情報から、簡易的なインパルス応答を作成した。また作成したインパルス応答を、ライン録りした個人のライブ音源に適用して、武道館でライブしているかのような音源を作成することを目的とする。
<開発環境>
開発言語:Python
環境 :Visual Studio Code、REAPER
OS :Windows 11
<発表資料>
<実際の音源>
2025年度のデモ大会で発表した内容です。
本デモでは、武道館の広さや空間の大きさ、反響の仕方などの情報から、簡易的なインパルス応答を作成した。また作成したインパルス応答を、ライン録りした個人のライブ音源に適用して、武道館でライブしているかのような音源を作成することを目的とする。
開発言語:Python
環境 :Visual Studio Code、REAPER
OS :Windows 11
<発表資料>
<実際の音源>
2025年度のデモ大会で発表した内容です。
【概要】
本デモでは、楽曲を音源分離によって各パートに分解し、立体音響処理を用いてアンビソニック化したものをスピーカーで再生することで臨場感のあるバンド演奏空間を構成した。
さらに分離したピアノパートを演奏者自身の演奏に置き換えることで、バンドの一員として演奏している感覚を疑似的に体験できるとともに、実践的な個人練習や演奏の振り返りを可能にした。
【開発環境】
使用言語:Python
開発環境:音源分離モデル:htdemucs_6s
開発言語:Python
ソフトウェア:Visual Studio Code, Reaper
OS:Windows11
使用楽曲:「Pretender」/Official髭男dism-YouTube上の楽曲音源を使用
【発表資料】
【実際の演奏】
【参考文献】Reaperを用いたアンビソニックス立体音響音源の作成から再生までhttps://note.com/kimusho8/n/nf06bb90954e4
2024年度のデモ大会で発表した内容です。
tab譜がない楽曲でも簡単にtab譜が作成出来たら効率よく練習ができると思い今回の実験に至った。
開発言語:Python
環境 :Visual Studio Code

[分離前音源]
使用音源 swim/04 Limited Sazabys youtubeより
(元音源)
[分離後]
(bass)
(drum)
(その他(ギターや打ち込み音源など))
(vocal)
分離後分離した音源(今回はギターの音源)にコード分析を行うと約0.1秒ごとにコードを表示される。

その後指定のサイトにアクセスされこのコードをもとにtab譜を作成する事が可能になる。
コード推定を行うことによりtab譜の作成スピードがギターを触って音を探りながらするよりも向上した。
コード推定の精度が上がればさらに効率アップにつながると感じた。
・Qiita AI音声解析・分離ソフトDemucsの検証レポート
mitzi2funk 2024/10/21
https://qiita.com/mitzi2funk/items/2a9c3492ac13d0a9f399
・AI研究所 PyTorchとは?できることや使い方、インストール方法を分かりやすく解説 坂本将磨 2025/1/3
2024年1月に行われたデモ大会の内容です。

PyTorchで作成された音源分離モデルをTorchScriptモデルに変換し、スマートフォン上で動作させることを目的にアプリケーションを作成しました。

TorchScriptは、PyTorchコードの表現を変換し、Pythonに依存しない環境でも動作することができるようになる仕組みです。これにより、基本的にPythonを実行することのできないスマートフォン上でも、音源に対する推論を可能にすることができると考え、作成に取り掛かることにしました。

使用言語 : Kotlin
統合開発環境(IDE) : Android Studio(Ladybug 2024.2.1 Patch 2)
使用した分離モデル : open-unmix
Python(PyTorchモデル保存) : Python 3.11.9
アプリ実行環境 : Pixel 9 Pro(Android 15 AP4A.241205.013)

Mike’s Sulking / Spike Mullings より部分抜粋(25秒)
引用元 : https://www.cambridge-mt.com/ms/mtk/
open-unmixで使用されているモデルのうち、umxlモデルを変換し、利用しました。
実際の分離(分離スタートボタンを押してから分離が終了するまで)には、およそ21秒かかりました。
実際に端末上で分離した後の各音源は以下の通りです
1. ボーカル
2. ベース
3. ドラム
4. その他
TorchScriptを用いて、スマートフォン上でも音源分離を行うことができるアプリを作成できました。
プログラムの作成を通して、音データを扱うために、サンプリング周波数やチャンネル数、動作環境で利用できるライブラリの制約など、考慮するべき点が多数あることを学びました。
今回のプログラムでは、主にCPUを利用した音源分離を行う仕組みになっているため、モバイル上のリソースを有効活用したアプリケーションの作成にもつなげられると考えています。
TorchScript – PyTorch 2.5 documentation
https://pytorch.org/docs/stable/jit.html
PyTorchのモデルをTorchScriptへ変換する
https://ohke.hateblo.jp/entry/2019/12/21/230000
open-unmix-pytorch
https://github.com/sigsep/open-unmix-pytorch
2024年度に行われたデモ大会で発表した内容です。
2258223 木村将太

音メディアを処理する上で、「フーリエ変換」というものがよく用いられます。
フーリエ変換とは、難しく言うと、時間領域の信号を「周波数領域」という別の視点から観測するために行う変換です。
時間領域と周波数領域の関係を把握することは非常に重要ですが、フーリエ変換を直感的に理解できない人も多く見られます。私もそのひとりです。

ここで、フーリエ変換とフーリエ逆変換についてです。
フーリエ変換は、簡単に言うと音を正弦波に分解する作業とも言えます。
対してフーリエ逆変換はその逆、正弦波を合成する作業と言えます。
つまりフーリエ変換した結果をフーリエ逆変換すれば元に戻ります。
音声の合成を直感的に行える機材として「オーディオミキサー」が存在します。
ミキサーでフーリエ逆変換を再現、つまり正弦波を合成し、フーリエ変換についての直感的な理解を深めることがこのデモの目標です。

まず声の周波数スペクトルを記録します。ここでフーリエ変換が行われ、声を構成する正弦波がわかります。
次にそれらをミキサーに入力し、先ほど記録した周波数スペクトルを参考にミキシングします。
そして、元の声と同じ音色が聴こえることを確認します。上手くいけば、原理上は同じ音色になるはずです。
正弦波を足し合わせただけなのに声が聴こえる、という状態になれば成功です。

実際に使うものはこちらです。
ハードウェア選定理由は、実験室にあったからという理由が大半を占めています。例えばマイクロホンは、本来ならば手に持ちやすく声の収音に適したもの(Shure SM58など)を採用するべきでした。
ソフトウェアは周波数スペクトルを表示するものと正弦波を出力するものを開発しました。

ソフトウェア開発環境はこちらです。
PythonライブラリのSounddeviceという音声入出力の基本的なライブラリを使用したのですが、そのベースとして用いられているPortAudioが、Windows PCとミキサーの間で多チャンネル通信を行うために必要な規格ASIOにデフォルトでは対応していませんでした。
今回は正弦波32chを同時にリアルタイムにミキサーに入力する必要があったためASIOは必須です。これを解決するためにかなり悪戦苦闘しました。
その他にも、スペクトル表示や音声出力をリアルタイムに途切れなく動作させるための実装が大変でした。

では、実際にデモを行います。

マイクに向けて「あー」と声を出し、スペクトルを記録します。
スペクトルは時間変化が激しいため、平均値を記録します。

この図では簡単のため100Hzと記載していますが、任意の値を基音として設定可能です。
ただ、倍音成分は基音の整数倍に固定されます。今回は開発が間に合いませんでしたが、実際のピーク値を生成すればさらに声の再現の質が上がるのではないかと考えられます。

スペクトルとフェーダー(音量調整つまみ)の対応イメージです。スペクトルの概形を参考に自分でフェーダーを動かし声の音色を再現します。

ミキサーには特定のチャンネルのみ聴く機能や、逆に特定のチャンネルを消音する機能が搭載されています。これらを使用し本当に正弦波のみで音が合成されていることを確かめます。正弦波を合成しただけで元の声と同じような音が生成できれば、その参考にした周波数スペクトルは正しい、つまりフーリエ変換が正しく行われたことになります。
このようにフーリエ変換の直感的な理解を手助けすることができればデモは成功です。
2024年に行われたデモ大会の発表内容です。
2258234 瀬田啓太
現在様々な場面において利用されている音声合成において、自分の声で文章を読み上げるモデルを作成したいと思ったため。



実際の音声

100epoch学習時

実際の音声

100epoch学習時

生成した音声に入るノイズ音について。
→学習した音声の録音環境に問題がある。
生成した音声の音割れや類似度合いについて。
→学習させた音声のデータ量が不足していた。


2024年度のデモ大会で発表した内容です。
音声認識技術に興味を持ち、様々な現場で、音声データの文字起こしの需要があることを知った。
そこで、話者別で文字起こしをするツールを作成してみたいと考えた。
使用言語:Python
開発環境:Googole Colab
OS:Windows11
GPU T4

・Whisperによる文字起こし
「Whisper」
・OpenAIの高度な音声認識モデル
・多言語対応
・ディープラーニングを活用
Whisperモデルを使用して、音声ファイルからテキストに変換し、各セグメントに分割する。
各セグメントの開始時間、終了時間、テキストを出力する。

・参照音声と比較して話者を特定
「コサイン類似度」
埋め込みベクトル同士の類似性を評価するために使われる指標として使用する。
2つのベクトルのなす角度のコサイン値を計算し、類似度を測る。
入力された音声と各参照音声の各セグメントの音声に最も似ている話者が特定される。
二人の音声データを録音する
Aの参照音声
Bの参照音声
AとBの会話の音声(29秒)
音源:高道 慎之介, “Japanese versatile speech corpus”
出力結果
出力にかかった時間:31秒

・OpenAIのWhisperを用いて、音声ファイルをテキストに変換することができた
・話者を特定し、話者名をラベル付けすることができた
正確な漢字変換ができていなかった。また、同性同士のときの特定ができていない時があった。これらは、参照音声データの不足が原因だと考えられる。
展望として、音源分離を行い、発話が重複した場合の特定を行いたいと考える。

2024年に行われたデモ大会で発表した内容です。
昨今、Youtubeのように立体音響を身近に体験できる機会が増えています。
そういった環境を私が利用する中で、立体音響が機能する仕組みや音の方向が特定される理屈を理解するために今回のデモを行いました。
MUSIC法を用いました。
MUltiple Signal Classification 法の略で高分解能のスペクトル推定方法の1つです。信号とノイズを分離することで、信号の方向や周波数を推定します。

録音に利用
プログラムの作成に利用


Behringer C-2 ×2(マイク)とRoland Octa-capture(オーディオインターフェース)を使用し、録音します。今回は5秒間録音を行いました。
プログラムを起動し、録音した音声の音源方向を計算します。後に画像としてPCの画面に出力します。

下の画像にあるように、ピーク(音の到達方向)を特定はできたものの、写真右部の様に音の無い方向からも反応が出てしまう結果となりました。マイクの数が少なく正確に特定することが難しかったと思われます。
マイクの数を増やしたり、拾う音の周波数を変更することでより正確に音源の方向を特定することが可能になると考えます。
(1/24 追記 デモ大会にて今回用いたMUSIC法で使われる音源は、無限遠方からの平面波を前提とされていることが分かり、今回の検証の仕方が不適切だと判明しました。)


2024年のデモ大会で発表した内容です。
近年、ストレスを抱える人が増加傾向にあります。その背景には、働き方の多様化や長時間労働、情報過多、社会的な孤立感、さらには経済的不安や環境問題など、複雑に絡み合う要因が存在します。特に、スマートフォンやSNSの普及により、情報が即座に手に入る便利さの一方で、過剰な情報が精神的負担を引き起こす「情報疲労」という新しいストレスの形も注目されています。
このような現代社会特有の問題に対処するため、私は聴診器を用いて心音を測定し、ストレスの有無を簡易的に診断するプログラムを作成しました。
・RR間隔とは
心拍のピーク間(R波)の時間間隔のことです。R波は心音の「ドックン」の「ドッ」に該当します。この間隔の変動を解析することで、心拍変動を評価します。また、RR間隔で平均心拍数を計算した後に診断に使用します。

RR間隔の時系列データを周波数解析(Welch法)することで、低周波(LF)成分と高周波(HF)成分を分離します。
・LF (Low Frequency)とは
交感神経と副交感神経の両方の活動を反映する。低周波成分で0.04~0.15Hz
・HF (High Frequency)とは
副交感神経の活動を反映させ、心身を休ませるために活動性を抑えて回復、修復させるはたらきを持つ。呼吸サイクルに関連し、心拍に同調する。高周波成分で0.15~0.40Hz
・LF/HF比について
ストレス指標(交感神経の活性度)のことです。LFとHFの周波成分をLF/HFすることで求まります。
・Welch法とは
時系列データから複数のセグメントを分割し、各セグメントでPSDを推定し、最後にそれらの平均を計算する手法です。この手法を使用してLF、HF、LF/HF比を計算します。
開発環境は以下の通りです。
・Python 3.12.4(心拍変動解析ライブラリpyHRV)を使用
・Audacity 2.4.2
・Visual Studio Code
サンプリング周波数を1000、バンドバスフィルタで0Hzから500Hzに設定して心音を録音し、LF/HF比と平均心拍数を使用して時間×周波数を総合的に判断します。

差異があるか比較するために二分間心音計測とスマホアプリの「ストレス計測」というアプリを使用します。
このアプリはカメラに指をあてることで脈拍を計測してストレス計測をしています。

また、測定位置は左第5肋間鎖骨中線の心尖部に聴診器をあてて計測を行います。LF、HFの成分及び心音が最も聞こえやすい部位であるためです。
ストレスの有無については以下の手順で判断を行っています。
LF/HF比は0.55、心拍数は75を平常時の基準値として設定し、4つの段階に分類してストレスの有無を判断します。
LF/HF比が0.55未満かつBPMが75以下
「ストレスがある可能性は十分低い」
LF/HF比が0.55以上かつBPMが75以下
「ストレスがある可能性は低い」
LF/HF比が0.55未満かつBPMが76以上
「ストレスがある可能性は高い」
LF/HF比が0.55以上かつBPMが76以上
「ストレスがある可能性は十分高い」



心拍数グラフの0~15秒付近は自作したプログラムと結果が異なりますが、正しく診断できていることが分かります。
心理的要因を数値化することは個人差が大きいため、十分な精度を得ることが困難でした。
また、実際のデモ大会本番ではうまく診断が出来ませんでした。



デモ大会本番では「ストレスがある可能性は十分低い」と間違った診断結果が表示されました。
原因として以下があげられます。
・測定中に会話音などのノイズが入ってしまったため
・心音のBPMが早かったため、RR間隔をうまく検知することができず平均心拍数の計算に異常が起きた。
・録音音量が高く、音割れが起きたため
RR間隔を使用して平均心拍数を計算するのではなく、自己相関テンポグラムなどの技術を使用することでより正しく平均心拍数を計算することができるのではないかと考えます。今回は平均心拍数とLF/HF比を使用して診断を行いましたが、さらに血圧などの判断材料を増やすことで精度向上できる可能性があります。
2023年度のデモ大会で発表した内容です。
独立低ランク分析を用いた楽曲の音源分離
ボーカルと楽器ごとに分離するプログラムをPythonで作成しました。
開発言語:Python
環境 :Visual Studio Code
OS :Windows 11
CPU :11th Gen Intel(R) Core(TM) i7-1165G7 CPU @ 2.80GHz 2.80 GHz

Vocalと楽器のそれぞれ独立した音源をコンピュータ内で畳み込み、その混合音を楽器ごとに分離しました。
このプログラムを、音源の数を2つから4つの場合で実行し分離結果を比較しました。
Young Griffo/Facade(DSD100 | SigSepより)
2音源(Vocal,Guitar)
・分離前
・分離後(vocal)
・分離後(Guitar)
3音源(Vocal,Guitar,Drums)
・分離前
・分離後(vocal)
・分離後(Guitar)
・分離後(Drums)
4音源(Vocal,Guitar,Drums,Bass)
・分離前
・分離後(vocal)
・分離後(Guitar)
・分離後(Drums)
・分離後(Bass)
VocalとGuitarの音源が2つの場合では、混合前の音源と比較してもきれいに分離できました。しかし、音源数を増やすにつれて後ろでほかの楽器が小さく聞こえており、分離の精度は下がっていきました。特に、音源が4つの場合の分離後のVocalにDrumsとBassの音がにじみ出ていました。