1

私は現在、MFCC機能を抽出する目的でネットワークを回帰しようとしています。ネットワークの入力は、サンプリングされ、フレーム化されたオーディオ ファイルです。これには、いくつかの問題があるようです。または、一貫した出力が得られるような方法で実行します。つまり、入力として機能しないため、一貫したフレーム サイズを意味します。ニューラル ネットワークの場合。

現在、各オーディオファイルを次のようにサンプリングしてフレーミングしています。

def load_sound_files(file_paths , data_input):
    raw_sounds = []
    data_output = []
    for fp in file_paths:
        y,sr = librosa.load(fp)
        X = librosa.util.frame(y)
        raw_sounds.append(X)
    return raw_sounds

各オーディオがリストに追加され、各リスト内にフレーム化されたオーディオファイルの配列があることを意味します。

[array([[frame],[frame],...,[frame]],dtype=float32), ...]

これを印刷してみた

print raw_sounds[0].shape
print raw_sounds[1].shape

で、こんな結果になりました

(2048, 121)
(2048, 96)

しかし、なぜ私はこの結果を得ているのですか?フレーミング オプションに関しては何も変更していませんが、なぜ異なるのですか?

また、一貫性を保つ方法がない場合、一貫性のない入力を使用して、これを実行できるニューラル ネットワークをどのようにトレーニングするのでしょうか?

4

2 に答える 2

1

あなたの結果

(2048, 121)
(2048, 96)

フレームの長さとフレーム数を指定します。したがって、フレーム サイズは実際には一貫して 2048 サンプルの長さになります。2 つの唯一の違いは、最初のサウンド ファイルに 121 フレーム、2 番目のサウンド ファイルに 96 フレームがあることです。

于 2016-11-13T18:04:50.367 に答える
0

オーディオ ファイルは、長さが異なるシーケンスです。

可変長入力を処理する方法は複数あります。通常、固定次元の入力をニューラル ネットワークに複数回 (オーディオ フレームごとに 1 回) フィードします。次に、ネットワークはRNN、LSTM、または seq2seq (流動的ですが、contrib/seq2seq 内) などのアーキテクチャを使用してシーケンスから学習します。シンプルな DNN (フィードフォワード) アーキテクチャを使用することもできます。

于 2016-11-07T20:20:16.043 に答える