リンク先のプログラムには「テストデータが学習データの一部からなる」という重大なミスがあります。
修正するには
file_name = "learning_sample/%d_%d_%d.wav" % (bell_num1,noise_num,level_nums[8])
の部分を
file_name = "learning_sample/%d_%d_%d.wav" % (bell_num1,noise_num,level_nums[10])
へ変更する必要があります。
svm.pyの基本構造は
for pair in pairs:
ベル1の
学習データ作成
テストデータ作成
ベル2の
学習データ作成
テストデータ作成
svm(全学習データ)
predict(全テストデータ)
のようです。
学習データは、予め作成された音源のファイル名を指定して、それをget_featureで特徴ベクトルに変換したものからなっていることが読み取れます。
音源ファイル名は(鈴番号, ノイズ番号, 信号の音量レベル)の3組との対応があり、音源ファイル名を指定するには、鈴番号はすでに定まっているので、ノイズ番号と信号音量レベルを指定すればよいことになります。これらを実行している部分を抜粋すると以下のようになります。
for noise_num in noise_nums[0:10]:
for level_num in level_nums[0:10]:
音声ファイルを読み込みget_featureで特徴ベクトルに変換
特徴ベクトルと鈴のラベルをスタック
テストデータの作成は学習データの作成とほぼおなじです。違いはlevel_numのfor文がないことです。
敢えて学習データ作成と分けて書くと
for noise_num in noise_nums[0:10]:
file_name = "learning_sample/%d_%d_%d.wav" % (bell_num1,noise_num,level_nums[8])#<---- 10とするべき
音声ファイルを読み込みget_featureで特徴ベクトルに変換
特徴ベクトルと鈴のラベルをスタック
となります。外のfor loopが学習データ作成のものと同じなので、あわせて書くと
for noise_num in noise_nums[0:10]:
for level_num in level_nums[0:10]:
音声ファイルを読み込みget_featureで特徴ベクトルに変換
特徴ベクトルと鈴のラベルをスタック
file_name = "learning_sample/%d_%d_%d.wav" % (bell_num1,noise_num,level_nums[8])#<---- 10とするべき
音声ファイルを読み込みget_featureで特徴ベクトルに変換
特徴ベクトルと鈴のラベルをスタック
となり、もとのコードと一致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/04 05:36
2017/11/04 08:21
退会済みユーザー
2017/11/04 09:32