Noch eine Sache, die ich kürzlich herausfinden musste, um meine Assembly.ai-Transkriptions-Engine an ein lautes Frontend anzuschließen.
Der erste Schritt besteht darin, den Zugriff auf das Mikrofon mit aktivierter Echounterdrückung anzufordern. Diese Funktion ist in die meisten modernen Browser integriert und trägt dazu bei, das Feedback Ihrer Lautsprecher zu reduzieren.
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; } }
Als nächstes richten wir die Web-Audio-API ein, um den Audiostream zu verarbeiten. Dazu gehört das Erstellen eines AudioContext und das Verbinden verschiedener Knoten, einschließlich eines 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 }; }
Schließlich integrieren wir unser Audioverarbeitungs-Setup mit der Web Speech API, um eine Spracherkennung durchzuführen.
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();
Hoffentlich fanden Sie das nützlich.
Viel Spaß beim Codieren!
Tim.
Das obige ist der detaillierte Inhalt vonSo verhindern Sie Sprecher-Feedback bei der Sprachtranskription mithilfe der Web-Audio-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!