見出し画像

Sound Analysisのビルトイン音声分類器のラベル一覧と実装方法 #WWDC21

ビルトイン音声分類器(Built-in Sound Classifier)の詳細はこちらの記事を参照:

要約:

・Sound Classifier/Sound Classificationはディープラーニングで音声を識別するもの
・これまでは自分でトレーニングデータセットを用意してCreate MLでモデルの学習から行う必要があった
・iOS 15で、システム組み込み(built-in)のモデルが利用できるようになった🎉

本記事ではこのbuilt-in sound classifierで識別できる音声の一覧と、実装方法を公式サンプルから読み解く。精度の検証はまた別記事にて。

識別可能なラベル(クラス)の全リスト

WWDC21のセッションでは次のように一覧表示されていたが、

画像1

実際にフレームワークから出力してみた。コードとしてはこれだけ:

let request = try! SNClassifySoundRequest(classifierIdentifier: .version1)
let classifications = request.knownClassifications

SNClassifySoundRequestのiOS 15で追加された新しいイニシャライザ `SNClassifySoundRequest(classifierIdentifier:)` の引数の型はSNClassifierIdentifier。いまのところ .version1 だけが指定できる。

SNClassifySoundRequestのknownClassificationsも新たに追加されたメソッドで、String型で識別できる音声クラスのラベル名の一覧が取得できる。

var knownClassifications: [String] { get }

version1では、識別できる音声は全部で303種類。以下その全リスト。

speech
shout
yell
battle_cry
children_shouting
screaming
whispering
laughter
baby_laughter
giggling
snicker
belly_laugh
chuckle_chortle
crying_sobbing
baby_crying
sigh
singing
choir_singing
yodeling
rapping
humming
whistling
breathing
snoring
gasp
cough
sneeze
nose_blowing
person_running
person_shuffling
person_walking
chewing
biting
gargling
burp
hiccup
slurp
finger_snapping
clapping
cheering
applause
booing
chatter
crowd
babble
dog
dog_bark
dog_howl
dog_bow_wow
dog_growl
dog_whimper
cat
cat_purr
cat_meow
horse_clip_clop
horse_neigh
cow_moo
pig_oink
sheep_bleat
fowl
chicken
chicken_cluck
rooster_crow
turkey_gobble
duck_quack
goose_honk
lion_roar
bird
bird_vocalization
bird_chirp_tweet
bird_squawk
pigeon_dove_coo
crow_caw
owl_hoot
bird_flapping
insect
cricket_chirp
mosquito_buzz
fly_buzz
bee_buzz
frog
frog_croak
snake_hiss
snake_rattle
whale_vocalization
coyote_howl
elk_bugle
music
plucked_string_instrument
guitar
electric_guitar
bass_guitar
acoustic_guitar
steel_guitar_slide_guitar
guitar_tapping
guitar_strum
banjo
sitar
mandolin
zither
ukulele
keyboard_musical
piano
electric_piano
organ
electronic_organ
hammond_organ
synthesizer
harpsichord
percussion
drum_kit
drum
snare_drum
bass_drum
timpani
tabla
cymbal
hi_hat
tambourine
rattle_instrument
gong
mallet_percussion
marimba_xylophone
glockenspiel
vibraphone
steelpan
orchestra
brass_instrument
french_horn
trumpet
trombone
bowed_string_instrument
violin_fiddle
cello
double_bass
wind_instrument
flute
saxophone
clarinet
oboe
bassoon
harp
bell
church_bell
bicycle_bell
cowbell
tuning_fork
chime
wind_chime
harmonica
accordion
bagpipes
didgeridoo
shofar
theremin
singing_bowl
disc_scratching
wind
wind_rustling_leaves
wind_noise_microphone
thunderstorm
thunder
water
rain
raindrop
stream_burbling
waterfall
ocean
sea_waves
gurgling
fire
fire_crackle
boat_water_vehicle
sailing
rowboat_canoe_kayak
motorboat_speedboat
car_horn
power_windows
vehicle_skidding
car_passing_by
race_car
truck
air_horn
reverse_beeps
bus
emergency_vehicle
police_siren
ambulance_siren
fire_engine_siren
motorcycle
traffic_noise
rail_transport
train
train_whistle
train_horn
railroad_car
train_wheels_squealing
subway_metro
aircraft
helicopter
airplane
bicycle
skateboard
engine
lawn_mower
chainsaw
engine_knocking
engine_starting
engine_idling
engine_accelerating_revving
door
door_bell
door_sliding
door_slam
knock
tap
squeak
drawer_open_close
dishes_pots_pans
cutlery_silverware
chopping_food
frying_food
microwave_oven
blender
water_tap_faucet
sink_filling_washing
bathtub_filling_washing
hair_dryer
toilet_flush
toothbrush
vacuum_cleaner
zipper
keys_jangling
coin_dropping
scissors
electric_shaver
typing
typewriter
typing_computer_keyboard
writing
telephone
telephone_bell_ringing
ringtone
alarm_clock
siren
civil_defense_siren
smoke_detector
foghorn
ratchet_and_pawl
clock
tick
tick_tock
sewing_machine
mechanical_fan
air_conditioner
printer
camera
hammer
saw
power_tool
drill
hedge_trimmer
gunshot_gunfire
artillery_fire
fireworks
firecracker
eruption
boom
chopping_wood
wood_cracking
glass_clink
glass_breaking
liquid_splashing
liquid_sloshing
liquid_squishing
liquid_dripping
liquid_pouring
liquid_trickle_dribble
liquid_filling_container
liquid_spraying
water_pump
boiling
underwater_bubbling
whoosh_swoosh_swish
thump_thud
basketball_bounce
slap_smack
crushing
crumpling_crinkling
tearing
beep
click
bowling_impact
playing_badminton
playing_hockey
playing_squash
playing_table_tennis
playing_tennis
playing_volleyball
rope_skipping
scuba_diving
skiing
silence

WWDC21のSound Analysisのセッションではcowbellを認識するデモをやっていて、

画像3

「もっと使いたくなるクラスを使用すればいいのに...」と思ってしまったが、こうして一覧を見ると汎用性のあるクラスも多々ある。

用途にもよるが、個人的にはspeech, silenceがあるのが嬉しい。精度が良ければこちらの「AIで人の声を抽出して動画から自動で無音をカットする」Chopperというアプリで利用しているSound Classificationのカスタムモデルをごそっとこちらのビルトインモデルで置き換えようと思っている(そのための精度検証はまた別記事で)

iOS 14で追加された「サウンド認識」との関係

上記リストには見覚えがある項目もあると思うが、iOS 14からある「サウンド認識」にある項目も一通り含まれているようだ。

画像2

つまり、同機能もこのビルトイン分類器を使用しているのだろう。

ということは、このビルトイン分類器はiOS 14から内部的には持っていたということになる。(我々サードパーティアプリ開発者は使えないわけだけど)

サンプルを試す/ソースコードを読み解く

Classifying Live Audio Input with a Built-in Sound Classifier」という公式サンプルの実装の気になる部分を読み解いていく。

ここから先は

5,031字 / 3画像

堤がWWDC 2021およびiOS 15についてセッションやサンプルを見つつ勉強したことを記事にしていくマガジンです。NDAの都合上、Ap…

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/