質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

音認識の具体的な手順

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 138

score 5

機械学習(教師あり学習)を用いた、音(音声ではない)認識の具体的な手順(プログラミング言語はpython)について。
(機械学習、音認識どちらも初心者です。)

例えば、屋外の騒音レベル時刻歴データを1日分(サンプリング周期0.5秒)取得し、そのデータの中からニワトリの鳴き声を特定する具体的な手順について教えていただきたいです。


次に、その手順の中でいくつか質問があります。
質問1
音声認識であれば、サンプリング周波数が16kHzの音声を扱うことが多いため、フーリエ変換を使って音声を周波数分解すると、ナイキスト周波数8kHzまでの周波数の情報を取得することができると思います。一方で、騒音レベル時刻歴データ1日分はサンプリング周期が0.5秒(サンプリング周波数2Hz)であるため、周波数分解しても1Hzまでの情報しか得られません。人間の可聴範囲にすら入っていない周波数に分解しても意味はあるのでしょうか?

質問2
意味がないとすれば特徴量としてMFCCは使えないですよね?
だとしたら、時刻列データをそのまま使うということになるのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

A1. 鶏の声にそんな低い音はそれほど入っていないはずです。しかもその周波数に耐えられるマイクがあるとしたら業務用です。そこまで気にしなくてもいいのでは?が答えです。もう一つの答えは、FFTはちょっと乱暴かなぁと思います。

A2.MFCCは良さそうな気がします。画像にできればCNNでさばけますね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/11/26 06:31 編集

    > 「鶏の鳴き声」と「それ以外(例えばノイズ)」の2つに分けて、の部分における、
    > 鳥の鳴き声とそれ以外はどのようなデータになっているのでしょうか?
    > いわゆるmfccなどの特徴量のことでしょうか?
    そうなります。
    MFCCでもほかの方法でも良いですが、以下の2つがセットになります。
    - 学習対象の生データ(もしくは加工した特長量データ)
    - 学習対象のラベル
    画像系の深層学習だと学習させるデータ側がx、ラベルをyと表現することが多いです。

    無理やり式にすると、
    y=f(x)のfを学ばせるのが深層学習の学習部分で、
    f(x)に値を突っ込んで「ほらyが出たでしょ!」をするのが推論部分です。

    f(x)のxの部分がFFT単体だと表現力が著しく落ちることは容易に想像できます。
    十分かどうかは分かりませんがMFCCであれば結構な表現力(少なくとも2Dデータは)得られそうです。

    > 結論として、mfccを特徴量として使うことができるのですか?
    やっていませんが、MFCCはFFT単体より「筋は良い」だろうと思います。
    ※とりあえず使えると、ちゃんと筋が良い、は別問題です。

    キャンセル

  • 2021/11/26 16:29

    質問の例において、mfccを得るための基本的な手順は、

    騒音レベル時刻歴データ→FFT→対数パワースペクトル→メルフィルタバンク分析→対数メルフィルタバンク特徴量→離散コサイン変換→MFCC

    となると思います。
    ここで、メルフィルタバンク分析は人間の聴覚特性に基づいて集約を行う方法で、分析周波数範囲を20Hz以上にすると思います。また、低周波数帯域には収録機器の電気的なノイズが含まれていると聞きました。
    そのため、質問の例では騒音レベル時刻歴データ1日分はサンプリング周期が0.5秒(サンプリング周波数2Hz)であるため、FFTしても1Hzまでの情報しか得られないことから、そもそもメルフィルタバンク分析の分析周波数範囲を20Hz以上にすることは不可能であり、さらに電気的なノイズだらけであると思います。

    つまり、上の手順では、メルフィルタバンク分析ができないことからMFCCを求めることはできないということでしょうか?

    キャンセル

  • 2021/11/26 20:08 編集

    https://www.wizard-notes.com/entry/music-analysis/insts-timbre-with-mfcc
    ここが分かりやすいと思います。

    生データにノイズがあろうがなかろうが、低周波分が含まれていようがいまいが、それも含めて「画像にさえ変換できれば」判別できるのが画像認識技術です。一般的な画像(例えばねこの写真)と比べて、音のスペクトログラムは著しく偏りがある(横方向に目に見えて模様ができますよね?)ので、画像認識で使われるCNNベースの画像認識技術が最適とは思いませんが、少なくとも「実戦に耐えうる」くらいの性能はあるだろうと(私は勝手に)思います。

    つまるところ、
    - 0.5秒の音に対してFFTだけで片付けて周波数の羅列(ピークの周波数の詰まったリスト)にしても表現力は少ない(時間軸がないので表現力が知れている)。
    - 0.5秒の音に対してMFCCを使えば縦に周波数、横に時間の画像に起こせるので表現力が高い(単品のFFTと比べれば時間軸分だけ表現力が掛け算で増えますよね?)。
     そして表現力が高ければ、ノイズと鶏と区別できる「だろう」、という話です。
     表現力と引き換えに過学習のリスクも背負いますが、学習データが多ければ何とかなるだろうと思います。

    低周波分云々は無理してあれこれ捌く必要はないと思います。
    低周波分があってもノイズだろう、ないなら内でラッキーと割り切って捌くくらいでいいと思います。
    それすらも画像認識技術であれば乗り越えられるはずです。
    一貫性がない部分はノイズとして無視されるためです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る