我目前正在调查 dejavu.py ( some more info ),我必须说到目前为止我对它印象非常深刻。虽然我确实发现文档在用户界面方面有点不完整。
当您使用 oDjv.recognize(FileRecognizer, sFile) 从文件中识别出一首歌曲时,您将返回一个如下所示的字典:

{'song_id': 2, 'song_name': 'Sean-Fournier--Falling-For-You', 'file_sha1': 'A9D18B9B9DAA467350D1B6B249C36759282B962E', 'confidence': 127475, 'offset_seconds': 0.0, 'match_time': 32.23410487174988, 'offset': 0}

并从录音( oDjv.recognize(MicrophoneRecognizer, seconds=iSecs) ):
{'song_id': 2, 'song_name': 'Sean-Fournier--Falling-For-You', 'file_sha1': 'A9D18B9B9DAA467350D1B6B249C36759282B962E', 'confidence': 124, 'offset_seconds': 24.89179, 'offset': 536}

所以,对于 的问题:
1) confidence 到底是什么,是否有置信水平的上限?

2) offset_secondsoffset 有什么区别?

3) 为什么算法需要 30 到 60 秒之间的某个时间(在我运行的所有测试的情况下)从磁盘识别歌曲,但它可以在录制音频时在 10 秒左右完成?

4)运行该函数以从音频录制时,我在该函数的实际输出(即使成功)之前得到以下代码块。我们要去哪里?
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started

5) 是否有可以插入配置的在线音乐数据库?
dConfig = {
    "database": {
        "host": "some magical music database",
        "user": "root",
        "passwd": "",
        "db": "dejavu"
    }
}

oDjv = Dejavu(dConfig)

最佳答案

您的大部分问题都可以在 Dejavu github README.mdwriteup and explanation here 中找到。

但是要回答您的每个编号问题:

  • 在 Dejavu 中,confidence 是当前音频剪辑中“对齐”到数据库最接近匹配的指纹哈希数。没有概率解释。请记住,每个音频文件可能有数千个指纹,因此请将其作为引用点。
  • 它们是相同的持续时间,但单位不同。 offset_seconds 表示为秒,offset 表示为 length of the algorithm's time bins
  • Dejavu 以 3 倍收听速度对大多数歌曲进行指纹识别。因此,一首 3 分钟的歌曲可能比它听 10 秒钟的短音频剪辑花费的时间更长。您可以使用 python dejavu.py --recognize mic 5 来调整默认命令行麦克风识别所需的时间,该代码监听 5 秒而不是默认的 10 秒。仅供引用,该库的最佳选项之一是您还可以更改 Dejavu 使用的秒数-使用 fingerprint_limit 键在 JSON config file 中识别磁盘。
  • 您的安装有问题,或者您使用的虚拟机不知道如何录制音频并将其放入 pyaudio 。在您的情况下,请参阅 this solution ,也许它可能会有所帮助。
  • 没有在线音乐数据库,你插入你自己的 MySQL 或(很快)PostgreSQL 并记录你自己的指纹。 Dejavu 用于识别各种预先录制的音频。另外,每个用户的需求是不同的。想要以牺牲大多数指纹为代价获得更准确的指纹?提高 DEFAULT_FAN_VALUE 。需要更高的碰撞保证但不介意额外的存储成本?您可以减少 FINGERPRINT_REDUCTION 并保留每个 SHA-1 的更多字符。 Dejavu 旨在适应许多不同的用例,这必然意味着如果您更改 this file 中的指纹参数,您的数据库将具有不同的分布和结构。
  • 关于python - dejavu.py 识别的歌曲的附加信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30237162/

    10-10 14:32