Apple の Machine Learning Journal ブログに 10 月 1 日に公開された非常に興味深い技術記事は、今日まで注目されていませんでした。
この中で、Appleは、ケーブル接続のない「Hey Siri」機能がハードウェア、ソフトウェア、そしてiCloudのパワーを活用して、顧客がアシスタントをハンズフリーで使用できるようにしている仕組みを詳しく説明している。
このシステムは、クラウドベースの音声認識、自然言語解釈、その他のサービスと、ハードウェアによるデバイス内処理を組み合わせます。iOSデバイスは「非常に小さな音声認識装置」を常時実行し、「Hey Siri」というフレーズだけを聞き取ります。
iPhoneまたはApple Watchのマイクは、1秒間に16,000ストリームの瞬間波形サンプルを記録します。これがiPhoneのバッテリーに大きな負担をかけず、RAMやCPUなどの他のシステムリソースを独占しない理由は次のとおりです。
トリガー フレーズを聴くためだけにメイン プロセッサを 1 日中実行することを避けるために、iPhone の常時オン コプロセッサ (AOP、Apple の M シリーズ モーション コプロセッサに組み込まれた低電力補助プロセッサ) は、iPhone 6s 以降でマイクの信号にアクセスできます。
AOPの限られた処理能力のごく一部を使って、ニューラルネットワークの小型版を搭載した検出器を実行します。スコアが閾値を超えると、モーションコプロセッサがメインプロセッサを起動し、メインプロセッサはより大規模なニューラルネットワークを用いて信号を解析します。
Apple Watch はバッテリーが非常に小さいため、モーションコプロセッサが手首を上げるジェスチャーを検出して画面をオンにした場合にのみ「Hey Siri」検出器を実行します。そのため、画面がオフのときに Apple Watch で「Hey Siri」を使用することはできません。
WatchOS は、「Hey Siri」に限られたコンピューティング バジェットの約 5% を割り当てます。
では、実際の「Hey Siri」ホットフレーズをリアルタイムでどのように認識するのでしょうか?
デバイスでキャプチャされた波形は、約0.01秒の音響スペクトルを表すフレームのシーケンスに分解されます。これらのフレームが一度に約20フレーム(0.2秒の音声)ずつ、ディープニューラルネットワークに渡されます。
そこで、音声は「Hey Siri」というフレーズに使用されている音声クラスに加え、無音部分やその他の音声も含め、合計約20種類の音声クラスにわたる確率分布に変換されます。そして、発話したフレーズが「Hey Siri」であったという信頼度スコアを計算します。
スコアが十分に高ければ、Siri が起動します。
iPhoneでは、最初の検出に1つのニューラルネットワーク(省電力モーションチップ上で実行)を使用し、もう1つのニューラルネットワークを二次チェッカー(メインプロセッサ上で実行)として利用しています。誤検知を減らすため、Appleは新たに発せられる「Hey Siri」の音声を、「Hey Siri」登録プロセス中にデバイスに保存された5つのフレーズと比較します。
「このプロセスにより、他の人が話した『Hey Siri』がiPhoneを起動させる可能性が減るだけでなく、似たような響きのフレーズがSiriを起動させる割合も減ります」と研究論文は説明している。
デバイスは波形を Siri サーバーにアップロードします。
クラウドで実行されているメインの音声認識エンジンがこれを「Hey Siri」以外の何か(たとえば「Hey Seriously」、「Hey Syria」など)として認識した場合、サーバーは電話にキャンセル信号を送信して、電話をスリープ状態に戻します。
「一部のシステムでは、デバイス上でメインの音声認識機能の簡易版を実行し、より早い段階で追加のチェックを行います」とAppleは述べています。「一部のシステム」とは、Mac、Apple TV、そしておそらくiPadなど、電源に接続されたデバイスを指しているのだと思います。
上の写真は、「Hey Siri」検出器を通過する音響パターンです。一番下にはマイクからの波形のスペクトログラムが表示されています。一番上に表示されている最終スコアは、Siriを起動するかどうかを決定するための閾値と比較されます。
閾値自体は動的な値です。Appleは、ユーザーが困難な状況でもSiriを起動できるようにしたいと考えているためです。「Hey Siri」というフレーズを聞き逃した場合、システムは数秒間、より敏感な状態になります。その間に同じフレーズを繰り返すと、Siriが起動します。
「Hey Siri」検出器の音響モデルをトレーニングした方法は次のとおりです。
Hey Siri機能が登場するずっと前から、少数のユーザーはボタンを押してリクエストを開始し、その冒頭で「Hey Siri」と発声していました。私たちは、このような「Hey Siri」発話を、米国英語検出モデルの初期トレーニングセットに使用しました。
メインの音声認識システムのトレーニングに使用した一般的な音声サンプルも含めました。どちらの場合も、トレーニングフレーズには自動書き起こしを使用しました。Siriチームのメンバーが書き起こしのサブセットの正確性を確認しました。
アメリカ英語の音響モデルでは、「Siri」の最初の母音が「serious」と「Syria」のように異なることまで考慮されます。
1つのモデルのトレーニングには約1日かかり、通常は複数のモデルが同時にトレーニングされています。通常、モーションチップの最初のパス用に小型モデル、2回目のパス用に大型モデル、そしてApple Watch用の中型モデルの3つのバージョンをトレーニングします。
そして最後の豆知識:システムはローカライズされた「Hey Siri」フレーズも認識できるようにトレーニングされています。
例えば、フランス語圏のユーザーは「Dis Siri」と言います。韓国語圏のユーザーは「Siri 야」と言い、これは「Siri Ya」のように聞こえます。ロシア語圏のユーザーは「привет Siri」(「Privet Siri」のように聞こえる)というフレーズを使用し、タイ語圏のユーザーは「หวัดดี Siri」(「Wadi Siri」のように聞こえる)を使用します。
「私たちは、各言語のネイティブスピーカーによって、キッチン(近くと遠くの両方)、車、寝室、レストランなど、さまざまな状況で特別に録音を行いました」とアップルは述べています。
彼らは、背景音(特に会話)と「ユーザーが他の人に言う可能性のあるフレーズの種類」の両方を表現するために、多くの言語でポッドキャストと Siri 入力も使用しています。
「次に『Hey Siri』と言うとき、そのフレーズに応答するために何が起きているのか思い浮かぶかもしれませんが、私たちはそれが『ただ動作する』ことを願っています」と Apple はうまくまとめています。
この高度に技術的な記事は、私たちが当たり前だと思っている「Hey Siri」テクノロジーについての興味深い洞察を提供します。ぜひ読んでみてください。さらに詳しく知りたい場合は、後で読むために保存しておいてください。