利用 panns-inference 预训练模型将音频数据转换为特征向量并导入到 Milvus 中,Milvus 将返回向量对应的 ID的代码
时间: 2024-03-29 22:40:58 浏览: 137
以下是利用 panns-inference 预训练模型将音频数据转换为特征向量并导入到 Milvus 中,Milvus 将返回向量对应的 ID的 Python 代码示例:
```python
import torch
import torchaudio
from transformers import Wav2Vec2Processor, Wav2Vec2Model
from panns_inference import AudioTagging
from milvus import Milvus, IndexType, MetricType
# 加载预训练模型
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-base-960h")
# 加载 panns-inference 模型
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
audio_tagger = AudioTagging(checkpoint_path="Cnn14_DecisionLevelMax_mAP=0.438.pth",
device=device)
# 加载 Milvus
milvus = Milvus(host="localhost", port=19530)
# 定义向量维度和索引参数
dimension = 512
index_type = IndexType.IVF_FLAT
metric_type = MetricType.IP
# 处理音频文件
audio_file = "test.wav"
waveform, sample_rate = torchaudio.load(audio_file)
input_values = processor(waveform, sampling_rate=sample_rate, return_tensors="pt").input_values
features = model(input_values).last_hidden_state
# 提取音频特征向量
audio_features = audio_tagger.inference(features.cpu().detach().numpy())
# 向 Milvus 中添加向量
milvus_vectors = [audio_features.tolist()]
status, ids = milvus.insert(collection_name="audio_collection",
records=milvus_vectors,
ids=[1])
print("Milvus vector ID:", ids[0])
```
其中,`test.wav` 是音频文件的路径,`audio_collection` 是 Milvus 中用于存储音频特征向量的集合名称。运行代码后,Milvus 将返回向量对应的 ID。
阅读全文