192 Views
April 15, 16
スライド概要
http://yahoo-ds-event.connpass.com/event/24511/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
【⼤大阪】Yahoo! JAPAN データ&サイエンスワークショップ ヤフー⾳音声検索索アプリにおける Keyword Spottingの実装 2016.01.30 ヤフー株式会社 データ&サイエンスソリューション統括本部 サイエンス本部 三宅宅 純平 1
⾃自⼰己紹介 • 三宅宅 純平 – – – – 奈奈良良県出⾝身 C/C++, Python, Perl, (hadoop使う時だけJava) ⾳音声認識識アルゴリズム、⾔言語モデル、単語分割、機械学習、サーバ開発 フットサル、マラソン • 経歴 2009年年4⽉月 ヤフー新卒⼊入社。⾃自然⾔言語処理理技術の開発。 2011年年1⽉月~∼現在 ・⾳音声認識識PJの正式発⾜足と共にチーム異異動し、⾳音声認識識開発に従事 ・Yahoo! JAPAN研究所とサイエンス本部の共同開発PJ (読み獲得、レコメンド、クエリセグメンテーション、Hadoop) 2
ヤフー⽇日本語⾳音声認識識 YJVOICE iOS Andorid 2013.08より⾃自社開発の⾳音声認識識エンジン。 「Yahoo! JAPAN」「⾳音声アシスト」アプリなど19のアプリ・ウィジェットに導⼊入(2016/1/24現在)
ヤフー⽇日本語⾳音声認識識 YJVOICEについて 最近のヤフー⾳音声認識識のリリース • DNNベースの⾳音声認識識に切切り替え(2015.05.19) ⾳音声区間検出と⾳音響モデルの2カ所にDNNを実装 雑⾳音環境下において⼤大幅精度度改善 ⼤大規模な⾳音声データで⼤大規模なNNを学習 出典:GTC Japan 2015 ヤフー研究員 磯⽒氏の講演より • ⾳音声検索索アプリにKeyword Spotting機能の追加(2015.09.25) 所謂「OK,Google」「Hey,Siri」の機能 カーナビ、IoT、ディスプレイがない端末のハンズフリー操作に有効 クライアント側で常時、⾳音声認識識が起動 • ソフトバンクさんよりリリースの「こえ⽂文字トーク」アプリに YJVOICEが採⽤用(2015.12.18) おんせー けんさく
⼀一般的なキーワードスポッティングシステムの概要 KWSの⽤用途や使える計算リソースによって適切切な⼿手法の組み合わせを選択 どうモデル化するか? ・ 連続⾳音声認識識 ・ KWモデルvs背景モデル どのレベルでマッチさせるか? ・ 特徴量量レベル ・ 記号レベル(連続⾳音声認識識など) ⾳音声区間検出の 有無をどうするか? Szo ̈ke et al. “Comparison of Keyword Spotting Approaches for Informal Continuous Speech.” In: Interspeech'2005
キーワードスポッティング(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. "Small-footprint keyword spotting using deep neural networks.” ICASSP 2014 6
ヤフー⾳音声検索索アプリにおける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
ヤフー⾳音声検索索アプリにおけるKWS実装(2/2) Keywordモデルに「オンセーケンサク」、 Backgroundモデルに「オンセーニンシキ」と「オンセーアシスト」の合成後のWFSTイメージ例例 オ ン セー ケ サ ン クWAKEUP <sp> <s> <sp> オ ン ン ニ セー <sp> ア セー ニ <sp> <sp> ン <sp> ン シ シ ス シ キ ト <sp> <sp> ア <sp> シ <sp> ス </s> 実際はカナ⽂文字の 1〜~3gramの細かい単位 で遷移表現されている 8
ヤフー⾳音声検索索アプリにおけるKWS実装(2/2+α) • 実際の⾳音声認識識のWFST⾔言語モデルでは、 ⾳音素、単語辞書、⾔言語モデルのそれぞれのFSTまたはWFSTを統合 – WFSTの詳細説明に関しては興味がある⽅方は懇親会で聞いてください (時間の都合上スキップします) 【例例】 <s> オ ン セー ケ ン サ クWAKEUP </s> 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
スマホアプリ搭載への実⽤用化にむけて(1/2) • • メモリ使⽤用量量・速度度(計算量量)・SDKファイルサイズ・認識識性能など、 各々トレードオフ関係を考慮しつつ、実⽤用レベルに落落とし込みが必要 参考情報 メモリ使⽤用量量 • AndroidのJava Heap Size制限が256MB • 某アプリでは既に170MB使⽤用 (⾳音声認識識部はC/C++のライブラリなのでJavaメモリ領領域は未使⽤用) 配布SDKの ファイルサイズ • ⾳音声認識識ライブラリ • 辞書・⾔言語モデル・⾳音響モデル • アプリによっては⾳音声合成も搭載 ※アプリストアで特にファイルサイズ上限はない 速度度・精度度 • • • モデルサイズと認識識精度度のトレードオフ ⾳音声認識識の探索索幅(ビーム幅)の調整 現状は、⾳音声区間検出(VAD)と⾳音響モデル(AM)にDNNではなく パワーベースVADとGMM+HMM AMを採⽤用 10
スマホアプリ搭載への実⽤用化にむけて(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
まとめ • ヤフー⾳音声検索索アプリのKWS実装の紹介 • 応答⾼高速化/精度度改善へ向けて -‐‑‒ 逐次的認識識とWAKEUPタグの前⽅方移動による早期確定 -‐‑‒ DNNやLSTMを利利⽤用したデコード処理理が不不要な⽅方法の検証 • 演算量量が課題 -‐‑‒ ⾼高速なBLASライブラリ導⼊入 -‐‑‒ 固定⼩小数点化 -‐‑‒ ⾏行行列列圧縮 12
最後に 認識識アルゴリズム、クライアントSDK、サーバと多岐に渡る 開発をしているので、興味がある⽅方はお声がけください! 全体概要 Client(iOS/Android) App(表⽰示) Server ⾳音声データ (圧縮⾳音声) 通信制御部(ASRプロトコル) ⾳音声圧縮処理理 (Speex,Flac) クライアント ⾳音声取り込み (OS/ドライバ) ⾳音響モデル ⾔言語モデル 通信制御部(ASRプロトコル) 認識識エンジン部 (⾳音声検出/デコード) 認識識結果 ⾳音声検出をサーバで デコーダ: ⇒WFSTデコーダ 13