2010-12-22 68 views
3

我想開發一個iPhone應用程序,它應該能夠計算用戶在麥克風上唱歌時收到的短語數量。比較兩個音頻文件的節拍/速度和iphone的評分

此應用程序還應該能夠解密用戶樂句是否處於預設節拍的節奏中。當用戶在麥克風上演唱時,純音樂會播放。

所以我必須將用戶錄製的聲音與器樂合併 - 這是一個音頻文件。我已經在原始歌曲文件。我必須比較兩者並給用戶評分。

注意......器樂曲目沒有原始歌曲文件的聲音。

任何人都可以幫我嗎?謝謝,Vadivelu

+0

看看傅里葉變換。 – mrueg 2010-12-22 17:40:50

回答

1

首先,你將需要一個解決方案,音頻分割和起始檢測。有幾種不同的方法可以做到這一點,其中一些已經在堆棧溢出中進行了討論。 Aubio是一個圖書館,可以幫助你。

合併兩個聲音文件的第二部分應該是傳入麥克風聲音的採樣緩衝區與原始音頻源的採樣緩衝區之間的簡單求和操作。

0

讓我試着理解你正在構建的應用程序。

  1. 我有一個iPhone和我玩Lady Gaga:P。
  2. 它播放原始歌曲(樂器+人聲)。
  3. 當我開始唱歌時,應用程序必須檢測到我正在嘗試唱歌。
  4. 如果確實如此,它將僅切換到演奏樂器(卡拉OK風格)。
  5. 同時,它會記錄我的聲音。在這首歌的結尾,它對我演唱的情況做了一些分析。

如果這是正確的,讓我嘗試在步驟#4刺傷。基本的想法是,只有當我正在唱歌的東西關閉正在播放的歌曲,如果它切換到卡拉OK模式。

我會預先計算歌曲的人聲部分的能量包絡(人的部分假設要唱歌)。要提取只有人聲部分,您可能需要付出一個好歌手來唱歌,因爲您可能無法從原始歌曲中提取歌曲。爲了計算能量包絡,我會使用半波整流,然後是低通濾波器(肯定是因果和快速的東西)。

然後,我會聆聽麥克風,並實時計算輸入音頻的能量包絡。

知道我是2點進入「電話」,我會比較1點55分到2點的真實能量包絡到我記錄的最後5秒鐘的能量包絡。我會以某種方式規範每個信封。根據重疊分數,我會決定這個人是否試圖唱「電話」。

祝你好運!

chuan