Web Audio API ile Gerçek Zamanlı Ses Analizi
5 Mart 2026
Akoria'nın kulak eğitimi modülünde öğrencinin sesini gerçek zamanlı olarak analiz ediyoruz. Bu yazıda Web Audio API'nin nasıl çalıştığını ve FFT ile frekans analizini anlatacağım.
Web Audio API Nedir?
Web Audio API, tarayıcıda ses işleme için güçlü bir JavaScript API'sidir. Ses kaydı, efekt uygulama, frekans analizi gibi işlemleri doğrudan tarayıcıda yapabilirsiniz.
// AudioContext oluştur
const audioContext = new AudioContext();
// Mikrofon erişimi
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const source = audioContext.createMediaStreamSource(stream);
// Analyser node - FFT analizi için
const analyser = audioContext.createAnalyser();
analyser.fftSize = 4096;
source.connect(analyser);FFT ile Frekans Tespiti
FFT (Fast Fourier Transform), zaman domain'indeki ses sinyalini frekans domain'ine çevirir. Bu sayede hangi notanın çalındığını tespit edebiliriz.
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Float32Array(bufferLength);
function detectPitch() {
analyser.getFloatFrequencyData(dataArray);
// En yüksek frekansı bul
let maxIndex = 0;
let maxValue = -Infinity;
for (let i = 0; i < bufferLength; i++) {
if (dataArray[i] > maxValue) {
maxValue = dataArray[i];
maxIndex = i;
}
}
// Frekansı Hz'e çevir
const frequency = (maxIndex * audioContext.sampleRate) / analyser.fftSize;
return frequency;
}Notaya Dönüştürme
Tespit edilen frekansı müzikal notaya dönüştürmek için logaritmik hesaplama kullanıyoruz:
function frequencyToNote(freq) {
const noteNum = 12 * (Math.log2(freq / 440)) + 69;
const noteNames = ["C", "C#", "D", "D#", "E", "F",
"F#", "G", "G#", "A", "A#", "B"];
return noteNames[Math.round(noteNum) % 12];
}Sonuç
Web Audio API, tarayıcıda profesyonel düzeyde ses işleme yapmayı mümkün kılıyor. Akoria'da bu teknolojiyi kullanarak öğrencilerin ses egzersizlerini gerçek zamanlı olarak değerlendiriyoruz.