2015-02-04 78 views
2

我想知道有沒有一種方法可以在html 5 web音頻中檢測麥克風的音頻。我希望製作一個在線吉他調諧器,並且我需要從聲音輸入中獲得以赫茲爲單位的音頻。我看過一些EQ和濾鏡效果,但我沒有看到有關頻率識別的任何內容。有沒有方法檢測HTML 5網絡音頻API中的音頻?

編輯: 我發現這個:http://www.smartjava.org/content/exploring-html5-web-audio-visualizing-sound 第二點(分析儀節點)真的很有趣。我看過他的源代碼,但我無法確定如何將分析儀連接到麥克風輸入。 當mp3文件開始播放時,他調用playSound()函數,並在那裏繪製他的畫布。但我沒有playSound()函數...

回答

3

我寫,其中除其他事項外,可以從麥克風輸入檢測頻率的web音頻庫。瞧瞧吧https://github.com/rserota/wad#pitch-detection

var voice = new Wad({source : 'mic' }); 
var tuner = new Wad.Poly(); 
tuner.add(voice); 
voice.play(); 

tuner.updatePitch() // The tuner is now calculating the pitch and note name of its input 60 times per second. These values are stored in tuner.pitch and tuner.noteName. 

var logPitch = function(){ 
    console.log(tuner.pitch, tuner.noteName) 
    requestAnimationFrame(logPitch) 
}; 
logPitch(); 
// If you sing into your microphone, your pitch will be logged to the console in real time. 

tuner.stopUpdatingPitch(); // Stop calculating the pitch if you don't need to know it anymore. 
+0

今晚我會測試它,當我回家!這似乎是我正在尋找的事情!謝謝拉斐爾! – maxime

+0

我遇到了這個例子的問題。我開了一個問題。我會給你一些消息,當它工作。 – maxime

+0

這不僅僅是你。這個例子有一個問題。感謝您在github上打開該問題。我們可以繼續在那裏排除故障。 –

1

您應該可以使用BiquadFilterNode。從鏈路

示例代碼:

var audioCtx = new AudioContext(); 
var biquadFilter = audioCtx.createBiquadFilter(); 
biquadfilter.getFrequencyResponse(myFrequencyArray,magResponseOutput,phaseResponseOutput); 
+0

感謝這一點,但它的測試後,它似乎只是返回給定頻率的水平,而不是活的主頻率。我錯了嗎 ? – maxime