Python でオーディオ フィンガープリンティングと認識を行う Dejavu ライブラリを使用した経験のある人はいますか? 正常に動作していますが、私が興味を持っているのは、これまでのところ、次を使用して一度に1つのファイルを認識できることです。
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 モジュールで行う必要があることはわかっていますが、私は初心者なので、そのループでどこに配置すればよいかわかりません。そのため、認識のために正確なファイルを求めるプロンプトが表示されません!