问题标签 [audio-fingerprinting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2782 浏览

ios - 在 iOS 中比较两个音频(本地存储的预先录制的语音命令并从应用程序中的麦克风录制)

在应用程序中,我必须比较以前本地存储的语音命令的实时录音,如果它匹配(不仅是文本,还包括识别出的人的声音),然后执行必要的操作。

1 匹配来自同一个人的语音命令。

2-匹配命令的文本。

我应用了很多方法,但没有一个按我的预期工作。

首先: 使用OpenEars SpeechKit等语音转文本库,但这些库仅转换语音中的文本。

结果:如我所愿失败

二:(音频指纹)

acrcloud 库在这个库中,我记录了一个命令并将该 mp3 文件存储在 acrcloud 服务器上,并与现场录音(由我说)匹配,但当我播放相同的录音(我的声音录制的 MP3 文件)时,它是上传到 acrcloud 服务器然后匹配。 结果:如我所愿失败

API.AI在这个库中,就像语音到文本一样,我在他的服务器上存储了一些文本命令,然后任何人说出相同的命令,结果都会成功。 结果:如我所愿失败

请建议我如何解决 iOS 应用程序的这个问题

0 投票
1 回答
1539 浏览

c# - 小 wav 中的 C# 音频指纹识别

我需要在大约 40 个长度为 5 到 7 秒的文件的小型数据库中找到类似的 wav 文件。

这些 wav 文件是电话服务提供商在您拨打电话时提供给您的记录。

例子:

https://clyp.it/lnz1aybd

我的针长 1 到 2 秒。

所有的 wav 都是pcm 编码的 16 位 8000hz 单声道

我尝试使用Aurio.AudioFingerPrint没有成功

https://github.com/protyposis/Aurio

我的方法有什么问题?
任何人都知道我缺少小型 wav 的配置吗?

0 投票
1 回答
1326 浏览

python - python脚本匹配来自较大视频流的视频剪辑

我想在 python 中开发一个脚本,可以用来识别视频流中包含的视频剪辑。

您能否建议我一些 python 库或任何示例脚本开始与视频文件进行比较

谢谢

0 投票
1 回答
1442 浏览

audio-fingerprinting - 如何选择音频指纹算法来创建协作音乐数据库?

我需要创建一个合作音乐识别服务。每个用户都可以选择对歌曲进行指纹识别并将其连同其元信息一起发送到服务器。一开始服务数据库是空的,每次收到音乐指纹时,歌曲的元数据都会更新(如果不同的用户发送不同的信息,服务器将根据多数选择将元数据分配给指纹)相同的指纹)。

我需要为整首歌曲计算指纹,我不需要从一小部分中识别歌曲。

指纹不应该是 100% 准确的。如果相同的文件以不同的压缩率编码,如果两个歌曲文件将收到相同的指纹,我会很高兴。低水平的噪音独立性将是一个优势。

歌曲开头或结尾的静音不是问题,我应该使用标准静音抑制算法将它们删除(在这种情况下也不需要非常精确的结果)。

我知道有一些开源库,例如:http ://echoprint.me/和https://acoustid.org/但这些库对我的需求来说是多余的,因为如果我理解正确,它们可以从一部分中识别出一首歌曲,这将创建一个沉重的数据库。我需要一种算法,它会给我一个不太重(一些 kb)的整首歌指纹。

我可以使用哪种最简单、最快的算法?

谢谢大家

0 投票
1 回答
815 浏览

android - Android:音频匹配(音频指纹)

我正在编写一个播放音频文件并记录手机同时输出的安卓应用程序。录音完成后,它会将录音与播放的原始音频进行比较,并返回它们是否匹配以及确定性如何。

我进行了很多搜索,发现了一些用于音频指纹识别的库,但它们主要用于音乐识别目的。

有没有我可以用于此目的的库?为此编写自定义算法是否有意义?

0 投票
0 回答
739 浏览

python - 我正在寻找一种散列编码音频语音文件的方法,以便通过 SQL 进行比较

我一直在开发一种工具来比较第一天录制的音频文件和三十天后录制的另一个音频文件。我的培训是语言学,这个工具将用于对独特的录音数据库进行编目、索引和比较。我知道诸如 MusicBrainz 或 EchoNest 之类的商业级 API,但不能将它们用于该项目。所有文件都必须存储在本地,不能贡献给在线数据库。

目前,我有每个文件的频谱图和一个可以转换为几乎任何声音文件的批处理转换器。我使用频谱分析仪来精确匹配频谱图(如哈希图叠加),并且能够以 96% 的准确度匹配我的结果。但是,随着我的项目的增长,我的存储需求对于这种方法来说将变得太高了。

我的想法是这样的——如果我可以将音频文件调整为相似的帧速,我应该能够对声学数据进行散列编码并将散列字符串存储在一个简单的 SQL 表中,而不是整个音频文件或频谱图。我不想散列整个文件 - 只是为了匹配声学。我通过 Python(dejavu、libmo 等)找到了一些矫枉过正的解决方案,但作为语言学家,而不是计算机人员,我不确定新手是否可以为散列音频数据的代码争吵

我希望有一种方法可以在下周左右创建哈希值(或另一个校验和)。来自 interwebz 的想法?

0 投票
1 回答
2260 浏览

java - 使用 FFT (Android Studio) 匹配两个音频文件

在过去的几天里,我一直在开发我的应用程序的一部分,我需要同时播放和录制音频文件。我需要完成的任务只是将录音与播放的音频文件进行比较并返回匹配的百分比。这是我到目前为止所做的事情以及我的问题的一些背景:

  • 目标 API >15

  • 我决定使用 .wav 音频文件格式来简化文件的解码

  • 我使用 AudioRecord 进行录制,使用 MediaPlayer 播放音频文件
  • 我创建了一个决策类以传递我的音频文件并将其转换为 PCM 以执行匹配分析
  • 我使用以下规格来录制 AudioFormat (CHANNEL_MONO, 16 BIT, SAMPLE_RATE = 44100)
  • 将音频文件传递给解码器后,我继续将其传递给 FFT 类,以获得分析所需的频域数据。

以下是我的几个问题:

  • 当我使用 AudioRecord 录制音频时,默认格式是 PCM 还是我需要如何指定?
  • 我正在尝试将记录传递给 FFT 类,以获取频域数据以执行我的匹配分析。有没有办法在不保存用户设备上的录音的情况下做到这一点?
  • 对两个文件执行 FFT 分析后,是否需要将数据存储在文本文件中才能执行匹配分析?有哪些选择或可能的方法来做到这一点?
  • 在进行了大量研究之后,我发现的所有来源都涵盖了如何将录音与数据库中包含的歌曲/音乐进行匹配。我的目标是查看两个特定音频文件的匹配程度,我将如何处理?- 我需要创建/使用散列函数来实现我的目标吗?对此的详细答案将非常有帮助
  • 目前我有一个单独的线程用于录制;用于解码音频文件的单独活动;FFT 分析的单独活动。我计划在单独的线程或 AsyncTask 中运行匹配分析。您认为这种结构是最优的还是有更好的方法来做到这一点?另外,我应该在单独的线程中将我的音频文件传递给解码器,还是可以在录制线程或 MatchingAnalysis 线程中进行?
  • 在进行匹配比较之前,我是否需要在对音频文件的操作中执行窗口化?
  • 我需要解码 .wav 文件还是可以直接比较 2 个 .wav 文件?
  • 在比较之前我需要对音频文件进行低音操作吗?
  • 为了进行匹配比较,我需要生成哪些数据(功率谱、能谱、频谱图等)?

我是以正确的方式解决这个问题还是我错过了什么?

0 投票
0 回答
1104 浏览

python - Dejavu - Python 中的音频指纹识别 - 采样率错误

我正试图让Dejavu在 raspbian (raspberry pi 3) 上工作。我正在尝试将来自麦克风输入的音频与 mysql 数据库中的文件进行匹配。我已经测试过并且可以使用 pyaudio 进行录制,但是我需要设置采样率 = 24000 & CHUNK = 4056。我几乎使用了 Dejavu 示例附带的默认代码。

当我运行代码时,出现以下错误:IOError: [Errno Invalid sample rate] -9997

有没有人有任何建议如何解决这个问题?

这是我的 Python 代码:

这是来自终端的日志:

0 投票
1 回答
4491 浏览

java - Android:没有找到这样的文件或目录错误?

我正在同时播放和录制音频,以便使用 musicg API 执行音频匹配分析。每次运行我的应用程序时,我都会收到以下错误:

我正在尝试将录音保存到文件中,然后将其传递给 getScore() 方法,以便将其与播放的原始音频文件进行比较并返回匹配的分数。下面是我的 MainActivity 中的相关代码,其中以粗体显示错误的行。

编辑1:

0 投票
1 回答
109 浏览

android - GraceNote GNSDK 无法获取修剪后歌曲的元数据

我已经使用 GNSDK for mobile (android) 开发了一个示例应用程序,但它无法提供修剪歌曲的元数据。

设想 :

设备中存在修剪过的歌曲 -> 打开 GraceNote 应用程序 -> 单击库 ID -> 未找到结果

播放设备中存在的修剪过的歌曲 -> 打开 GraceNote 应用程序 -> 现在 ID -> 找到正确的结果

设备中存在原始歌曲 -> 打开 GraceNote 应用程序 -> 单击库 ID -> 找到正确的结果

如果我们通过修剪后的歌曲,我们不会从 SDK 获得任何结果。尊敬的 GraceNote 开发者,请提供解决方案