1何のための手法か

「この人のアクセントは東京寄りか、京阪寄りか」を、聞き手の主観によらず座標として出したい。

日本語のピッチアクセントを話者間で比べるのは、見た目より難しい。同じ「東京式」でも、声の高い人と低い人では F0 の絶対値がまるで違う。早口の人と遅い人では、同じ型でも時間軸上の位置がずれる。地声の質(発声)も人によって違う。これらを消さないまま距離を測ると、測っているのは型ではなく話者の個人差になる。

この研究が作ろうとしているのは、分類器ではなくものさしである。ある話者を、文献に記述されたアクセント変種の勾配の上に、安定して・解釈できる形で置きたい。目的がものさしの設計であることは、評価の仕方にも効いてくる(第6節)。

対象は滋賀県米原市柏原の話者である。柏原は方言学の記述上、京阪式と東京式のあいだの垂井式の地域とされる。つまり「どこに来るはずか」という予測が、この研究のデータとは独立に、先行する方言記述の側から与えられている。この外部の予測を評価の基準に使えることが、この土地を選ぶ理由になっている。

2話者差をどう消すか

正規化は「差を消す」操作だが、消しすぎると比べたいものまで消える。

音声から F0(基本周波数)の系列を取り出し、2段階で正規化する。

① セミトーン変換
\[ s(t) \;=\; 12 \log_2 \frac{F_0(t)}{\mathrm{median}\,F_0} \]

Hz をそのまま使わず、自分の中央値からの比の対数を取る。声の高い人も低い人も、「自分の平均からどれだけ上がったか」という同じ尺度に乗る。12 を掛けるのは半音を単位にするためで、1オクターブ(2倍)がちょうど 12 になる。
比の対数を取るのは恣意的な選択ではない。音の高さの知覚は周波数の比で決まるため、加法的に扱えるのは Hz ではなく対数の側である。

② MAD による z 化
\[ z(t) \;=\; \frac{s(t) - \mathrm{median}(s)}{\mathrm{MAD}(s)}, \qquad \mathrm{MAD}(s) = \mathrm{median}\bigl(\,|s - \mathrm{median}(s)|\,\bigr) \]

さらに、ばらつきの大きさでも割る。ここで標準偏差ではなく MAD(中央絶対偏差)を使う。F0 推定は半音ではなくオクターブ単位で飛ぶ失敗(オクターブエラー)を起こすことがあり、外れ値が1つ入るだけで標準偏差は大きく膨らむ。MAD は中央値ベースなので、そうした少数の異常値に引きずられない。

この2段で、声の高さ(位置)と抑揚の幅(尺度)が話者間で揃う。残るのは「どのタイミングで上がり、どこで下がるか」という形だけであり、これがアクセントの型を担っている。

前処理設定
音声区間検出(VAD)top_db = 25、最短区間 120 ms
F0 推定YIN(pYIN をフォールバック)、\(f_{\min}=50\,\mathrm{Hz}\)、\(f_{\max}=700\,\mathrm{Hz}\)
平滑化Savitzky–Golay フィルタ(窓 11、次数 3)
録音16 kHz / 16 bit、屋内

正規化は「消す対象」を決める設計判断である

中央値で引き MAD で割るという操作は、話者の平均的な声の高さと抑揚の幅には情報がないと決めたことを意味する。これは型を比べるうえでは妥当だが、たとえば「京阪式話者は全体に抑揚が大きい」といった特徴があったとすれば、それはこの時点で捨てられている。何を残し何を捨てたかは、後の結果を読むときに常に効いてくる。

3時間の伸び縮みを許して対応づける

早口の人と遅い人の系列を、フレームごとに突き合わせても意味がない。

2つの系列 \(a = (a_1,\dots,a_n)\) と \(b = (b_1,\dots,b_m)\) を、長さが違うまま比べたい。DTW(動的時間伸縮法)は、各点をどう対応づけるかを全通り考え、総コストが最小になる対応を選ぶ。

動的計画法の漸化式
\[ D(i,j) \;=\; \min \begin{cases} D(i-1,\,j) + c_{\mathrm{del}} \\[2pt] D(i,\,j-1) + c_{\mathrm{ins}} \\[2pt] D(i-1,\,j-1) + c_{\mathrm{sub}}\,\bigl|a_i - b_j\bigr| \end{cases} \]

\(D(i,j)\) は、\(a\) の先頭 \(i\) 個と \(b\) の先頭 \(j\) 個を対応づけ終えたときの最小コスト。斜めに進むのが「対応させる」、縦・横に進むのが「片方だけ進める」=時間を伸ばす操作である。初期条件は \(D(0,0)=0\)、それ以外の境界は \(\infty\)。
実装での値は \(c_{\mathrm{sub}} = 1.0\)、\(c_{\mathrm{ins}} = c_{\mathrm{del}} = 1.1\)。伸縮にわずかな罰を置いているため、際限なく伸ばして無理に合わせることが抑えられる。

経路長で割って正規化する
\[ \mathrm{dtw}(a,b) \;=\; \frac{D(n,m)}{n+m} \]

総コストをそのまま使うと、長い発話ほど大きな値になってしまう。\(n+m\) で割ることで、1ステップあたりの平均コストになり、長さの違う発話どうしを比べられる。

Sakoe–Chiba 帯:どこまでずらすことを許すか

対応づけを完全に自由にすると、時間的にかけ離れた点どうしが結ばれてしまい、「似ている」という判断が壊れる。そこで \(|i-j|\) に上限を置く。この研究では帯幅を系列長の 0.15 倍(band_ratio = 0.15)としている。計算量も \(O(nm)\) から \(O(n \cdot \text{band})\) に落ちる。

この帯幅は、後で見るとおり結果を最も大きく左右するパラメータだった(第7節)。

静的な高さと、その変化率を混ぜる
\[ D \;=\; \alpha \cdot \mathrm{dtw}(z) \;+\; (1-\alpha)\cdot \mathrm{dtw}(\Delta z), \qquad \alpha = 0.7 \]

\(z(t)\) そのもの(どの高さにいるか)だけでなく、その差分 \(\Delta z(t)\)(上がっているか下がっているか)についても DTW を取り、重みをつけて足す。アクセントの型は「高さ」よりも「下がり目の位置」で決まるため、変化の情報を別建てで入れている。
差分は無声区間(F0 が取れない箇所)を飛ばして中央差分で計算される。\(\mathrm{dtw}(z)\) と \(\mathrm{dtw}(\Delta z)\) のどちらかが計算できない場合は、計算できた側だけで重みを付け直す。

4軸の端を、録音データの外に固定する

「東京寄り」と言うとき、その東京はどこにあるのか。

ここがこの研究の設計上いちばん重要な判断である。話者どうしの距離行列だけを作ると、軸は集めた68名の中の相対的な位置しか表さない。別の土地で録れば軸の意味が変わってしまい、研究間で比べられない。

そこで、東京式・京阪式・垂井式・鹿児島式という4つの参照点を、録音ではなく音韻記述から合成する。上野(1999)・木部(2010)らの記述にある L / H / R の記号列を、数値の輪郭に変換して仮想的な参照音声とする。

記号から輪郭へ
\[ \mathrm{L} \mapsto -1.0, \qquad \mathrm{H} \mapsto +1.0, \qquad \mathrm{R} \mapsto +0.5 \]

これに、発話が進むにつれて全体が下がっていく現象(declination)を傾き \(-0.05\) 〜 \(-0.10\) で加え、実音声と同じ Savitzky–Golay フィルタ(窓 11、次数 3)で平滑化する。話者側と同じ平滑化を通すのは、比較する2つの系列に同じ処理を掛けるためである。

こうして各話者は、4つの参照点への距離ベクトルとして表される。軸の端が外部の記述で定義されているので、座標の意味がこのデータセットに閉じない。この設計がなければ、次節の評価そのものが成り立たない。

仮想参照は「理想化された型」であって、実在の話者ではない

記号列から合成した輪郭は、音韻論的な記述をそのまま数値にしたものである。実際の東京方言話者の発話ではない。したがってここで測っているのは「記述された型からの隔たり」であり、「実在の東京話者との隔たり」ではない。また L/H/R に \(-1.0\) / \(+1.0\) / \(+0.5\) を割り当てる操作自体が設計判断であり、R を H と L の中点ではなく \(+0.5\) に置いたことの妥当性は、この枠組みの内側では検証できない。

5何と比べたか

提案手法だけを示しても、それが良いのかは分からない。次の3系統が比較対象に置かれている。

  1. 平均 F0 ── 話者の声の高さの平均だけを使う。時間情報を一切持たない、最も素朴な基準線。
  2. ヒストグラム EMD ── \(z\) の分布(30ビン、範囲 \([-3, 3]\))どうしの Earth Mover's Distance。どの高さにどれだけ滞在したかは見るが、順序は見ない。
  3. wav2vec 2.0(XLSR-53) ── 自己教師あり学習による音声表現。3通りを試している:3a 最終層(L24)の平均プーリング+コサイン距離、3b 最終層のフレーム単位 DTW、3c 中間層(L9)のフレーム単位 DTW。3c で中間層を使うのは、韻律情報が中間層により保たれるという先行知見(Pasad et al. 2021 ほか)による。

6「当たったか」ではなく「勾配が保たれたか」で測る

正解ラベルがないとき、ものさしの良し悪しをどう評価するか。

話者一人ひとりに「この人は垂井式である」という正解ラベルは付いていない。付けようとすれば、結局は誰かの聴取判断になり、主観に戻ってしまう。そこでこの研究は、分類精度ではない基準を使う。

柏原は方言記述上、京阪式と東京式の中間帯にあるとされる。ならば、良いものさしは68名を京阪-東京軸の中間領域に置くはずである。この「置かれ方」を3つの指標で見る。

3つの指標
\[ \text{Inter.\%} = \text{中間領域に置かれた話者の割合}, \qquad r = \overline{\left(\frac{d_T}{d_K}\right)}, \qquad s = \overline{\left(\frac{d_K - d_T}{d_K + d_T}\right)} \]

\(d_T\) は東京参照までの距離、\(d_K\) は京阪参照までの距離。\(r\) は釣り合い比で、1 に近いほど軸が両端に対して対称である。\(s\) は対称指数で、0 に近いほどどちらの極にも偏っていない。\(r \approx 1\) かつ \(s \approx 0\) でなければ、Inter.% が高くても「軸が片側に潰れている」ことになる。

手法Inter.%\(r\)\(s\)読み取り
平均 F01.5%1.42−0.05勾配が潰れる
ヒストグラム EMD85.3%0.83+0.12勾配が平坦化しすぎ
wav2vec 2.0(3a: 平均プール, L24)0%4.46−0.61極に張り付く
wav2vec 2.0(3b: DTW, L24)0%1.55−0.21極に張り付く
wav2vec 2.0(3c: DTW, L9)22.1%0.99+0.01軸がずれている
DTW(提案手法)57.4%1.01−0.01勾配が保たれる

68名中の人数に直すと、1.5% = 1名、22.1% = 15名、57.4% = 39名、85.3% = 58名である。

単一の数字では順位が付かない

Inter.% だけを見れば、ヒストグラム EMD の 85.3% が提案手法の 57.4% を上回る。それでも「平坦化しすぎ」と判断されるのは、\(r = 0.83\)、\(s = +0.12\) と軸が片寄っているためである。ほぼ全員を中間に置くものさしは、中間と非中間を区別する力を失っていると読める。3つの指標を同時に満たすのは提案手法だけ、という形の主張になっている。

これは評価設計として妥当だが、裏を返せば「どの指標をどう重みづけるか」の判断が結論に入り込んでいるということでもある。単一のスコアで機械的に順位が決まる形にはなっていない。

wav2vec 3c との差は、精度の差ではない

3c は \(r = 0.99\)、\(s = +0.01\) と対称性では提案手法に並ぶが、Inter.% が 22.1% にとどまる。リポジトリの解釈は「測っている軸が違う」というもので、自己教師あり表現にも内部的な軸はあるが、それが言語学的に定義された京阪-東京の勾配とずれている、と読む。同じ軸の上での精度差ではない、という区別である。

7パラメータを動かすとどうなるか

band と α を振ったときの、補助的なハードラベル判定の一致率。

主たる出力は連続的な4極距離ベクトルだが、診断のために2段階のハードラベル分類も併走させている(第1段:東京 / 鹿児島 / 京阪ブロック、第2段:京阪ブロック → 京阪 / 垂井)。その一致率を、Sakoe–Chiba 帯幅と \(\alpha\) について振った結果が次である。

bandα一致率判定保留保留率
0.120.577.9%3044.1%
0.120.775.0%2841.2%
0.120.972.1%2638.2%
0.150.598.5%1420.6%
0.150.7100.0%1522.1%
0.150.997.1%1522.1%
0.20.564.7%1014.7%
0.20.761.8%1014.7%
0.20.952.9%1116.2%

一致率は採用設定(band = 0.15、α = 0.7)を基準とした一致であり、band = 0.15 / α = 0.7 の行が 100% になるのはその定義による。判定保留は曖昧しきい値(\(m_{\mathrm{abs}} < 0.011\)、\(m_{\mathrm{rel}} < 0.035\))に掛かった人数。

この表の読み方には注意がいる

一致率 100% は採用設定が自分自身と一致していることを言っているにすぎず、正解率ではない。この表から読み取れるのは「帯幅を 0.12 や 0.2 にすると判定が大きく動く」という感度の大きさであって、0.15 が正しいということではない。

むしろ注目すべきは、帯幅を広げる(0.2)と判定保留が 10 名まで減る一方で一致率が 52.9% まで落ちることである。迷わなくなるが答えが変わる——対応づけを自由にすると、無理に合った結果として自信だけが上がる、という挙動と読める。band = 0.15 が選ばれた根拠が第6節の Inter.% の外側にあるのかどうかは、リポジトリの資料からは判断できない。

教師なしクラスタリングでの確認

68×68 の距離行列(FastDTW)に Ward 法を掛けたときのシルエット係数は、\(k=2\) で 0.660、\(k=3\) で 0.466、\(k=4\) で 0.357、\(k=5\) で 0.343、\(k=6\) で 0.331 である。\(k\) が増えるほど単調に下がり、明確な谷や肩がない。これは「柏原の話者が離散的な型に分かれている」証拠にはならず、むしろ連続的な勾配として捉えるこの研究の立場と整合する。

8計算コスト

ものさしとして使われるには、現実的な時間で回る必要がある。1ペアあたりの実測時間は次のとおり。

手法時間 (ms)相対備考
平均 F00.041×時間情報なし
ヒストグラム EMD0.205×分布のみ
DTW(静的 \(z\) のみ)0.267×Sakoe–Chiba 帯
DTW(提案手法・完全版)0.9925×\(z(t)\) + \(\Delta z(t)\)、\(\alpha=0.7\)
wav2vec 2.0約 450約 11000×GPU 推奨

Numba による JIT 高速化を用いた場合、68話者 × 25文 × 4参照の全組み合わせが 30 秒以内に終わる。GPU を必要としない点が、現場で使う道具としては効いている。

9限界

評価基準が「方言記述による予測」である

Inter.% は、柏原が中間帯であるという先行する方言記述を正しいものとして、そこにどれだけ置けたかを測っている。記述のほうが誤っていれば、評価も誤る。また、この基準は「中間に置くほど良い」という向きを持つため、実際には中間でない話者が混じっていても検出できない。個々の話者についての正解は依然として無い。

1地点・68名である

対象は柏原の68名のみで、他地域での検証は含まれていない。軸の端を外部の記述に固定した設計は、原理的には他地点にも移せるはずだが、実際に移して同じ性質が出るかは確かめられていない。指標の値も 68 という標本の上の値であり、信用区間は示されていない。

パラメータの選択と評価が同じデータの上にある

帯幅 0.15、\(\alpha = 0.7\)、曖昧しきい値といった設定は、この68名のデータを見ながら決められている。第6節の指標も同じ68名で計算されている。設定を選んだデータと性能を測ったデータが分かれていないため、示された値は独立なデータでの性能の見積もりとしては楽観的でありうる。

DTW の対応づけは言語的な単位を知らない

漸化式が扱うのはフレームの列であって、モーラでも音節でもない。伸縮は純粋にコストの都合で決まり、「ここは同じモーラだから対応させる」という制約は入っていない。結果として、言語的にはあり得ない対応づけが最小コストになる場合がありうる。帯幅の制約はそれを緩和するが、なくしはしない。

音声データは公開されていない

録音はプライバシー上の制約から公開されていない。話者ごとの匿名化メタデータも、出身地と学校名の組み合わせが倫理審査で同意された集計公開の範囲を超えるため、公開リポジトリには含まれず、合理的な請求に応じた制限付き提供となっている。コードと記号パターン表は公開されているが、この研究の主結果を第三者が完全に再現することは現時点ではできない。集計レベルの整合確認のみが可能である。

10出典とコード

コードは MIT ライセンスで公開されている。正規化から DTW、仮想参照の合成、各ベースライン、感度分析、可視化までが一続きに実行できる構成になっている。原稿は査読中である。

実装の構成

src/extractor.py — F0 抽出と正規化(VAD・YIN・セミトーン・MAD-z・平滑化)
src/dtw_distance.py — Sakoe–Chiba 制約つき DTW。Numba 版と純 Python 版の2実装
src/virtual_reference.py — 記号記述(L/H/R)から仮想参照輪郭を合成
src/baselines.py — 平均 F0、ヒストグラム EMD
src/wav2vec_enhanced.py — wav2vec 2.0 の 3a / 3b / 3c と層ごとの走査
src/classifier.py — 2段階のハードラベル判定(診断用)
src/unsupervised.py — 68×68 距離行列、MDS、Ward 法
sensitivity_sweep.py — 帯幅と \(\alpha\) の感度分析
benchmark_timing.py — 計算コストの実測

手法の文献

  • Sakoe, H. & Chiba, S. (1978) Dynamic programming algorithm optimization for spoken word recognition. IEEE Transactions on Acoustics, Speech, and Signal Processing, 26(1), 43–49.
  • de Cheveigné, A. & Kawahara, H. (2002) YIN, a fundamental frequency estimator for speech and music. Journal of the Acoustical Society of America, 111(4), 1917–1930.
  • Conneau, A. et al. (2021) Unsupervised cross-lingual representation learning for speech recognition (XLSR-53). Interspeech 2021.
  • Pasad, A., Chou, J.-C., & Livescu, K. (2021) Layer-wise analysis of a self-supervised speech representation model. ASRU 2021.
  • アクセント変種の音韻記述:上野善道(1999)、木部暢子(2010)ほか

この手法がどの観点に属するか

DTW が最小化するのは、二乗和ではなく対応づけ全体にわたるコストの和である。その意味で最小二乗そのものではない。それでも観点1に置くのは、この手法がまず距離を定め、その距離の下で最小化するという構えを共有しているからで、しかも下流はそのまま最小二乗の世界に入る。68×68 の距離行列を平面に落とす MDS も、Ward 法のクラスタリングも、最小化しているのは二乗和である。7つの観点を式で読むの観点1(幾何)の、距離を作る側の端にあたる。

距離の作り方という点では Gower距離(名義尺度から距離を作る)と 正規化圧縮距離(圧縮率から距離を作る)が対になる。対象が音声の時系列か、記号の一致か、バイト列かという違いだけで、比べたいものに合わせて距離そのものを設計するという発想は同じである。

このページは、小野原が実際の研究で使っている手法を、同じ分野の読み手に向けて整理したものです。数値はすべて公開リポジトリの実行結果および README から引用し、推定値や概算は記載していません。原稿は査読中のため、結論は変わりうるものとしてお読みください。
手法の位置づけの全体像は 7つの観点を式で読む、どの授業回がどの観点に当たるかは 手法と数学の地図 にあります。