比较iphone中的两个音频文件的节拍/节拍和分级

比较iphone中的两个音频文件的节拍/节拍和分级,iphone,audio,signal-processing,Iphone,Audio,Signal Processing,我想开发一个iPhone应用程序,它应该能够计算用户在麦克风上唱歌时收到的短语数量 该应用程序还应该能够破译用户的短语是否在预设节拍的节奏中。当用户在麦克风上唱歌时,只播放器乐音乐 因此,我必须将用户录制的声音与器乐合并——这是一个音频文件。我已经在原来的歌曲文件。我必须对两者进行比较,并给用户打分 注意…器乐没有原始歌曲文件的人声 有人能帮我吗?谢谢,Vadivelu首先,您需要一个音频分割和开始检测的解决方案。有几种不同的方法可以做到这一点,其中一些已经在堆栈溢出上讨论过了。有一个图书馆可以

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

该应用程序还应该能够破译用户的短语是否在预设节拍的节奏中。当用户在麦克风上唱歌时,只播放器乐音乐

因此,我必须将用户录制的声音与器乐合并——这是一个音频文件。我已经在原来的歌曲文件。我必须对两者进行比较,并给用户打分

注意…器乐没有原始歌曲文件的人声


有人能帮我吗?谢谢,Vadivelu

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


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

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

  • 我有一部iPhone,我玩Lady Gaga:P
  • 它播放原始歌曲(乐器+人声)
  • 当我开始唱歌时,应用程序必须检测到我正在播放歌曲
  • 如果它确实决定了这一点,它将切换到只演奏乐器(卡拉OK风格)
  • 同时,它记录了我的声音。在这首歌的结尾,它对我唱得如何做了一些分析
  • 如果这是正确的,让我试着尝试一下步骤4。其基本思想是,只有当我在播放歌曲的附近唱某首歌时,它才能切换到卡拉OK模式

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

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

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

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

    祝你好运


    看看傅里叶变换。