【Google AI Blog 翻訳】Google次世代の音楽認識技術（2018/09/14）

###[Google’s Next Generation Music Recognition](https://ai.googleblog.com/2018/09/googles-next-generation-music.html)
*Friday, September 14, 2018*
*Posted by James Lyon, Google AI, Zürich*

2017年、 Pixel 2シリーズで[Now Playing](https://support.google.com/pixelphone/answer/7535326?hl=en)がリリースされました。Now Playingは[ディープニューラルネットワーク](https://en.wikipedia.org/wiki/Deep_learning)を使用して、モバイル端末に低消費電力の常時オンの音楽認識をもたらしました。Now Playingの開発では、データベースの各トラックに非常に小さなフィンガープリントが必要となり、インターネットに接続しなくても音楽認識を完全に端末上で動作できる小型で効率的な音楽認識装置の開発を目標にしました。結局、Now Playingは端末上の音楽認識装置として役立つだけではなく、当時最新のサーバーサイド[Sound Search](https://support.google.com/assistant/answer/7554088?hl=en&co=GENIE.Platform=Android)システムよりも精度と効率を大幅に上回りました。ところで、Sound Searchはディープニューラルネットワークが普及していった前に構築されたものです。Googleの音楽認識機能を世界最高にするとの目的で、当然ながら、Now Playingを動かすのと同じテクノロジーをサーバーサイドの Sound Searchにもたらすことができるかも疑問に思っていました。 

最近、Sound Searchの新しいバージョンを導入しました。新 Sound Searchを動かしたのは、一部Now Playingにも使用されたテクノロジーです。Android 搭載端末の Google Searchアプリや Google Assistantから利用できます。音声クエリを開始するだけで、近くで音楽が流れている場合は、「この曲は何ですか？」というポップアップメッセージが表示されます。それ以外は、「はいGoogle、この曲は何ですか？」と聞くこともできます。最新版の Sound Searchで、これまで以上のスピードで、より正確な結果を得ることができます。

![Figure1.gif](https://qiita-image-store.s3.amazonaws.com/0/194463/75983ff8-42d4-2297-39fb-5c9f1f0152aa.gif)

###Now Playing 対 Sound Search
 バッテリーの顕著な影響がほとんどなく、十分小さくて効率的で、モバイル端末で連続的に実行できるように、[Now Playingは音楽認識技術を小型化にしました](https://arxiv.org/abs/1711.10958)。これを実現するために、畳み込みニューラルネットワークを使用して、数秒間の音声を独自のフィンガープリントに変える完全に新しいシステムを開発しました。このフィンガープリントは、数万曲の音楽が入る端末のデータベースに対して比較されます。このデータベースは定期的に更新され、新しくリリースされたトラックを追加し、人気がなくなったトラックを削除します。その一方で、サーバーサイドのSound Searchシステムは大きく異なり、Now Playingに対抗するためには、1000倍多くの曲が必要です。実質的に大きな音楽ライブラリを使用して、Sound Searchをより速くかつ正確的に実行することには、幾つかのユニークな課題を提示しました。尚、それに入る前に、Now Playingの仕組みについて幾つかを詳しく紹介します。 

###Now Playing のコアマッチングプロセス
 Now Playingは音声の８秒部分の音楽の特徴を、１秒間隔で７つ２秒のクリップで構成される低次元埋め込み空間のシーケンスに投影することによってミュージカル「フィンガープリント」を生成します。次のようなセグメンティションの例があります。

![Figure2.png](https://qiita-image-store.s3.amazonaws.com/0/194463/ee8377af-fbdf-898f-f9df-10a66757f5b9.png)

次に、Now Playingは端末で類似の埋め込みシーケンスに対して、同じニューラルネットワークで人気の音楽を処理することによって生成された曲のデータベースを検索します。データベースの検索は、２段階のアルゴリズムを使用して、マーチング曲を確認します。最初の段階では、高速なお精度がよくないアルゴリズムを用いて、データベース全体を検索し、幾つかの有力候補を見つけます。次の段階では、各候補について詳細な分析を行い、どちらの曲（もしあれば）が正しいかわかります。 

**マーチングフェーズ１：**いい候補曲を探す ： 
全ての埋め込みに対して、Now Playingは端末で曲のデータベースに最近傍検索を行い、類似の埋め込みを探します。データベースは、[空間分割とベクトル量子化のハイブリッド方法](https://arxiv.org/abs/1711.10958)を使用し、数百万の埋め込みベクトルを効率的に検索します。オーディオバッファにはノイズが多いため、この検索はおおよそのもので、全ての埋め込みがデータベースでそれに対する正しい曲の近傍マーチを見つけるとは限りません。なお、クリップ全体において、正しい曲付近のいくつかの埋め込みを見つける機会が非常に高いため、検索は複数のヒットを持つ小さな一連の曲に絞り込まれます。

**マーチングフェーズ２：**最終マーチング フ：
ェーズ１で使用されたデータベース検索はおおまかな検索であるため、Now Playingは、クエリに埋め込まれている曲に近い曲の埋め込みが検索で見つからないことがあります。その結果、正確な類似度スコアを計算するために、Now Playingは、データベース内の各曲の全ての埋め込みを取得し、「ギャップ」を埋めることが適切かもしれません。次に、音声バッファから埋め込みのシーケンスと、端末データベース内の曲から別の埋め込みシーケンスが与えられると、Now Playingは類似性をペアごとに推定し、見積もりを合計して最終マーチングスコアを取得します。 

一つの埋め込みより、連続した埋め込みを使用することは、Now Playingの精度にとっては重要です。フィンガープリンティング ニューラルネットワークは、単一の埋め込みから曲の認識を認めるほど十分な精度がありません ― 各埋め込みは多くの誤検出結果を生成します。なお、複数の埋め込みの結果を組み合わせることで、誤検出を簡単に削除することができます。これは、正しい曲がすべての埋め込みにマッチしますが、誤検出のマッチングは入力音声から1つまたは2つの埋め込みだけに近いからです。 


###Sound Searchサーバーでの Now Playingの拡張
 これまで、Now Playingが曲をオンデバイスデータベースにどのようにマッチさせるかについて幾つか詳しく説明しました。数万曲のNow Playingから数千万のSound Searchへ移行する際の最大の課題は、誤検出の結果をもたらす可能性のある曲の数が何千倍になるということです。他の変更なしでこれを補正するには、認識の閾値を上げる必要があります。これは、確認されたマッチを得るためにより多くの音声が必要なことを意味します。なお、新しいSound Searchシステムの目標は、Now Playingよりも速く、遅くない、その結果、人々は10秒以上待つことを望んでいませんでした。 

Sound Searchはサーバーサイドのシステムであるため、Now Playingと同じく処理能力およびストーレッジ領域による制約に制限されません。そのため、フィンガープリントはどうするかについては、２つ主な変更をしました。両方とも認識の精度を上げるため、サーバーリソースを犠牲しました： 

- 使用中のニューラルネットワークのサイズを4倍にして、各埋め込みを96次元から128次元に増加させました。これより、入力した高次元の音声を低次元埋め込みにパックするとのニューラルネットワークが必要となる仕事の量を削減しました。これは、生のニューラルネットワークの出力の精度に大きく依存しますが、フェーズ2の品質を改善する上で重要です。 
- 埋め込みの密度を2倍にしましたが、結局、1秒ごとではなく0.5秒ごとに音声をフィンガープリンティングしても個々の埋め込みの品質はあまり低下しません。マッチングに使える埋め込みの数を２倍にすることで我々に大きなブーストを与えます。 
また、曲の人気度に基づいて indexを重み付けすることも決定しました。実際に、人気のある曲に対して、マーチング閾値を下げて、人気のない曲に対してそれを上げます。全体として、これは認識スピードを低下することなく、無制限に多くの曲（人気のない曲）をデータベースに追加し続けることができることを意味しています。 

![Figure3.gif](https://qiita-image-store.s3.amazonaws.com/0/194463/11d0e68c-d398-39d1-5d06-e1371ce21807.gif)


###結論 
もともとは機械学習を使用して、完全にモバイル端末で動作できる十分コンパクト且つ丈夫な音声フィンガープリントを作成するため Now Playingを着手しました。結局、実際には非常に優れた総合的なフィンガープリント・システムを作成しました。サーバーサイドの Sound Searchシステムは異なる課題を抱えているにも関わらず、Now Playingで発展されたアイデアは、Sound Searchにも非常によく引き継がれました。  まだ改善の余地があると思っていますが、非常に静かな環境や非常に騒々しい環境で流れている音楽に対して、必ずしもマッチングとは限りません。また、システムを更に高速化できると確信しています。次世代の音楽認識を目指し、引き続きこれらの課題に取り込んでいます。次回どんな曲が流されているかを見出す時に、これを試してみることを願っています。ホーム画面に次のようにショットカットを置くことができます。  


####お礼
 We would like to thank Micha Riser, Mihajlo Velimirovic, Marvin Ritter, Ruiqi Guo, Sanjiv Kumar, Stephen Wu, Diego Melendo Casado, Katia Naliuka, Jason Sanders, Beat Gfeller, Julian Odell, Christian Frank, Dominik Roblek, Matt Sharifi and Blaise Aguera y Arcas.