LoginSignup
1
3

More than 1 year has passed since last update.

ketosを使って音響解析。音響解析、機械学習用ライブラリ

Posted at

ketosとは

ketosとはpythonのライブラリで、音響データと機械学習を扱うことができる、音響解析に特化したライブラリです。
目的としては水中音響における難しい検出と分類を行う機械学習モデルの作成を支援することとなっています。
ketosという名前は古代ギリシャ語で大きな魚、クジラ、サメ、または海の怪物を表すらしい…かっこええ…

公式ドキュメント

ketosのインストール

ketosの最新版はpython3.6以上,3.8未満で動作します。
pipでインストールできます。

pip install ketos

基本的なトレーニングデータベースの作成

公式ドキュメントのチュートリアルに沿って説明します。
チュートリアルでは北大西洋セミクジラの鳴き声を検出します。
手順としては音声データからスペクトログラムを作成し、機械学習を行い、検出器を構築します。

チュートリアルで使用するデータが欲しい方はこちらのリンクからダウンロードできます。

ライブラリをインポートします

import pandas as pd
from ketos.data_handling import selection_table as sl
import ketos.data_handling.database_interface as dbi
from ketos.data_handling.parsing import load_audio_representation
from ketos.audio.spectrogram import MagSpectrogram
from ketos.data_handling.parsing import load_audio_representation

ダウンロードしたデータを読み込みます

csvファイル名のところは自分のデータの保存先を指定してください。

annot_train = pd.read_csv("annotations_train.csv")
annot_val = pd.read_csv("annotations_val.csv")

これらを表示すると音声ファイルの名前とクジラの鳴き声が含まれているか否かのラベルでできたデータフレームが出てくるはずです。

これらのデータフレームをketosで利用される形に変換する必要があるようです。

map_to_ketos_annot_std ={'sound_file': 'filename'} 
std_annot_train = sl.standardize(table=annot_train, signal_labels=[1], backgr_labels=[0], mapper=map_to_ketos_annot_std, trim_table=True)
std_annot_val = sl.standardize(table=annot_val, signal_labels=[1], backgr_labels=[0], mapper=map_to_ketos_annot_std, trim_table=True)

これで完了です。

スペクトログラムの設定を選択

サンプリングレートやウィンドウ幅、移動幅などを設定します。
これも公式の通りに設定しておきます。
jsonファイル名のところは自分のデータの保存先を指定してください。

spec_cfg = load_audio_representation('spec_config.json', name="spectrogram")

spec_cfgの値は次のようにして変更することも可能です。

#spec_cfg['step'] = 0.064

データベースの作成

data dirで指定するところを自分の保存先へ変更してください。
trainのデータベース作成

dbi.create_database(output_file='database.h5', data_dir='data/train',
                               dataset_name='train',selections=std_annot_train,
                               audio_repres=spec_cfg)
dbi.create_database(output_file='database.h5', data_dir='data/val',
                               dataset_name='val',selections=std_annot_val,
                               audio_repres=spec_cfg)

これでデータベースが作成できたので開いてみましょう。

db = dbi.open_file("database.h5", 'r')

データベースの作成は終了です。

長くなるので一旦記事を分けようと思います。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3