---
title: 「ヤフー音声検索アプリにおけるキーワードスポッティングの実装」#yjdsw4
tags:  #yjdsw4  
author: [Yahoo!デベロッパーネットワーク](https://www.docswell.com/user/ydnjp)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/DJYPVZXPJM.jpg?width=480
description: http://yahoo-ds-event.connpass.com/event/24511/
published: April 15, 16
canonical: https://www.docswell.com/s/ydnjp/54W28K-2016-04-15%20-135811
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/DJYPVZXPJM.jpg)

【⼤大阪】Yahoo!  JAPAN  データ&amp;サイエンスワークショップ
ヤフー⾳音声検索索アプリにおける
Keyword  Spottingの実装
2016.01.30
ヤフー株式会社
データ＆サイエンスソリューション統括本部
サイエンス本部
三宅宅 純平
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/V7N5M31ME8.jpg)

⾃自⼰己紹介
• 三宅宅 純平
–
–
–
–
奈奈良良県出⾝身
C/C++,  Python,  Perl,  (hadoop使う時だけJava)
⾳音声認識識アルゴリズム、⾔言語モデル、単語分割、機械学習、サーバ開発
フットサル、マラソン
• 経歴
2009年年4⽉月
ヤフー新卒⼊入社。⾃自然⾔言語処理理技術の開発。
2011年年1⽉月~∼現在
・⾳音声認識識PJの正式発⾜足と共にチーム異異動し、⾳音声認識識開発に従事
・Yahoo!  JAPAN研究所とサイエンス本部の共同開発PJ
(読み獲得、レコメンド、クエリセグメンテーション、Hadoop)
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YJ9YN95W73.jpg)

ヤフー⽇日本語⾳音声認識識
YJVOICE
iOS
Andorid
2013.08より⾃自社開発の⾳音声認識識エンジン。
「Yahoo!  JAPAN」「⾳音声アシスト」アプリなど19のアプリ・ウィジェットに導⼊入(2016/1/24現在)


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GJ86K9YRED.jpg)

ヤフー⽇日本語⾳音声認識識 YJVOICEについて
最近のヤフー⾳音声認識識のリリース
•
DNNベースの⾳音声認識識に切切り替え(2015.05.19)
⾳音声区間検出と⾳音響モデルの２カ所にDNNを実装
雑⾳音環境下において⼤大幅精度度改善
⼤大規模な⾳音声データで⼤大規模なNNを学習
出典：GTC   Japan  2015  ヤフー研究員 磯⽒氏の講演より
•
⾳音声検索索アプリにKeyword  Spotting機能の追加(2015.09.25)
所謂「OK,Google」「Hey,Siri」の機能
カーナビ、IoT、ディスプレイがない端末のハンズフリー操作に有効
クライアント側で常時、⾳音声認識識が起動
•
ソフトバンクさんよりリリースの「こえ⽂文字トーク」アプリに
YJVOICEが採⽤用(2015.12.18)
おんせー
けんさく


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJL9ZW427R.jpg)

⼀一般的なキーワードスポッティングシステムの概要
KWSの⽤用途や使える計算リソースによって適切切な⼿手法の組み合わせを選択
どうモデル化するか？
・ 連続⾳音声認識識
・ KWモデルvs背景モデル
どのレベルでマッチさせるか？
・ 特徴量量レベル
・ 記号レベル(連続⾳音声認識識など)
⾳音声区間検出の
有無をどうするか？
Szo ̈ke et al. “Comparison of Keyword Spotting Approaches for Informal Continuous Speech.” In: Interspeech&#039;2005


# Page. 6

![Page Image](https://bcdn.docswell.com/page/47MZV9K9JW.jpg)

キーワードスポッティング(KWS)の先⾏行行研究
• LVCSR-‐‑‒Base  KWS
– ⼤大語彙連続⾳音声認識識(LVCSR)デコーダによる⾳音声認識識後、
キーワードとの単語⽐比較
• Phonetic Search  KWS
– 連続⾳音素認識識デコード後、
キーワードとの⾳音素列列による⽐比較(DPマッチング等)
Acoustic KWS
※(1)
• Acoustic  KWS
– KWモデルと背景モデルの⾳音響モデルと
遷移管理理による判定(⾮非テキスト変換、デコーダ不不要)
• Deep  KWS
– NNでキーワードまたはサブキーワード単位で直接識識別
– 学習データにキーワードの⾳音声データベースが必要
– ⾮非テキスト変換、デコーダ不不要
Deep KWS
※ (2)
(1)  Szo ̈ke et  al.  “Comparison of Keyword Spotting  Approaches for  Informal Continuous Speech.”  In: Interspeech‘2005
(2)  Chen,  Guoguo,  Carlos  Parada,  and  Georg  Heigold.  &quot;Small-­footprint  keyword  spotting  using  deep  neural  networks.” ICASSP  2014
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/P7R62GX9E9.jpg)

ヤフー⾳音声検索索アプリにおけるKWS実装(1/2)
キーワードタグを⽤用いたカナ⽂文字列列によるWFSTベース⾳音声認識識
• WFST(Weighted  Finite  State  Transducer）とは
⼊入⼒力力:出⼒力力/重み
ローマ字をひらがなに
変換するWFST例例
– ⾳音声認識識では、⾳音素列列から単語変換や、単語間遷移を規定させている
– オートマトンの状態遷移に重みと出⼒力力ラベルが追加されたもの
– ⼊入出⼒力力を整合させた2つのFSTを合成し、1つのFST表現が可能
• 探索索空間ではWFSTネットワーク上で状態遷移や状態(ノード)が全展開されているので、
「WAKEUPタグが含まれる＝キーワード発話の状態に遷移をした」ということになる
ア:ア/0.3 イ:イ/0.5
0
WFSTモデルの構築
(Background)
2
1
①統計的カナ⽂文字n-‐‑‒gram⾔言語モデル
（カナ⾳音素列列コーパスから学習）
オ
0
オ
ン
ン
1
ケ
セー
2
セー ケ
3
ン
ン
4
サ
a:あ/0.3 i:い/0.5
0
1
2
1つのWFST
モデルに統合
サ クWAKEUP
5
6
クWAKEUP
②記述⽂文法ネットワーク⾔言語モデル
WFSTモデルの構築
(Keyword)
特定キーワードが認識識されたことを意味するWAKEUPタグをつける
⾳音声認識識処理理ではWAKEUPタグが
含まれるかどうかだけでKWS判定
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PJXMDX63EX.jpg)

ヤフー⾳音声検索索アプリにおけるKWS実装(2/2)
Keywordモデルに「オンセーケンサク」、
Backgroundモデルに「オンセーニンシキ」と「オンセーアシスト」の合成後のWFSTイメージ例例
オ
ン
セー ケ
サ
ン
クWAKEUP
&lt;sp&gt;
&lt;s&gt;
&lt;sp&gt;
オ
ン
ン
ニ
セー
&lt;sp&gt;
ア
セー
ニ
&lt;sp&gt;
&lt;sp&gt;
ン
&lt;sp&gt;
ン
シ
シ
ス
シ
キ
ト
&lt;sp&gt;
&lt;sp&gt;
ア
&lt;sp&gt;
シ
&lt;sp&gt;
ス
&lt;/s&gt;
実際はカナ⽂文字の
1〜～3gramの細かい単位
で遷移表現されている
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/3JKGXW1N7D.jpg)

ヤフー⾳音声検索索アプリにおけるKWS実装(2/2+α)
• 実際の⾳音声認識識のWFST⾔言語モデルでは、
⾳音素、単語辞書、⾔言語モデルのそれぞれのFSTまたはWFSTを統合
– WFSTの詳細説明に関しては興味がある⽅方は懇親会で聞いてください
（時間の都合上スキップします）
【例例】
&lt;s&gt;  オ ン セー ケ ン サ クWAKEUP &lt;/s&gt;
Background  Model
WFSTのよる統合モデル
⽂文脈依存⾳音素
Context-‐‑‒Dependency
phone(triphone)
⼊入⼒力力
出⼒力力
sil-‐‑‒y+a
y
y-‐‑‒a+f
a
a-‐‑‒f+u:            f
a-‐‑‒b -‐‑‒f               b
⾳音節カナ辞書
Lexicon  FST
⼊入⼒力力
出⼒力力
y                    ヤ
f                      フー
jy
ジャ
…
⾳音節カナ
3-‐‑‒gram⾔言語モデル
Grammar  WFST
⼊入⼒力力
ヤ
フー
ジャ
出⼒力力 重み
ヤ
-‐‑‒2.45
フー -‐‑‒1.2
ジャ -‐‑‒3.4
⽂文脈依存⾳音素(C)と語彙(L)と⾔言語モデル(G)を合成(compose)
Keyword  Model
⽂文法キーワードモデル
Grammar WFST
⼊入⼒力力
s-‐‑‒a+k
a-‐‑‒k+u
…
出⼒力力
サ
クWAKEUP
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/LE3N51QZE5.jpg)

スマホアプリ搭載への実⽤用化にむけて(1/2)
•
•
メモリ使⽤用量量・速度度(計算量量)・SDKファイルサイズ・認識識性能など、
各々トレードオフ関係を考慮しつつ、実⽤用レベルに落落とし込みが必要
参考情報
メモリ使⽤用量量
• AndroidのJava  Heap Size制限が256MB
• 某アプリでは既に170MB使⽤用
（⾳音声認識識部はC/C++のライブラリなのでJavaメモリ領領域は未使⽤用）
配布SDKの
ファイルサイズ
• ⾳音声認識識ライブラリ
• 辞書・⾔言語モデル・⾳音響モデル
• アプリによっては⾳音声合成も搭載
※アプリストアで特にファイルサイズ上限はない
速度度・精度度
•
•
•
モデルサイズと認識識精度度のトレードオフ
⾳音声認識識の探索索幅（ビーム幅）の調整
現状は、⾳音声区間検出(VAD)と⾳音響モデル(AM)にDNNではなく
パワーベースVADとGMM+HMM  AMを採⽤用
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/8EDWDX947G.jpg)

スマホアプリ搭載への実⽤用化にむけて(2/2)
ARMのアーキテクチャ最適化例例の紹介
• NEONとVFPの有無(コンパイラーによる⾃自動ベクトル化)による速度度変化を検証
• NEON:  汎⽤用SIMD拡張(ARMv7以降降)
• VFP:  Vector  Floating  Point(浮動⼩小数点演算ユニット)  
Real  Time  Factor(＝デコード処理理時間/実⾳音声時間)  
1
0.8
速い
0.6
0.4
0.2
0
•
•
なし(-­O3)
なし(-­Ofast)
VFP(-­O3)
VFP(-­Ofast)
NEON(-­O3) NEON(-­Ofast)
全てのスマホ端末で⾼高速に動作させるために配布SDKでは、
各アーキテクチャ毎にビルドされたライブラリを全て内包
実⾏行行時は、アーキテクチャ判定APIを⽤用いてライブラリを選択
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/V7P9XPZVJ8.jpg)

まとめ
• ヤフー⾳音声検索索アプリのKWS実装の紹介
• 応答⾼高速化/精度度改善へ向けて
-‐‑‒ 逐次的認識識とWAKEUPタグの前⽅方移動による早期確定
-‐‑‒ DNNやLSTMを利利⽤用したデコード処理理が不不要な⽅方法の検証
• 演算量量が課題
-‐‑‒ ⾼高速なBLASライブラリ導⼊入
-‐‑‒ 固定⼩小数点化
-‐‑‒ ⾏行行列列圧縮
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/2JVML2WRJQ.jpg)

最後に
認識識アルゴリズム、クライアントSDK、サーバと多岐に渡る
開発をしているので、興味がある⽅方はお声がけください！
全体概要
Client(iOS/Android)
App(表⽰示)
Server
⾳音声データ
(圧縮⾳音声)
通信制御部(ASRプロトコル)
⾳音声圧縮処理理
（Speex,Flac）
クライアント
⾳音声取り込み
(OS/ドライバ)
⾳音響モデル
⾔言語モデル
通信制御部(ASRプロトコル)
認識識エンジン部
(⾳音声検出/デコード)
認識識結果
⾳音声検出をサーバで
デコーダ：
⇒WFSTデコーダ
13


