"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment empêcher les commentaires du locuteur dans la transcription vocale à l'aide de l'API Web Audio

Comment empêcher les commentaires du locuteur dans la transcription vocale à l'aide de l'API Web Audio

Publié le 2024-08-21
Parcourir:565

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

Encore une autre chose que je devais comprendre récemment pour connecter mon moteur de transcription Assembly.ai à une interface bruyante.

Voici ce que j'ai essayé :

  1. Demander l'accès au microphone avec annulation d'écho.
  2. Configurez une chaîne de traitement audio à l'aide de l'API Web Audio.
  3. Intégrez cette configuration à la reconnaissance vocale.
  4. Utilisez DynamicsCompressorNode pour un traitement audio supplémentaire.

Étape 1 : demander l'accès au microphone avec annulation d'écho

La première étape consiste à demander l'accès au microphone avec l'annulation d'écho activée. Cette fonctionnalité est intégrée à la plupart des navigateurs modernes et permet de réduire les retours de vos haut-parleurs.

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

Explication

  • Contraintes : nous spécifions des contraintes audio pour activer l'annulation de l'écho, la suppression du bruit et le contrôle automatique du gain.
  • Gestion des erreurs : si l'utilisateur refuse l'accès ou s'il y a un autre problème, nous détectons et enregistrons l'erreur.

Étape 2 : configurer les nœuds de l'API Web Audio

Ensuite, nous configurons l'API Web Audio pour traiter le flux audio. Cela implique de créer un AudioContext et de connecter divers nœuds, y compris 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 };
}

Explication

  • AudioContext : représente l'environnement audio.
  • MediaStreamSource : connecte le flux du microphone au contexte audio.
  • DynamicsCompressorNode : réduit la plage dynamique du signal audio, aidant ainsi à gérer le bruit de fond et le feedback.

Étape 3 : Intégrer la reconnaissance vocale

Enfin, nous intégrons notre configuration de traitement audio à l'API Web Speech pour effectuer la reconnaissance vocale.

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

Explication

  • Configuration de la reconnaissance vocale : nous avons configuré l'API Web Speech pour une reconnaissance vocale continue et intermédiaire.
  • Gestion des événements : nous gérons les événements onresult et onerror pour traiter les résultats de reconnaissance et les erreurs.
  • Démarrer la reconnaissance : nous démarrons le processus de reconnaissance vocale et veillons à ce que le contexte audio ne soit pas suspendu.

J'espère que vous avez trouvé cela utile.

Bon codage !

Tim.

Déclaration de sortie Cet article est reproduit à l'adresse : https://dev.to/fosteman/how-to-prevent-speaker-feedback-in-speech-transcription-using-web-audio-api-2da4?1. En cas de violation, veuillez contacter study_golang@163 .comdelete
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3