#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')
データベースの作成は終了です。
長くなるので一旦記事を分けようと思います。