我想开发一个iPhone应用程序,它应该能够计算用户在麦克风上唱歌时收到的短语数量。
此应用程序还应能够解密用户短语是否在预设节拍的节奏中。当用户在麦克风上演唱时,只播放纯音乐。
所以我必须将用户录制的语音与乐器音乐合并 - 这是一个音频文件。我已经有原创歌曲文件了。我必须比较两者并给用户评分。
注意......乐器音乐没有原创歌曲的声音。
任何人都可以帮助我吗?谢谢,Vadivelu
答案 0 :(得分:1)
首先,您需要一个音频分割和起始检测的解决方案。有几种不同的方法可以做到这一点,其中一些已经在堆栈溢出上进行了讨论。 Aubio是一个可以帮助您解决此问题的库。
第二部分,合并两个声音文件应该是传入麦克风声音的采样缓冲区与原始音频源的采样缓冲区之间的简单求和操作。
答案 1 :(得分:0)
让我试着了解您正在构建的应用程序。
如果这是正确的,那么让我试着去试一下第4步。基本的想法是,只有当我正在播放正在播放的歌曲的关闭时才会切换到卡拉OK模式。
我会预先计算一首歌曲的声乐部分的能量包络(该人假设唱歌的部分)。要提取只有声乐的部分,你可能需要付一个好歌手来唱它,因为你可能无法从原始歌曲中提取它。
为了计算能量包络,我会使用半波整流,然后是低通滤波器(绝对是因果和快速的东西)。
然后,我会听麦克风并实时计算输入音频的能量包络。
知道我2点进入“电话”,我会将1:55到2点的真实能量包络与我记录的最后5秒的能量包络进行比较。我会以某种方式规范化每个信封。根据重叠分数,我会决定该人是否试图唱“电话”。
祝你好运!
传