繁体   English   中英

在iphone中比较两个音频文件的节拍/速度和评级

[英]Compare two audio files for beat/tempo and rating in iphone

我想开发一个iPhone应用程序,它应该能够计算用户在麦克风上唱歌时收到的短语数量。

此应用程序还应能够解密用户短语是否在预设节拍的节奏中。 当用户在麦克风上演唱时,将播放仅限乐器的音乐。

所以我必须将用户录制的语音与乐器音乐合并 - 这是一个音频文件。 我已经有原创歌曲文件了。 我必须比较两者并给用户评分。

注意...乐器音乐没有原始歌曲文件的声音。

谁能帮帮我吗? 谢谢,Vadivelu

首先,您需要一个音频分割和起始检测的解决方案。 有几种不同的方法可以做到这一点,其中一些已经在堆栈溢出上进行了讨论。 Aubio是一个可以帮助您解决此问题的图书馆。

第二部分,合并两个声音文件应该是传入麦克风声音的采样缓冲区与原始音频源的采样缓冲区之间的简单求和操作。

让我试着了解您正在构建的应用程序。

  1. 我有一部iPhone,我玩Lady Gaga:P。
  2. 它播放原始歌曲(乐器+人声)。
  3. 当我开始唱歌时,应用程序必须检测到我正在尝试演唱这首歌。
  4. 如果它确定了这一点,它只会切换到演奏乐器(卡拉OK风格)。
  5. 同时,它记录了我的声音。 在这首歌的最后,它对我的​​演唱效果做了一些分析。

如果这是正确的,那么让我试着去试一下第4步。 基本的想法是,只有当我正在播放接近正在播放的歌曲的东西时才应该切换到卡拉OK模式。

我会预先计算出歌曲中仅有声部分的能量包络(该人应该唱的部分)。 要提取只有人声部分,你可能需要付一个好歌手来唱它,因为你可能无法从原始歌曲中提取它。

为了计算能量包络,我会使用半波整流,然后是低通滤波器(绝对是因果和快速的)。

然后,我会听麦克风并实时计算输入音频的能量包络。

知道我2点进入“电话”,我会将1:55到2点的真实能量包络与我记录的最后5秒的能量包络进行比较。 我会以某种方式规范化每个信封。 根据重叠分数,我会决定该人是否试图唱“电话”。

祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM