処理技術
音声は情報密度の高いデータタイプである。動画コンテンツの時代には時代遅れに感じるかもしれないが、音声は多くの人にとって主要な情報源であり続けている。リスナーが長期的に減少しているにもかかわらず、2020年には12歳以上のアメリカ人の83%がある週に地上波(AM/FM)ラジオを聴いている(2019年の89%から減少)。逆に、オンライン・オーディオのリスナーは過去20年間で着実に増加しており、同じピュー・リサーチ・センターの調査によると、アメリカ人の62%が何らかの形で毎週聴いていると報告されている。
波としての音には、周波数、振幅、波形、持続時間の4つの性質がある。音楽用語では、これらをピッチ、ダイナミック、トーン、デュレーションと呼ぶ。また、音は人間や他の動物が環境を認識・理解するのに役立ち、周囲の物体の位置や動きを知る手がかりとなる。
情報を伝えるものとして、音声は3つのカテゴリーに分類することができます:
- 音声:音声:単語と文法で構成されるコミュニケーション媒体。音声認識アルゴリズムにより、音声をテキストに変換することができる。
- 音楽:メロディ、ハーモニー、リズム、音色で構成される楽曲を生み出すために、ボーカルや楽器の音が組み合わされたもの。音楽は楽譜で表すことができる。
- 波形:アナログ音をデジタル化して得られるデジタル音声信号。波形は音声、音楽、自然音または合成音を表すことができる。
音声検索は、オンライン・メディアをリアルタイムで検索・監視し、知的財産権の侵害を取り締まるために利用できる。また、音声データの分類や統計分析においても重要な役割を担っています。
処理技術
音声、音楽、その他の一般的な音には、それぞれ固有の特性があり、異なる処理方法が要求されます。通常、音声は音声を含むグループと含まないグループに分けられます:
- 音声は自動音声認識によって処理されます。
- 音楽音声、効果音、デジタル化された音声信号を含む非音声音声は、音声検索システムを使って処理されます。
この記事では、音声検索システムを使って、音声以外のオーディオデータを処理する方法を取り上げます。音声認識は、この記事では扱いません。
音声特徴抽出
音声の特徴抽出は、音声の類似検索を可能にするため、音声検索システムにおいて最も重要な技術である。音声の特徴量を抽出する方法は2つに分類される:
- ガウス混合モデル(GMM)や隠れマルコフモデル(HMM)などの伝統的な音声特徴抽出モデル;
- リカレントニューラルネットワーク(RNN)、長期短期記憶(LSTM)ネットワーク、符号化・復号化フレームワーク、注意メカニズムなどのディープラーニングベースの音声特徴抽出モデル。
ディープラーニングに基づくモデルは、従来のモデルよりもエラー率が桁違いに低いため、オーディオ信号処理分野の中核技術として勢いを増している。
音声データは通常、抽出された音声特徴によって表現される。検索プロセスでは、オーディオデータそのものではなく、これらの特徴や属性を検索・比較する。そのため、音声類似検索の有効性は特徴抽出の品質に大きく依存する。
この記事では、大規模な事前訓練されたオーディオパターン認識のためのオーディオニューラルネットワーク(PANN)は、その平均平均精度(mAP)0.439(Hersheyら、2017)の特徴ベクトルを抽出するために使用されます。
オーディオデータの特徴ベクトルを抽出した後、milvusを用いて高性能な特徴ベクトル解析を実装することができる。
ベクトル類似度検索
Milvusは、機械学習モデルやニューラルネットワークによって生成された埋め込みベクトルを管理するために構築された、クラウドネイティブのオープンソースベクトルデータベースである。コンピュータビジョン、自然言語処理、計算化学、パーソナライズされたレコメンダーシステムなどのシナリオで広く使用されています。
以下の図は、Milvusを使った一般的な類似検索プロセスを表しています。 how-does-milvus-work.png
- 非構造化データはディープラーニングモデルによって特徴ベクトルに変換され、Milvusに挿入される。
- Milvusはこれらの特徴ベクトルを保存し、インデックスを作成する。
- Milvusはリクエストに応じて、クエリベクトルに最も近いベクトルを検索して返す。
システムの概要
音声検索システムは、主に挿入(黒線)と検索(赤線)の2つの部分から構成されている。
音声検索システム.png
サンプルデータセットにはオープンソースのゲームサウンドを使用しており、コードの詳細はMilvus bootcampに記載されています。
ステップ1: データの挿入
以下は、事前に学習したPANNs推論モデルを用いて音声埋め込みデータを生成し、Milvusに挿入するサンプルコードです。Milvusは各ベクトル埋め込みデータに一意のIDを割り当てます。
1 wav_name, vectors_audio = get_audio_embedding(audio_path)
2 if vectors_audio:
3 embeddings.append(vectors_audio)
4 wav_names.append(wav_name)
5 ids_milvus = insert_vectors(milvus_client, table_name, embeddings)
6
そして、返されたids_milvusは、他の関連情報(例えばwav_name)と共にMySQLデータベースに格納されます。
1 get_ids_correlation(ids_milvus, wav_name)
2 load_data_to_mysql(conn, cursor, table_name)
3
ステップ2:オーディオ検索
Milvusは、あらかじめ格納された特徴ベクトルと、PANNs推論モデルを用いてクエリオーディオデータから抽出された入力特徴ベクトルとの内積距離を計算し、検索されたオーディオデータに対応する類似特徴ベクトルのids_milvusを返します。
1 _, vectors_audio = get_audio_embedding(audio_filename)
2 results = search_vectors(milvus_client, table_name, [vectors_audio], METRIC_TYPE, TOP_K)
3 ids_milvus = [x.id for x in results[0]]
4 audio_name = search_by_milvus_ids(conn, cursor, ids_milvus, table_name)
5
APIリファレンスとデモ
API
この音声検索システムはオープンソースのコードで構築されている。主な機能は音声データの挿入と削除です。すべてのAPIはブラウザで127.0.0.1:
デモ
Milvusを使った音声検索システムのライブデモをオンラインで公開しています。
オーディオ検索デモ.png
結論
ビッグデータの時代に生きる人々は、自分たちの生活があらゆる種類の情報で溢れていることに気づく。それをよりよく理解するためには、従来のテキスト検索ではもはや対応できない。今日の情報検索技術では、動画、画像、音声など様々な非構造化データの検索が急務となっている。
コンピュータが処理しにくい非構造化データは、ディープラーニング・モデルを使って特徴ベクトルに変換することができる。この変換されたデータは、機械によって簡単に処理することができ、私たちは、先人たちができなかった方法で非構造化データを分析することができます。オープンソースのベクトルデータベースであるMilvusは、AIモデルによって抽出された特徴ベクトルを効率的に処理することができ、一般的な様々なベクトルの類似度計算を提供する。
参考文献
Hershey, S., Chaudhuri, S., Ellis, D.P., Gemmeke, J.F., Jansen, A., Moore, R.C., Plakal, M., Platt, D., Saurous, R.A., Seybold, B. and Slaney, M., 2017, March.大規模音声分類のためのCNNアーキテクチャ。In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp.131-135, 2017
見知らぬ人にならない
- システムの概要
- APIリファレンスとデモ
- 結論
- 参考文献
- 見知らぬ人にならない
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word