我的代码如下
from dejavu import Dejavu
from dejavu.recognize import FileRecognizer, MicrophoneRecognizer
djv = Dejavu(config)
song = djv.recognize(FileRecognizer, "mp3/Sean-Fournier--Falling-For-You.mp3")
下面的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, file_hash = 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)
我不知道如何识别需要类Filereognizer以及识别器定义为
的文件名def识别(self,filename):
并仅将filename作为参数。有谁能解释这项工作是如何工作的以及它实际上做了什
感谢@daniel这是我的后续问题
def recognize(self, recognizer, *options, **kwoptions):
r = recognizer(self)
return r.recognize(*options, **kwoptions)
这是Djavu课程下的识别器,我在思考" self"来自line" r =识别器(self)"是什么让识别器(在Dejavu类下)可以接收FileRecognizer类作为参数吧?
这是来自dejavu(audiofingerprint软件)github,链接如下: https://github.com/worldveil/dejavu