Rumah > Artikel > hujung hadapan web > Cara Mencegah Maklum Balas Pembesar Suara dalam Transkripsi Pertuturan Menggunakan API Audio Web
Satu lagi perkara yang perlu saya fikirkan baru-baru ini untuk menyambungkan enjin transription Assembly.ai saya ke bahagian hadapan yang kuat.
Langkah pertama ialah meminta akses kepada mikrofon dengan pembatalan gema didayakan. Ciri ini terbina dalam kebanyakan penyemak imbas moden dan membantu mengurangkan maklum balas daripada pembesar suara anda.
async function getMicrophoneStream() { const constraints = { audio: { echoCancellation: true, noiseSuppression: true, autoGainControl: true } }; try { const stream = await navigator.mediaDevices.getUserMedia(constraints); return stream; } catch (err) { console.error('Error accessing the microphone', err); return null; } }
Seterusnya, kami menyediakan API Audio Web untuk memproses strim audio. Ini melibatkan mencipta Konteks Audio dan menyambungkan pelbagai nod, termasuk DynamicsCompressorNode.
async function setupAudioProcessing(stream) { const audioContext = new AudioContext(); const source = audioContext.createMediaStreamSource(stream); // Create a DynamicsCompressorNode for additional processing const compressor = audioContext.createDynamicsCompressor(); compressor.threshold.setValueAtTime(-50, audioContext.currentTime); // Example settings compressor.knee.setValueAtTime(40, audioContext.currentTime); compressor.ratio.setValueAtTime(12, audioContext.currentTime); compressor.attack.setValueAtTime(0, audioContext.currentTime); compressor.release.setValueAtTime(0.25, audioContext.currentTime); // Connect nodes source.connect(compressor); compressor.connect(audioContext.destination); return { audioContext, source, compressor }; }
Akhir sekali, kami menyepadukan persediaan pemprosesan audio kami dengan Web Speech API untuk melaksanakan pengecaman pertuturan.
async function startSpeechRecognition() { const stream = await getMicrophoneStream(); if (!stream) return; const { audioContext, source, compressor } = await setupAudioProcessing(stream); const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)(); recognition.continuous = true; recognition.interimResults = true; recognition.onresult = (event) => { for (let i = event.resultIndex; i < event.results.length; i++) { const transcript = event.results[i][0].transcript; console.log('Transcript:', transcript); } }; recognition.onerror = (event) => { console.error('Speech recognition error', event.error); }; recognition.start(); // Handle audio context resume if needed if (audioContext.state === 'suspended') { audioContext.resume(); } return recognition; } // Start the speech recognition process startSpeechRecognition();
Semoga anda mendapati ini berguna.
Selamat mengekod!
Tim.
Atas ialah kandungan terperinci Cara Mencegah Maklum Balas Pembesar Suara dalam Transkripsi Pertuturan Menggunakan API Audio Web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!