駄目絶対音感

MikuHatsune2015-02-25

声優統計第四号において、駄目絶対音感の例として、レベルネオのCMの声優を日笠陽子と誤答する例が紹介されている。実際には早見沙織である。
 
声優の声の解析は声優統計および自分自身においても長らく滞っている分野であり、声優統計第五号がいろんなまとめサイトで取り上げられてバズっていた間にネット難民だった自分は取り残されていた。
そんなこんなで1月の間は信号解析について勉強していたのだが、ブログの更新も全然ェ…だったため、適当に下書き状態で書き進めつつ、がんばって書いた。というのも、一記事の情報量が多ければ多いほどIFの高い雑誌に採択されやすい適当に拡散されていろんな人の目に留まりやすいのですごい分量になっている…と思う(下書きの最初の時点では全然ェ…)
 
基本的にはPythonで音声信号処理PythonスクリプトMiyazawa’s Pukiwiki 公開版matlabスクリプトをRに書き下しただけのところが多いので、興味のある人はコピペしてみよう。
 

声優サンプルボイスの入手
声優事務所からクッソがんばって声優のサンプルボイスを手にいれまくる。Rで音声解析をしようと思ったら、大人の事情でmp3よりwavの方がいいので、コマンドで無音部分で分割してモノラルに一括変換する。
基本的には朗読形式のサンプルボイスなので、BGMは入っていないものとする。しかし、肝心のレベルネオのCMはBGMが入っているので、なんとかしてBGMを消去(声優音声とBGMの分離)を行うこととする(後述)。
こちらを参考に mp3splt と ffmpeg が必要。

# ターミナルで
# 44100Hz, 16bit, モノラルに変換
for nf in *.mp3; do mp3splt -sn $nf; done
for nf in *_silence_*.mp3;
do ffmpeg -i $nf -ac 1 -ar 44100 -acodec pcm_s16le ${nf%.mp3}.wav;
done
#rm *_silence_*.mp3

 
ここで、はやみんが「はやみさおりです」と言っているファイルと例にやってみる。必要なパッケージ群はあらかじめインストールしておく。

library(tuneR)
library(seewave)
library(sound)
library(dtt)
library(fastICA)
library(phonTools)
library(e1071)
library(gtools)
library(randomForest)
library(ape)
library(tsne)
library(Rlof)
setwd("/cv_mp3/file/") # wav ファイルがあるディレクトリ

無音部分で分割したファイルで、はやみんのデータは"HAYAMI"とついている前提で、はやみんデータだけ読み込んだとする。そのなかで「はやみさおりです」ファイルだけ取っておく。

f <- list.files(pattern="HAYAMI")
lab <- mapply(function(x) strsplit(x, "_silence_")[[1]][1], f)
wav <- mapply(readWave, f)
w <- wav[[1]]
spectro(w, flim=c(0, 13)) # スペクトログラム


 
無音部分で分割したとしても、完全に分割されていないっぽかったので、Rのほうでも無音部分で分割してみる。extractWave 関数の msmooth のオプションで、移動平均による平滑化の具合を指定できるので適当にしてみる。

cutt <- timer(w, f=fs, threshold=0.1, msmooth=c(50, 0))
fs <- w@samp.rate
w <- extractWave(w, from=cutt$s.start[1]*fs, to=cutt$s.end[1]*fs)
spectro(w, flim=c(0, 13))



 
というわけで「はやみさおりです」部分だけを純粋に抽出したっぽいデータができた。
 

音声解析をやってみる
音声解析の前提として、
音声はいくつかの三角関数の和でできている
ということと、
和としての音声を元の周波数に分解して、構成要素を考える
ということのようである。
というわけで、上の参考リンクにあるように、答えの分かっているシミュレーションデータを使って確かめてみる。
4つの異なる周波数、振幅の正弦波が存在しているとする。

fs <- 1000
t1 <- seq(0, 10, 1/fs)
f0 <- c(130, 200, 260, 320) # 周波数
a0 <- c(1.2, 0.9, 1.8, 1.4) # 振幅
theta <- runif(length(f0), min=0, max=2)*pi # 位相のズレ的な
wav <- colSums(mapply(function(x) a0*sin(2*f0*pi*x+ theta), t1))
plot(t1, wav, type="l", xlab="Time [sec]", ylab="Amplitude", xlim=c(0, 0.05))


フーリエ変換を使うと周波数に分解することができ、絶対値を取るとそうなる。
2乗したものはパワースペクトルとなる。フーリエ変換すると左右対称になるので、前から半分を取る。

dft <- fft(wav)
Adft <- abs(dft) # 振幅スペクトル
Pdft <- Adft^2   # パワースペクトル
hz_scale <- 1/diff(range(t1)) # 周波数スケール
hz <- seq(0, fs, by=hz_scale) # 周波数
i <- seq(length(hz)/2)        # 半分
xl <- c(0, 500)
plot(hz[i], Adft[i], xlim=xl, type="l", xlab="Frequency [Hz]", ylab="Amplitude")
abline(v=f0, lty=3, col="red")
plot(hz[i], 10*Pdft[i], xlim=xl, type="l", xlab="Frequency [Hz]", ylab="Power")


振幅スペクトルの対数を逆フーリエ変換すると、ケプストラムになる。

cp <- c(Mod(fft(log(Adft, 10), inverse=TRUE)))
plot(t1[i], cp[i], type="l", xlab="Quefrency [sec]", ylab="Cepstrum")


ケプストラムの低次成分を20次元分くらい取ってきてリフタリングを行い、さらにフーリエ変換するとスペクトル包絡が取れる。
音声モデルとしては、音声出力は人固有の喉の長さと音源の対数和で取れる、ということを仮定しているらしい。

cepCoef <- 20             # ケプストラム次数
cpsLif <- cp   # arrayをコピー
# 高周波成分を除く(左右対称なので注意)
cpsLif[(cepCoef+2):(length(cpsLif) - cepCoef)] <- 0

dftSpc <- c(Mod(fft(cpsLif)))
yl <- range(20*log(c(Adft[i], dftSpc[i]), 10))
plot(hz[i], 20*log(Adft[i], 10), type="l", xlim=xl, ylim=yl)
lines(hz[i], 20*log(dftSpc[i], 10), type="l", col="blue", xlim=xl)
abline(v=f0, lty=3, col="red")


なんかうまくいかない…
あとはスペクトル包絡のおそらく変曲点っぽいところを取れば、フォルマントと呼ばれる声優固有の周波数が取れう。ただし、これは同一の音を発声しているときじゃないと比較できないような感じ?
 
よくわからんので後述のフォルマント分析をパクってくる

l <- lpc(w@left, fs=fs, show=TRUE) # lpc によるスペクトル包絡を求める
frm <- findformants(w@left, fs=fs) # フォルマント抽出


 
本当は、入力信号が周期関数でないと厳密な意味でフーリエ変換ができないから、ハミング窓と呼ばれる関数をかけて

hamming.window(length(wav))

なおかつ、高周波数領域の音は解析時につぶれるから、preemphasis というフィルターF(t)=f(t)-pf(t-1)をかけて

preEmphasis <- 0.97
pre_signal <- c(tail(signal, -1) - preEmphasis*head(signal, -1))

その後、メルフィルタというのもをかけたりすると最終的にメルケプストラムというデータが取れる。がんばって関数を作ってもいいし、Rならmelfccという関数が既にあるので面倒くさければこれを使う。
melfccは指定時間ごとに音声データをずらして、指定窓ごとにメルケプストラムを求めるっぽい。

# mel filterbank の作成
melFilterBank <- function(fs, nfft, numChannels){
	fmax <- fs / 2 # ナイキスト周波数(Hz)
	melmax <- 1127.01048 * log(fmax / 700 + 1) # ナイキスト周波数(mel)
	nmax <- nfft / 2 # 周波数インデックスの最大数
	df <- floor(fs / nfft) # 周波数解像度(周波数インデックス1あたりのHz幅)
  dmel <- melmax / (numChannels + 1) # メル尺度における各フィルタの中心周波数を求める
	melcenters <- seq(numChannels) * dmel
	fcenters <- 700 * (exp(melcenters / 1127.01048) - 1) # 各フィルタの中心周波数をHzに変換
	indexcenter <- round(fcenters / df) # 各フィルタの中心周波数を周波数インデックスに変換
	indexstart <- c(0, head(indexcenter, -1)) # 各フィルタの開始位置のインデックス
	indexstop <- c(tail(indexcenter, -1), nmax) # 各フィルタの終了位置のインデックス
	filterbank <- matrix(0, nr=numChannels, nc=nmax)
	for(l in seq(numChannels)){
		# 三角フィルタの左の直線の傾きから点を求める
		increment <- 1 / (indexcenter[l] - indexstart[l])
		for(k in seq(indexstart[l], indexcenter[l]-1) + 1){
			filterbank[l, k] <- (k - indexstart[l]) * increment
		}
		# 三角フィルタの右の直線の傾きから点を求める
		decrement <- 1 / (indexstop[l] - indexcenter[l])
		for(k in seq(indexcenter[l], indexstop[l]-1) + 1){
			filterbank[l, k] = 1 - ((k - indexcenter[l]) * decrement)
		}
	}
	filterbank <- cbind(0, filterbank)
	res <- list(filterbank=filterbank, fcenters=fcenters)
	return(res)
}

メルケプストラムは人が持つ音声認識能力に非常に近い解析、とかなんとかいろいろ書いてあった。もうひとつ、メルケプストラムの時間変化量である動的特徴量というものもある。こちらを参考に線形回帰の係数をただとるだけの関数を作る。

# melfcc のcepstra 行列をぶち込む形式
# dd は前後いくつ取るか
delta_cepstrum <- function(mat, dd=2){
	res <- mat
	dat1 <- mat[c(rep(1, dd) ,seq(nrow(mat)), rep(nrow(mat), dd)), ] 
	x <- seq(2*dd + 1)
	for(j in seq(ncol(dat1))){
		for(i in (dd+1):(nrow(dat1)-dd)){
			y <- dat1[(i-dd):(i+dd), j]
			lm1 <- lm(y ~ x)
			res[i-dd, j] <- lm1$coefficients[2]
		}
	}
	return(res)
}

dc <- delta_cepstrum(m$cepstra, dd=5)
matplot(t(dc), type="l")

 

独立成分分析
 

 
レベルネオのCMにBGMが混じっているのをどうにかしよう。音声の分離には、カクテルパーティ効果とか聖徳太子効果とか言われる、独立成分分析と呼ばれる手法を用いる。これは、音源が独立に音を発していて、観測者がそれを混成信号として受け取るときに、なんとかそれらを分離できるという手法である。

# ICA をする
neo <- readWave("tvcm_stereo.wav")
X <- cbind(neo@left, neo@right)
a <- fastICA(X, 2, alg.typ = "deflation", fun = "logcosh", alpha = 1, 
             method = "R", row.norm = FALSE, maxit = 200,
             tol = 0.0001, verbose = TRUE)

Sというリストに分離された信号が入っているわけだが、これをwav化して保存する。

S <- apply(a$S, 2, Wave, samp.rate=neo@samp.rate, bit=neo@bit)
for(i in seq(S)) writeWave(S[[i]]*3000, paste("neo", i, ".wav", sep=""))

sec0 <- 7.3 
sec1 <- 8.5
w <- extractWave(S[[1]], from=sec0*fs, to=sec1*fs)
spectro(w, flim=c(0, 5))

たぶんBGMがちょっと消えたやつ。

 
はやみんの音声が消えてBGMになったやつ。6秒くらいからの盛り上がり部分で振幅が大きくなっている。

 
たぶん正規化されて出力は音声が小さいので適当に底上げしておく。
ステレオ音源2つから2つの独立音源を抽出した的な感じでやると、ひとつはBGMが完全分離できたが、はやみんの「レベルネオ」は純粋に分離できなかったっぽい。
これで少しノイズが軽減したとしよう。
15秒のCMのなかで、「レベルネオ」は7秒から8秒くらいのところなので、ここを切り出し、さらに100msec 程度ランダムサンプリングして、同様に声優サンプルボイスからランダムサンプリングして得られた日笠、早見学習器にぶち込んで推定結果を見ることにする。

n_trn <- 1000  # 学習データ数
ms <- 100/1000 # melfcc 用の秒数
f_n <- 4       # 採用するformant 数
cv_label <- rep(cv_name, each=n_trn)
res <- array(0, c(12*18, n_trn, length(cv_name))) # メルケプストラム
fres <- array(0, c(f_n, n_trn, length(cv_name)))  # フォルマント
counter <- 1
pb <- txtProgressBar(max=length(wav)*n_trn, style=3)
for(cv in seq(wav)){
	i <- 1
	while(i <= n_trn){
		setTxtProgressBar(pb, counter)
		idx <- sample(seq(wav[[cv]]), size=1)
		w <- wav[[cv]][[idx]]
		d <- timer(w, f=fs, threshold=0.1, msmooth=c(50, 0), plot=FALSE)
		k <- which(d$s.end - head(d$s.start, length(d$s.end)) > ms)
		didx <- ifelse(length(k) == 1, k, sample(k, size=1))
		if (length(k) > 0){
			w1 <- extractWave(w, from=d$s.start[didx]*fs, to=d$s.end[didx]*fs)
			sec0 <- runif(1, min=0, max=length(w1@left)/fs-ms)
			sec1 <- sec0 + ms
			#spectro(w);abline(v=c(sec0, sec1), lty=3, col=2)
			tmp_w <- extractWave(w1, from=sec0*fs, to=sec1*fs)
			m <- melfcc(tmp_w, wintime=ms/5, hoptime=0.01, spec_out=TRUE)
			dc <- delta_cepstrum(m$cepstra, dd=5)
			g <- rbind(m$ceps, dc)
			dim(g)
			res[, i, cv] <- c(g)
			tmp_f <- findformants(tmp_w@left, fs=fs, verify=FALSE)
			fres[, i, cv] <- head(tmp_f$formant, f_n)
			i <- i + 1
			counter <- counter + 1
		}
	}
}
# 行列に書きなおす
res1 <- matrix(res, nr=length(cv_name)*n_trn, byrow=TRUE)
res1 <- data.frame(cv=cv_label, res1)

1000件ずつランダムサンプリングデータを作成し、学習器を作る。特に理由なくランダムフォレストを使うDeep learning って書けばアクセス増える。学習データセットでは

Call:
 randomForest(formula = cv ~ ., data = res1) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 14

        OOB estimate of  error rate: 5.15%
Confusion matrix:
       HAYAMI HIKASA class.error
HAYAMI    927     73       0.073
HIKASA     30    970       0.030

別に作成した検証データセットでも93%くらいの精度っぽい。

         HAYAMI HIKASA
  HAYAMI    887    113
  HIKASA     31    969

で、CMからちょっとだけBGMを除去し、「レベルネオ」の部分だけ100msec 程度で1000回ランダムサンプリングしたデータで、日笠・早見誤認問題を解くと…

HAYAMI HIKASA 
  1000      0 

結果としては 100% 早見沙織 でした。
今回は日笠と早見の二人だけ分類器だったが、これを3人目の「その他」分類や、もっと増やして誰になるか、とかしてもよかったかもしれない。
パラメータはメルケプストラム12次元に動的統計量12次元に、音声データを少しずつずらして得ているので12*12*9の216次元になっている。このパラメータ数に対してデータが1000で学習器を作っているので汎化性能的にどうなの?という問題がありそうななさそうな気がするが、計算資源がいまのところないので国立遺伝学研究所のスパコンを申請しようと思う。
 

フォルマント分析
フォルマントはケプストラム分析でLPCしたときの係数らしい。こちらが詳しい。
いろいろ見ていたら4つくらい成分を取れば結構認識に使えるとか使えないとか…
めんどくさいので findformant 関数を使う。

普通は「あ」とか単一で、発話者は同一の単語をしゃべってもらって解析するようだが、そんなことは無理なのでケプストラムと同様に300msec程度のランダムサンプリングを繰り返して平均をフォルマントとすることにしよう。

いい感じでフォルマント数に応じて高い周波数になっている。
 
さきほどの「はやみさおりです」サンプルボイスでフォルマントがどうなっているかプロットしてみる。
う〜んまあ、なるほどわからん

 

多次元データ解析
フォルマントは各声優についての4次元定量データなので、ごちうさっぽく多次元データ解析してみる。
まずは何も考えずクラスタリングしてみる。
男女では声の高さが人の耳で聴いても違うように、フォルマントで分類したらそれなりにきれいに分かれそうである。気になる点としては
オレの好きなほっしゃん(堀江由衣)と一番近いのは僕の王の力(右腕)(梶裕貴)である。まったく分からない。次に近いのはあらららららぎ君(神谷浩史)でこれも分からない。
癒しボイスの皆川純子が男性クラスタ内にいる。どういうことだってばよ…
ぶるわぁぁあぁ(若本規夫)に一番近いのが朴路美竹達彩奈というのもよく分からない。

 
とりあえず仲間はずれなフォルマントを有する声優がいないかLOFを行った。結果としては水樹奈々能登麻美子野島裕史の3人は外れ値のようである。なぜ外れ値になったのかはなぜと聴かれると難しいが、能登麻美子はときどき早見沙織に聴こえる、という話を聞くので、むしろ能登麻美子だけ外れ値になって早見沙織はそうならなかったのかが気になる。声優としては声に特徴があったほうがいいだろうから、むしろ外れ値になったほうがいい?よく分からないが。

 
最後にtSNEをした。SPADEは面倒くさかったのでやらなかった。
これも男女の分離はそれなりにできていそうである。クラスタリングでも指摘したように、堀江由衣皆川純子が男性側に、若本規夫らが女性側に来ている。井上和彦クラスタリングでもtSNEでもものすごい女性側である。

 
音声データから様々な統計量を抽出し、統計解析をしてみたわけだが、声優固有の周波数だとか、魅力的な周波数帯だとか、声優統計的に一番知りたいだろそれは的なことはぶっちゃけよく分からなかった。ただ、周波数帯的に似ている声優のクラスタリングには成功しているっぽいので、自分以外の声豚からのコメントを待ちながら、声優として魅力的な周波数帯の発見を課題にしたい。
と同時に、統計的声質変換を使って、例えば配役の替わってしまったドラマCDを元の声優に戻すことや、「このキャラの配役、どう考えても間違っただろェ…」というアニメのメインヒロインを、オレの大好きな種田梨沙茅野愛衣にひたすら変換していく作業をしたい。
 

声優フォルマント

name	name1	sex	f1	f2	f3	f4
ABE_Atsushi	阿部敦	M	589.51	1566.54	2714.205	3977.01
AIZAWA_Mai	相沢舞	F	790.515	2210.77	3479.23	4803.715
AKESAKA_Satomi	明坂聡美	F	654.45	2041.49	3681.91	4620.525
ARAI_Satomi	新井里美	F	804.635	1995.16	3295.31	4837.48
ENDO_Aya	遠藤綾	F	725.825	1894.47	3415.725	4580.745
FUJITA_Saki	藤田咲	F	800.075	2337.445	3908.495	5009.175
FUJIWARA_Keiji	藤原啓治	M	484.495	1952.215	3108.065	4474.655
FUKAMI_Rica	深見梨加	F	820.72	1938.41	3240.32	4662.585
FUKUEN_Misato	福圓美里	F	657.135	1612.96	3524.275	4608.685
FUKUYAMA_Jun	福山潤	M	778.71	1758.335	2885.475	4553.025
GOTO_Yuko	後藤邑子	F	865.675	1963.835	3761.7	4633.105
HAYAMI_Saori	早見沙織	F	891.025	1993.52	3371.29	4782.065
HIKASA_Yoko	日笠陽子	F	684.91	2001.295	3384.95	4633.985
HINO_Satoshi	日野聡	M	422.295	1748.365	2873.8	3603.625
HIRAKAWA_Daisuke	平川大輔	M	704.735	1486.78	2669.13	3942.825
HIROHASHI_Ryo	広橋涼	F	799.275	1709.845	3744.475	4694.04
HONDA_Mariko	本多真梨子	F	613.99	1816.79	3328.5	4740.585
HORIE_Yui	堀江由衣	F	643.34	1870.785	3024.545	4295.065
HOSHI_Soichiro	保志総一朗	M	660.9	1698.8	2982.44	4242.1
HOSOYA_Yoshimasa	細谷佳正	M	480.02	1525.565	2690.955	3721.89
IGUCHI_Yuka	井口裕香	F	829.915	1794.01	3477.5	4641.445
INOUE_Kazuhiko	井上和彦	M	752.455	1675.4	3668.41	4717.03
INOUE_Kikuko	井上喜久子	F	646.355	2091.455	3648.705	4810.905
INOUE_Marina	井上麻里奈	F	890.165	1870.31	3213.77	4852.225
ISHIDA_Akira	石田彰	M	618.92	1660.57	2842.055	4008.31
ITO_Shizuka	伊藤静	F	775.79	2169.935	3538.38	4715.945
KADOWAKI_Mai	門脇舞以	F	805.45	2032.19	3747.215	4911.97
KAJI_Yuki	梶裕貴	M	666.36	1977.88	3081.935	4244.225
KAMIYA_Hiroshi	神谷浩史	M	733.015	1867.235	3033.125	4125.915
KAWAKAMI_Tomoko	川上とも子	F	963.5	1958.475	3233.99	4332.175
KITAMURA_Eri	喜多村英梨	F	853.335	1834.575	3451.905	4657.045
KOBAYASHI_Sanae	小林沙苗	F	862.595	2005.145	3722.065	4838.26
KOBAYASHI_Yu	小林ゆう	F	977.23	1863.32	3276.635	4572.78
KOSHIMIZU_Ami	小清水亜美	F	794.775	1912.815	3700.895	4816.725
KUGIMIYA_Rie	釘宮理恵	F	934.58	2060.09	3752.9	5022.98
KUWATANI_Natsuko	桑谷夏子	F	502.46	2000.17	3517.53	4659.135
MAENO_Tomoaki	前野智昭	M	631.9	1552.53	2741.93	3767.745
MAJIMA_Junji	間島淳司	M	533.97	1640.42	2830.39	4095.48
MATSUOKA_Yuki	松岡由貴	F	974.26	1929.965	3698.105	4966.015
MIDORIKAWA_Hikaru	緑川光	M	533.005	1724.195	2763.235	3965.055
MINAGAWA_Junko	皆川純子	F	751.27	1877.505	2929.78	4458.46
MIZUHASHI_Kaori	水原薫	F	863.865	1966.145	3470.47	4720.72
MIZUKI_Nana	水樹奈々	F	828.27	2100.06	3729.39	5504.3
MORIKUBO_Showtaro	森久保祥太郎	M	665.495	1990.815	3231.21	4785.995
NABATAME_Hitomi	生天目仁美	F	836.315	1830.53	3517.765	4566.025
NAKAHARA_Mai	中原麻衣	F	838.465	2264.61	3839.295	5129.385
NAKAMURA_Eriko	中村繪里子	F	781.97	1804.005	3168.275	4606.175
NAKAMURA_Yuichi	中村悠一	M	820.75	1801.165	3114.955	4890.245
NAKATA_Joji	中田譲治	M	649.885	1744.365	2688.55	4571
NAMIKAWA_Daisuke	浪川大輔	M	663.54	1748.935	2692.305	4460.73
NOGAWA_Sakura	野川さくら	F	853.86	1914.005	3564.795	4777.74
NOJIMA_Hirofumi	野島裕史	M	618.2	1699.73	2817.49	5105.355
NONAKA_Ai	野中藍	F	731.77	1838.66	3419.795	4291.33
NOTO_Mamiko	能登麻美子	F	665.82	1655.355	3591.065	4999.315
OGATA_Megumi	緒方恵美	F	868.935	1939.715	3512.07	4790.73
OHARA_Sayaka	大原さやか	F	547.525	2165.08	3280.085	4559.78
OKAWA_Toru	大川透	M	592.465	1651.905	2823.84	3570.945
ONO_Daisuke	小野大輔	M	577.35	1649.425	2834.91	4156.875
ORIKASA_Ai	折笠愛	F	710.48	2015.79	3376	4649.08
ORIKASA_Fumiko	折笠富美子	F	554.695	1372.91	2718.87	4028.105
OTANI_Ikue	大谷育江	F	678.975	2038.555	3726.035	4937.895
OTSUKA_Akio	大塚明夫	M	430.7	1574.98	2541.125	3867.44
PARK_Romi	朴路美	F	553.975	1778.645	3361.37	4499.905
SAIGA_Mitsuki	斎賀みつき	F	631.52	1763.925	3149.5	4348.555
SAITO_Chiwa	斎藤千和	F	916.275	2096.03	3778.91	4880.3
SANADA_Asami	真田アサミ	F	750.72	1598.355	3504.355	4529.38
SAWASHIRO_Miyuki	沢城みゆき	F	755.58	2123.145	3773.73	4676.95
SHIMODA_Asami	下田麻美	F	907.395	1864.48	3178.22	4185.655
SHIMONO_Hiro	下野紘	M	487.345	1525.42	2808.75	4299.305
SHINTANI_Ryoko	新谷良子	F	873.79	1770.155	3395.255	4647.42
SHIRAISHI_Minoru	白石稔	M	562.68	1493.725	2692.25	4167.835
SUGIYAMA_Noriaki	杉山紀彰	M	578.985	1541.19	2649.225	4114.495
SUZUKI_Tatsuhisa	鈴木達央	M	804.82	1870.33	2883.145	4680.48
SUZUMURA_Kenichi	鈴村健一	M	673.965	2068.04	2987.87	4013.44
TACHIBANA_Shinnosuke	立花慎之介	M	626.45	1653.98	2933.63	4072.62
TACHIKI_Fumihiko	立木文彦	M	724.655	1984.655	3070.23	4823.65
TAKAHASHI_Hiroki	高橋宏樹	M	669.44	1852.61	3228.085	4231.95
TAKAHASHI_Mikako	高橋美佳子	F	843.105	1794.54	3592.455	4695.2
TAKETATSU_Ayana	竹達彩奈	F	656.255	1684.39	3253.15	4481.195
TAKEUCHI_Junko	竹内順子	F	793.215	2070.46	3508.52	4735.945
TAMURA_Yukari	田村ゆかり	F	604.415	2100.805	3823.355	4962.505
TANAKA_Atsuko	田中敦子	F	499.425	2071.04	3288.02	4446.125
TANIYAMA_Kisho	谷山紀章	M	808.47	1778.355	2912.525	4380.825
TERASHIMA_Takuma	寺島拓篤	M	545.585	1706.035	2886.845	3755.99
TORIUMI_Kosuke	鳥海浩輔	M	696.85	1848.305	2784.35	4173.95
UEDA_Kana	植田佳奈	F	806.61	1926.9	3724.175	4873.415
UTSUMI_Kenji	内海賢二	M	427.575	1542.08	2728.67	3724.175
WAKAMOTO_Norio	若本規夫	M	472.775	1854.755	3301.465	4549
YAHAGI_Sayuri	矢作紗友里	F	636.91	2331.465	3937.955	5225.6
YAMADERA_Koichi	山寺宏一	M	703.045	1660.47	2524.505	3951.21
YONAGA_Tsubasa	代永翼	M	641.15	1875.71	3213.44	4384.265
YOSHINO_Hiroyuki	吉野裕行	M	688.17	1868.665	3210.07	4445.75
YUKINO_Satsuki	雪野五月	F	762.425	1880.865	3593.315	4680.51
Yukana	ゆかな	F	625.055	1736.32	3458.49	4548.545