"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo evitar comentarios del orador en la transcripción de voz utilizando la API de audio web

Cómo evitar comentarios del orador en la transcripción de voz utilizando la API de audio web

Publicado el 2024-08-21
Navegar:720

How to Prevent Speaker Feedback in Speech Transcription Using Web Audio API

Otra cosa más que necesitaba descubrir recientemente para conectar mi motor de transcripción Assembly.ai a una interfaz que fuera ruidosa.

Esto es lo que probé:

  1. Solicitar acceso al micrófono con cancelación de eco.
  2. Configura una cadena de procesamiento de audio utilizando Web Audio API.
  3. Integre esta configuración con reconocimiento de voz.
  4. Utilice DynamicsCompressorNode para procesamiento de audio adicional.

Paso 1: Solicite acceso al micrófono con cancelación de eco

El primer paso es solicitar acceso al micrófono con la cancelación de eco habilitada. Esta función está integrada en la mayoría de los navegadores modernos y ayuda a reducir la respuesta de los parlantes.

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;
    }
}

Explicación

  • Restricciones: Especificamos restricciones de audio para permitir la cancelación de eco, la supresión de ruido y el control de ganancia automática.
  • Manejo de errores: si el usuario niega el acceso o si hay algún otro problema, detectamos y registramos el error.

Paso 2: configurar los nodos API de audio web

A continuación, configuramos la API de Web Audio para procesar la transmisión de audio. Esto implica crear un AudioContext y conectar varios nodos, incluido un 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 };
}

Explicación

  • AudioContext: Representa el entorno de audio.
  • MediaStreamSource: conecta la transmisión del micrófono al contexto de audio.
  • DynamicsCompressorNode: Reduce el rango dinámico de la señal de audio, lo que ayuda a gestionar el ruido de fondo y la retroalimentación.

Paso 3: integrar con el reconocimiento de voz

Finalmente, integramos nuestra configuración de procesamiento de audio con Web Speech API para realizar el reconocimiento de voz.

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  {
        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();

Explicación

  • Configuración de reconocimiento de voz: Configuramos la API de voz web para el reconocimiento de voz continuo e intermedio.
  • Manejo de eventos: Manejamos los eventos onresult y onerror para procesar los resultados y errores del reconocimiento.
  • Iniciar reconocimiento: Iniciamos el proceso de reconocimiento de voz y nos aseguramos de que el contexto de audio no se suspenda.

Esperamos que esto te haya resultado útil.

¡Feliz codificación!

Tiempo.

Declaración de liberación Este artículo se reproduce en: https://dev.to/fosteman/how-to-prevent-speaker-feedback-in-speech-transcription-using-web-audio-api-2da4?1 Si hay alguna infracción, por favor contacto Study_golang@163 .comeliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3