有没有人有使用 Dejavu 库在 Python 中进行音频指纹识别和识别的经验?它工作正常,但我感兴趣的是,到目前为止,我一次只能识别一个文件:
print djv.recognize(FileRecognizer, 'path/song_name.mp3')
任何人都知道如何以及在哪里创建一个循环,该循环将从上面对文件夹中的所有文件执行该打印命令?我认为应该在这里的某个地方创建循环:
https://github.com/worldveil/dejavu/blob/master/dejavu/recognize.py
import dejavu.fingerprint as fingerprint
import dejavu.decoder as decoder
import numpy as np
import pyaudio
import time
class BaseRecognizer(object):
def __init__(self, dejavu):
self.dejavu = dejavu
self.Fs = fingerprint.DEFAULT_FS
def _recognize(self, *data):
matches = []
for d in data:
matches.extend(self.dejavu.find_matches(d, Fs=self.Fs))
return self.dejavu.align_matches(matches)
def recognize(self):
pass # base class does nothing
class FileRecognizer(BaseRecognizer):
def __init__(self, dejavu):
super(FileRecognizer, self).__init__(dejavu)
def recognize_file(self, filename):
frames, self.Fs = decoder.read(filename, self.dejavu.limit)
t = time.time()
match = self._recognize(*frames)
t = time.time() - t
if match:
match['match_time'] = t
return match
def recognize(self, filename):
return self.recognize_file(filename)
我知道它应该使用 glob 模块完成,但由于我是新手,不知道将它与该循环放在哪里,所以我不会提示输入确切的文件以进行识别!