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

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

新規登録して質問してみよう
ただいま回答率
85.48%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

709閲覧

音認識の具体的な手順

SomeoneHello

総合スコア5

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/11/24 17:12

編集2021/11/24 17:35

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

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


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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

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

投稿2021/11/24 22:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SomeoneHello

2021/11/25 09:41

音認識の具体的な手順についてお聞きしたいです。 まず、教師データである鶏の鳴き声の音の特徴量を抽出する。 この時、特徴量とは具体的になんなのでしょうか?波形をそのまま使うことはできないのでしょうか? 次に特徴量に対してラベル付けをする。 この時、ラベル付けとは具体的にどのような処理をするのか?また、pythonでどのようなプログラムを書くのか? 鶏の声にそんな低い音はそれほど入っていないはずです。 >周波数分解しても意味がないということでしょうか? その周波数に耐えられるマイクがあるとしたら業務用 >周波数に耐えるとは具体的にどう意味なのでしょうか? FFTはちょっと乱暴かなぁと思います >フーリエ変換を使わずにMFCCは得られるのでしょうか?
退会済みユーザー

退会済みユーザー

2021/11/25 13:00 編集

> この時、特徴量とは具体的になんなのでしょうか? https://www.itd-blog.jp/entry/voice-recognition-3 ここが詳しいです。 > 波形をそのまま使うことはできないのでしょうか? 波形データは時間方向に連なった細かく振動した緻密なデータなので、そのまま使えなくはないのかもしれませんが、緻密すぎて扱いに困ると思います。 > ラベル付けとは具体的にどのような処理をするのか? この場合「鶏の鳴き声」と「それ以外(例えばノイズ)」の2つに分けて、鶏に1、それ以外は0のようなデータ(識別できるラベル、普通は整数)を割り振ります。適当な長さに音を区切って、鶏以外を0フォルダ鶏のデータだけ1というフォルダに突っ込んだりすると作業しやすいはずです。 > また、pythonでどのようなプログラムを書くのか? https://www.google.com/search?q=%E9%9F%B3%E5%A3%B0+%E8%AA%8D%E8%AD%98+mfcc >> 鶏の声にそんな低い音はそれほど入っていないはずです。 >周波数分解しても意味がないということでしょうか? 例えば100Hzのサイン波の音を聞けば分かるはずです。こんな野太い声の鶏を私は知りません。 少しは入っているかもしれませんが、メインの音ではないはずです。 測ったわけではないですが、鶏の鳴き声のメインの周波数は恐らく1kHzだとかだと思います。 意味がないとまでは言いませんが筋は確実に悪いです。 音声認識でFFTを(普通は)使わないのと同じです。 もし鶏がずっと同じ音で音程の変化がなく鳴き続けるなら有効かもしれません。 (ラッパをダイヤフラムにつなげればできるかもしれませんが、そんなのは鶏で出せる音ではないですよね?) > 周波数に耐えるとは具体的にどう意味なのでしょうか? あまり安いマイクではあまり低い音は拾えませんし、あまりスピーカーでは低音をほとんど流すことすらできません。上述の通り筋の悪い手法に何万円もかけて装置をそろえる価値があるかどうかという話です。お勧めできませんが、お金と時間に余裕があるのであれば試したらいいと思います。 >> FFTはちょっと乱暴かなぁと思います これに補足すると、鶏の鳴き声を単にFFTを使って一定の区間の音をピーク周波数の羅列にして評価するのは乱暴だという話です。 >フーリエ変換を使わずにMFCCは得られるのでしょうか? https://en.wikipedia.org/wiki/Mel-frequency_cepstrum
SomeoneHello

2021/11/25 21:06

この場合「鶏の鳴き声」と「それ以外(例えばノイズ)」の2つに分けて、鶏に1、それ以外は0のようなデータ(識別できるラベル、普通は整数)を割り振ります。適当な長さに音を区切って、鶏以外を0フォルダ鶏のデータだけ1というフォルダに突っ込んだりすると作業しやすいはずです。 > 「鶏の鳴き声」と「それ以外(例えばノイズ)」の2つに分けて、 の部分における、鳥の鳴き声とそれ以外はどのようなデータになっているのでしょうか?いわゆるmfccなどの特徴量のことでしょうか? 最初の質問 「屋外の騒音レベル時刻歴データを1日分(サンプリング周期0.5秒)取得し、そのデータの中からニワトリの鳴き声を特定する具体的な手順について教えていただきたいです。」 は結論として、mfccを特徴量として使うことができるのですか?
退会済みユーザー

退会済みユーザー

2021/11/25 21:31 編集

> 「鶏の鳴き声」と「それ以外(例えばノイズ)」の2つに分けて、の部分における、 > 鳥の鳴き声とそれ以外はどのようなデータになっているのでしょうか? > いわゆるmfccなどの特徴量のことでしょうか? そうなります。 MFCCでもほかの方法でも良いですが、以下の2つがセットになります。 - 学習対象の生データ(もしくは加工した特長量データ) - 学習対象のラベル 画像系の深層学習だと学習させるデータ側がx、ラベルをyと表現することが多いです。 無理やり式にすると、 y=f(x)のfを学ばせるのが深層学習の学習部分で、 f(x)に値を突っ込んで「ほらyが出たでしょ!」をするのが推論部分です。 f(x)のxの部分がFFT単体だと表現力が著しく落ちることは容易に想像できます。 十分かどうかは分かりませんがMFCCであれば結構な表現力(少なくとも2Dデータは)得られそうです。 > 結論として、mfccを特徴量として使うことができるのですか? やっていませんが、MFCCはFFT単体より「筋は良い」だろうと思います。 ※とりあえず使えると、ちゃんと筋が良い、は別問題です。
SomeoneHello

2021/11/26 07:29

質問の例において、mfccを得るための基本的な手順は、 騒音レベル時刻歴データ→FFT→対数パワースペクトル→メルフィルタバンク分析→対数メルフィルタバンク特徴量→離散コサイン変換→MFCC となると思います。 ここで、メルフィルタバンク分析は人間の聴覚特性に基づいて集約を行う方法で、分析周波数範囲を20Hz以上にすると思います。また、低周波数帯域には収録機器の電気的なノイズが含まれていると聞きました。 そのため、質問の例では騒音レベル時刻歴データ1日分はサンプリング周期が0.5秒(サンプリング周波数2Hz)であるため、FFTしても1Hzまでの情報しか得られないことから、そもそもメルフィルタバンク分析の分析周波数範囲を20Hz以上にすることは不可能であり、さらに電気的なノイズだらけであると思います。 つまり、上の手順では、メルフィルタバンク分析ができないことからMFCCを求めることはできないということでしょうか?
退会済みユーザー

退会済みユーザー

2021/11/26 12:50 編集

https://www.wizard-notes.com/entry/music-analysis/insts-timbre-with-mfcc ここが分かりやすいと思います。 生データにノイズがあろうがなかろうが、低周波分が含まれていようがいまいが、それも含めて「画像にさえ変換できれば」判別できるのが画像認識技術です。一般的な画像(例えばねこの写真)と比べて、音のスペクトログラムは著しく偏りがある(横方向に目に見えて模様ができますよね?)ので、画像認識で使われるCNNベースの画像認識技術が最適とは思いませんが、少なくとも「実戦に耐えうる」くらいの性能はあるだろうと(私は勝手に)思います。 つまるところ、 - 0.5秒の音に対してFFTだけで片付けて周波数の羅列(ピークの周波数の詰まったリスト)にしても表現力は少ない(時間軸がないので表現力が知れている)。 - 0.5秒の音に対してMFCCを使えば縦に周波数、横に時間の画像に起こせるので表現力が高い(単品のFFTと比べれば時間軸分だけ表現力が掛け算で増えますよね?)。  そして表現力が高ければ、ノイズと鶏と区別できる「だろう」、という話です。  表現力と引き換えに過学習のリスクも背負いますが、学習データが多ければ何とかなるだろうと思います。 低周波分云々は無理してあれこれ捌く必要はないと思います。 低周波分があってもノイズだろう、ないなら内でラッキーと割り切って捌くくらいでいいと思います。 それすらも画像認識技術であれば乗り越えられるはずです。 一貫性がない部分はノイズとして無視されるためです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問