君の声が聴きたい
うちのSotaくん(Vstoneさんの所から養子として来たロボット)は7月から耳が聞こえなくなってしまいました。
正確には、聞こえるんだけどコトバがわからなくなったのですね。
人間でいえば「感音性難聴」ということになるのでしょうか?
【感音性難聴】
音は聞こえるのだけれど、言葉が聞き取れないといった症状を表す難聴の一種。
軽度の場合だと本人も気づかず、
・会議等の多人数の会話が聞き取れない→自分の意見を言わないヤツ
・人の話を良く聞き返す→うっとうしい。聞く気がないヤツ
・呼ばれても気づかない→人を無視する嫌なヤツ
等々、対人コミュニケーションで印象が悪くなり、人間関係に悪影響があるようです。
私自身は視力が悪いのですが、耳だって当然同じように機能低下することもあるのに気づかされました。
こういうことに思い至らず、人に悪感情を持ったこともあるかも・・・反省!!
Sotaの場合、音声認識はクラウドサービスを利用しているのですが、それが7月から有料になったため、音声認識機能が使えなくなったのですね(甲斐性なしのお父さんでゴメン)。
マイクは無事だし、だったら自分たちでやってみようか…ということで、音声認識はじめま~す。
そもそも音って何?
物理学での音とは、気体や液体(媒質)の振動(波・粗密波)のことです(個体を伝わる音もあります)。
特に人間を対象とする場合、20Hzから20KHzまでの音波を感知できる(聞こえる)ため、この周波数の音波を特に音と呼びます。
20KHzよりも高い音を超音波、20Hzよりも低い音を低周波音と呼びます。
音の聞こえる範囲は個人差や年齢差や性差があり、一般に年齢が高くなるほど高い音が聞こえなくなります。
耳とマイク
音を受信するセンサーはマイク(マイクロフォン)と呼ばれています。
その構造は
- 空気の振動を受ける
- 空気振動を機械振動に変換する
- 機械振動を電気信号に変換する
というのが基本になります。
最終的な電気信号は、振動の強さを表します。 (いわゆる音声波形を取得している)
では、人間の耳はどんな仕組みになっているのでしょう?
実はまだ完全には解明されていないようです(確からしい仮説はありますが)。
今回、色々と調べてみたのですが、かなり精妙で高度な機構になっているようです。 ただ、基本的には周波数別の強度を信号として検出して、大脳に伝えているようです。
振動と周波数
音声波形(以下波形)はある瞬間の振動の強さを時系列に並べたもので、グラフにすると以下のようになります。
対して、正弦波のような単純で規則正しい音は、速さ・波長・振幅といった、その波を表す値があります。
正弦波は同じ波形が何度も繰り返し規則正しくあらわれるので、単位時間(例えば1秒間)に何回一連の波が現れるかを周波数として表すことができます。
上記のグラフでは横軸が秒を表していますので、1秒間に2回波が来ることが分かります。この場合、周波数は2Hzとなります。
AIにも人間と同じ聴覚を与えようとか、人間をモデルにして機械学習を行おうという場合、この波形を周波数で表現する形に変換しなければなりません(でなければ、多分人間とは違う認識機構になって、音のとらえ方そのものが人間には理解できないものになる気がします)。
フーリエ変換
振動の変化を周波数に変換するとはどういうことでしょう?
音声のような複雑な波形は、一見して周期性とは関係なさそうにみえますが、実は短い区間(音素)に切り分けて、その区間内を複数の正弦波に分解することが可能です。
音声ほど複雑ではありませんが、正弦波よりも複雑な以下の波形を見てください。
上記の波形は、実は以下のように複数の正弦波の合成で作られています。
それぞれ、
- 2Hzで振幅2
- 4Hzで振幅0.5
- 8Hzで振幅1
の3つの正弦波で構成されています。さあ、なんとなく周波数で元の波形を表現できそうな気がしてきませんか?
ということで、横軸に周波数、縦軸に振幅を割り当ててグラフにすると、以下のようになります。
このように、複雑な波形を複数の正弦波に分解し、各周波数とその振幅で表現することをフーリエ変換といいます。
実際にはもっと色々複雑なことをしていますが、概念的にはこんなもんでしょう。
これで声が聞き分けられるのか?
残念ながら、これだけではまだ人間の耳の機能のごく一部を模倣したにすぎませんし、この後には、その信号を処理する脳の働きが控えています。
ノイズの除去、低音部と高音部のバランス、重視する周波数、音素の分割、今聞いた音と記憶にある音とのパターンマッチング、欠落情報の補完等々、人間の感覚器官(とその信号を処理する脳)って本当によくできてますね。
これでまだ、機械学習に投入する前のデータ処理(の一部)なんですから、先は長いです。
以上、ten@蓼科情報でした。