🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI

处理技术

  • Scenarios
July 27, 2021
Shiyu Chen

声音是一种信息密集的数据类型。虽然在视频内容时代,音频可能会让人感觉过时,但它仍然是许多人的主要信息来源。尽管听众人数长期下降,2020 年仍有 83% 的 12 岁及以上美国人在一周内收听地面(AM/FM)广播(低于 2019 年的 89%)。相反,在过去二十年里,在线音频的听众人数稳步上升,据皮尤研究中心的同一项研究显示,62%的美国人每周都会收听某种形式的在线音频。

作为一种波,声音有四个特性:频率、振幅、波形和持续时间。在音乐术语中,这些属性被称为音高、动态、音调和持续时间。声音还能帮助人类和其他动物感知和了解我们所处的环境,为周围环境中物体的位置和移动提供背景线索。

作为一种信息载体,音频可分为三类:

  1. 语音:由文字和语法组成的交流媒介。通过语音识别算法,可以将语音转换为文本。
  2. 音乐:声乐和/或器乐声音的组合,由旋律、和声、节奏和音色组成。音乐可以用乐谱来表示。
  3. 波形:将模拟声音数字化后得到的数字音频信号。波形可代表语音、音乐、自然或合成声音。

音频检索可用于搜索和实时监控在线媒体,以打击侵犯知识产权的行为。它还在音频数据的分类和统计分析中发挥着重要作用。

处理技术

语音、音乐和其他一般声音各有特点,需要不同的处理方法。通常,音频被分为包含语音和不包含语音的两组:

  • 语音音频由自动语音识别技术处理。
  • 非语音音频,包括音乐音频、音效和数字化语音信号,则使用音频检索系统进行处理。

本文重点介绍如何使用音频检索系统处理非语音音频数据。本文不涉及语音识别

音频特征提取

特征提取是音频检索系统中最重要的技术,因为它可以进行音频相似性搜索。音频特征提取方法分为两类:

  • 传统的音频特征提取模型,如高斯混合模型(GMM)和隐马尔可夫模型(HMM);
  • 基于深度学习的音频特征提取模型,如递归神经网络(RNN)、长短期记忆(LSTM)网络、编码-解码框架、注意力机制等。

基于深度学习的模型的错误率比传统模型低一个数量级,因此正逐渐成为音频信号处理领域的核心技术。

音频数据通常由提取的音频特征表示。检索过程搜索和比较的是这些特征和属性,而不是音频数据本身。因此,音频相似性检索的有效性在很大程度上取决于特征提取的质量。

本文采用大规模预训练的音频模式识别音频神经网络(PANNs)来提取特征向量,其平均准确率(mAP)为 0.439(Hershey et al.,2017)。

提取音频数据的特征向量后,我们可以使用 Milvus 实现高性能的特征向量分析。

Milvus是一个云原生的开源向量数据库,专为管理机器学习模型和神经网络生成的 Embeddings 向量而构建。它广泛应用于计算机视觉、自然语言处理、计算化学、个性化推荐系统等场景。

下图描述了使用 Milvus 进行相似性搜索的一般流程: how-does-milvus-work.pnghow-does-milvus-work.png

  1. 深度学习模型将非结构化数据转换为特征向量,然后插入 Milvus。
  2. Milvus 对这些特征向量进行存储和索引。
  3. 根据请求,Milvus 会搜索并返回与查询向量最相似的向量。

系统概述

音频检索系统主要由两部分组成:插入(黑线)和搜索(红线)。

audio-retrieval-system.png 音频检索系统.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  

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.idfor x in results[0]]  
4 audio_name = search_by_milvus_ids(conn, cursor, ids_milvus, table_name)    
5

应用程序接口参考和演示

应用程序接口

该音频检索系统采用开源代码构建。其主要功能是插入和删除音频数据。在浏览器中输入127.0.0.1:/docs,即可查看所有 API。

演示

我们在线提供基于 Milvus 的音频检索系统的现场演示,您可以使用自己的音频数据进行试用。

audio-search-demo.png 音频搜索演示.png

结论

生活在大数据时代,人们发现生活中充斥着各种各样的信息。要想更好地理解这些信息,传统的文本检索早已不能胜任。当今的信息检索技术迫切需要检索各种非结构化数据类型,如视频、图像和音频。

计算机难以处理的非结构化数据,可以利用深度学习模型转换成特征向量。这种转换后的数据可以很容易地被机器处理,使我们能够以前人无法做到的方式分析非结构化数据。Milvus 是一个开源向量数据库,可以高效处理人工智能模型提取的特征向量,并提供各种常见的向量相似性计算。

参考文献

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.

不要成为陌生人

  • GitHub 上查找或为 Milvus 投稿。

  • 通过Slack 与社区互动。

  • Twitter 上与我们联系。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

扩展阅读