Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自由を求めてWindowsオーディオプログラミング

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ryoha ryoha
March 27, 2022
540

 自由を求めてWindowsオーディオプログラミング

Audio Processing Object の話です

Avatar for ryoha

ryoha

March 27, 2022
Tweet

Transcript

  1. 自己紹介 4 ▣ りょは □ Twitter, GitHub @ryoha000 ▣ 趣味

    □ 美少女ゲーム □ 麻雀 今やってるゲームの好きなキャラ (かわいい)
  2. おおざっぱな方針 8 ▣ ぶっこ抜いてそれを改ざん □ 犯罪かもしれん ▣ ユーザーモードで動くアプリの権限だけでなんとか □ システムへの影響が小さい

    □ 失敗 ▣ カーネルモードでやってる処理に差し込む □ C++を書く必要 □ なんか大変そう □ 最終的にはこの方針
  3. 発想 ▣ ピー音がある程度の間続いて、1ループが十分短い ▣ 自分で出してるピー音と、消したいピー音の位相差は 結果的に再生された音からわかる ▣ フィードバック制御で逆位相にしてピー音を打ち消す 12 出力

    プログラム + - 他アプリからでる音 消したい周波数の 同じ振幅の逆位相を流す 消したい周波数の振幅・位相と 今プログラムで流してる振幅・位相が 実際どのくらいずれてるか計算
  4. 「ドライバ」の領域 ▣ ユーザーモード ▣ APOが動いてる ▣ 署名はいらない(ただしDRMコンテンツは再生不可) ▣ カーネルモード □

    ハードウェアとのつなぎこみをしてる □ 署名が必要(法人じゃないと無理?) ▣ どっちでも「今から再生する音」に触れる 17
  5. ▣ ←みたいな2次の再帰的な線 形フィルタ ▣ 適切な𝑎1 , 𝑎2 , 𝑏0 ,𝑏1

    , 𝑏2 を与え ると特定の周波数をカットで きる □ Notch Filter ▣ フーリエ変換とかせずにでき てすごい(どの周波数をカット するかで必要ではある) Biquad Filter 24 https://jp.mathworks.c om/help/control/ug/di scretizing-a-notch- filter.html https://en.wikip edia.org/wiki/Di gital_biquad_fil ter
  6. 試したアプローチ ▣ 結構な精度でBGMと声を分けられる OSS(spleeter) ▣ 声だけにした音声なら簡単に直前の 音素が分かる? ▣ 例えば「t」や「m」なら特徴的でわかるかも? ▣

    「t」は破裂音でスペクトルがかなり特徴的 ▣ 「m」は有声音で母音が強く出ててフォルマン ト周波数が目立つ ▣ spleeterのピークが重くてリアルタ イムで処理できず 29 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0 500 1000 処理時間[s] 試行回数[回]
  7. 考えてるアプローチ ▣ spleeterにピークが立ってる原因調査 ▣ それなりに軽い音声認識モデルをつくる ▣ データは用意できる ▣ 母音や吐息だけの無意味な音声の扱いをどうするか ▣

    「おだ_ご」→「おだんご」は生成するなり、いくつかの パターンに分類して決まった音声で置換なりどうとで もなりそう ▣ 来月末にリリースしたい! ▣ アイディア募集中! 30
  8. ▣ 【最重要】Program Files以下に置かないと動かない ▣ DebugViewでデバッグするときは、管理者権限で起 動してGlobal Win32 debug outputを拾う ▣

    プロセス間通信はできない ▣ ソケット通信 ▣ 共有メモリ ▣ 名前付き/匿名パイプ APOを作ってみたい人向け1 32
  9. 参考文献 35 ▣ MSDN □ https://docs.microsoft.com/en-us/windows- hardware/drivers/audio/audio-processing-object- architecture □ 文句は無限にあるけどないと始まらない

    ▣ フラキチさんブログ □ http://frchick.blog129.fc2.com/blog-entry-733.html □ 公式以外でAPOの話をしてるほぼ唯一のサイト