音音研と雑音。

 2009年11月5日、「音音研」という集まりに行ってきた。音声と音楽のこぢんまりとした研究会である。そのことについては西本先生が詳しく書いている。あまり知られていないことであるが、この研究会の様子はネット中継されていた。ネットの向こう側にいる人に話しかけるのが楽しかった。

 さて、内容についてであるが、雑音に関する知覚の話がメインだった。この話はどこまでここに書いても大丈夫なのかが分からないので書かない。その代わりに、私が雑音に対して何を今考えているのかを書こうと思う。

 私は、雑音の混入した音声から雑音をとり除くことに関する研究で博士号をとった。このテーマにとりかかったのが、修士の二年くらいのときなのであるが、博士の一年の頃に、このテーマはそれほど重要ではないような気がしてきていた。そのときは、やむを得ずそのままそのテーマで研究を続けて、卒業までに三報の論文を載せたが、あまり楽しいものではなかった。

 なぜ、雑音をとり除くことに興味が持てなくなったかといえば、それが音声認識の性能を上げるための研究の一部だったからである。今の音声認識というのは、雑音対策をしない場合には、人間にはほとんど気にならないような小さな背景雑音にも反応してしまう。そこで雑音をとり除こうという話になるのだが、話の順番が逆であると思った。雑音に弱い音声認識技術のために雑音低減をするのではなく、雑音に強い音声認識技術を作らねばならないのである。

 両者がどう異なるのかがよく分からないと思うが、こういうことである。

 今の自動音声認識というのは、まず、入力音声を特徴パラメータの時系列に変換する。その後、そのパラメータ列を音響モデル・言語モデルなどのデコーダに入力して単語や文を出力する。雑音低減の技術というのは、(やり方はいろいろとあるがこの文脈でいえば)特徴パラメータの時系列から雑音をとり除くことを意味する。では、特徴パラメータの時系列に、雑音はどれだけ混入しているのか?

 人間は音量をほぼ対数尺度で聞きとる。つまり、xという大きさの音が入ってきたら、主観的にはlog(x)の尺度で聞きとることになる。ここで、xが音声sと雑音nの和だったとする(x=s+n)。このとき主観的には、log(s+n)の大きさの音を聞いていることになる。ところで、工学的にはlog(a+b)がlog(max(a,b))に近似できることが知られている。つまり、雑音よりも音声が充分に大きければ、主観的にはlog(s+n)がlog(s)に近似できるということである。自動音声認識SNR=10dB程度でも大きな打撃を受けるのだが、理屈の上ではlog(s+n)がlog(s)に近似できる範囲であり、雑音の影響を受けたとしても誤差の範囲であるはずである。

 ではなぜ自動音声認識はわずかな雑音にも弱いのか。それは現実にはSNRが時間変動するからである。時間によって、音声と雑音の大きさの比が変わるのである。極端な例を挙げると、「っ」の部分の空白の時間には音声信号がないので雑音だけが聞こえることになる。「っ」でなくても音声には想像以上に切れ目があり、そこで雑音が大きくなる。

 そういったことを考えると、雑音対策をすべきところは、特徴量の部分ではなく、音響モデルなどのデコーダの部分ではないかと思えるのである(実際にデコーダの部分で雑音対策を研究している人たちもたくさんいる)。

 ついでなので、後日、雑音が特徴量にどの程度混入しているのかということについての簡単な実験をこの日記に書こうと思う。