音声強調のサーベイ
概要
このスクラップは?
音声から雑音(ノイズ)を除去するような研究分野を、音声強調という。
近い分野のサーベイをしているとよく出てくるので、独立なスクラップとして溜めておく。
このスクラップで完結する解説はせず、参考資料へのリンクを貼ったりする。
この分野を表す他の用語
日常用語では「ノイズ除去」と呼ぶことが多そう。
『音響学入門ペディア』によれば、音声の性質を仮定するのが「音声強調」で、雑音の性質を仮定するのが「雑音抑制」で、演奏や複数話者の分離は「音源分離」らしい。だけどしばしば混同して使われいそう。
性質を仮定するとは、「人の声の特徴に基づいて、人の声を取り出す」なのか「工事音の特徴に基づいて、工事音を取り出した上で全体からマイナスする」なのかみたいなイメージか。
英語ではspeech enhancementだけど、speech separatationも使われていそう。
「話者ダイアライゼーション(Speaker diarisation)」は、複数人が話している音声から、「どこからどこまでを誰が発言しているか」を推定する分野。話者認識(speaker recognition)寄りの分野でもある。自然な応用としては自動字幕やWeb会議の議事録作成がある。
「信号分離(Signal separation)」は、音声に限らない。
この分野のモチベーション
「音声強調とは、雑音が含まれた観測信号から、所望の目的音を強調する信号処理である。その究極目標は、観測信号から目的音を完全復元することである」らしい。
野外での通話などの直接的応用の他、音声認識の精度向上のための前処理などにも有用。自分も話者認識(音声から誰の声か識別する分野)システムを作成する過程でこれを書いている。
そもそも音声処理の基礎
『音響学入門ペディア』の書籍版がオススメ。
大抵の計算はlibrosaなどのPythonライブラリにお任せなんだけど、Pythonでの基本的な実装はこんな感じ。 ちゃんと学ぶ場合は学部2年生の2単位講義程度のディジタル信号処理から。数理モデル的手法
参考資料
なんと日本語の一般書がある。
日本語のサーベイ記事。東大の猿渡・齋藤研究室が音響学、信号処理の講義資料を大量に公開してくれている。
独立成分分析の話。
観点
方向が分かっているか
どの方向に目的音声があるか(あるいは雑音があるか)が判明している方が、簡単な問題になる。
ビームフォーミングなどが使える。
定常ノイズか
定常ノイズの場合、簡単な問題になる。
例えば、画像でもボケ復元や手ぶれ補正に使うウィーナーフィルタは定常ノイズに対しては使えるが非定常ノイズには使えない。カルマンフィルタは非定常ノイズにも使える。
例えば「エアコン音が録音中ずっと入っていたから削除したい」という場合は、方向が一定かつ定常なので比較的簡単。
ノイズの音量が小さい場合は簡単
単に一定の音量以下の音声をカットする(ノイズゲート)
あるいは目的音声に対してノイズが常に高周波数などの場合も簡単。
機械学習手法
概説
日本語記事。
概説論文。
Supervised Speech Separation Based on Deep Learning: An Overview
音響学会サマーセミナーでの分野紹介講演資料。
ツールキットの紹介がされている。
実験例
U-Netを使った音声強調の実装と、処理前後音声がある。
このブログは他の記事でも別手法を使った音声強調をやっているので勉強になりそう。
U-Netを使ってやってみた他の記事。
試せるWebサイト
Webブラウザ上で簡単に試すなら、最近発表されたvoice-isolatorとか。APIも公開予定らしい。