"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > वेब ऑडियो एपीआई का उपयोग करके भाषण ट्रांसक्रिप्शन में स्पीकर फीडबैक को कैसे रोकें

वेब ऑडियो एपीआई का उपयोग करके भाषण ट्रांसक्रिप्शन में स्पीकर फीडबैक को कैसे रोकें

2024-08-21 को प्रकाशित
ब्राउज़ करें:475

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

एक और चीज जो मुझे हाल ही में समझने की जरूरत थी, वह थी अपने असेंबली.एआई ट्रांस्रिप्शन इंजन को एक ऐसे फ्रंटएंड से जोड़ना जो तेज आवाज में था।

यहाँ मैंने कोशिश की है:

  1. इको कैंसिलेशन के साथ माइक्रोफोन एक्सेस का अनुरोध करें।
  2. वेब ऑडियो एपीआई का उपयोग करके एक ऑडियो प्रोसेसिंग श्रृंखला स्थापित करें।
  3. इस सेटअप को वाक् पहचान के साथ एकीकृत करें।
  4. अतिरिक्त ऑडियो प्रोसेसिंग के लिए DynamicsCompressorNode का उपयोग करें।

चरण 1: इको कैंसिलेशन के साथ माइक्रोफ़ोन एक्सेस का अनुरोध करें

पहला कदम इको कैंसिलेशन सक्षम होने पर माइक्रोफ़ोन तक पहुंच का अनुरोध करना है। यह सुविधा अधिकांश आधुनिक ब्राउज़रों में बनाई गई है और आपके स्पीकर से फीडबैक को कम करने में मदद करती है।

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

स्पष्टीकरण

  • बाधाएं: हम इको रद्दीकरण, शोर दमन और ऑटो-गेन नियंत्रण को सक्षम करने के लिए ऑडियो बाधाएं निर्दिष्ट करते हैं।
  • त्रुटि प्रबंधन: यदि उपयोगकर्ता पहुंच से इनकार करता है या कोई अन्य समस्या है, तो हम त्रुटि पकड़ते हैं और लॉग इन करते हैं।

चरण 2: वेब ऑडियो एपीआई नोड्स सेट करें

इसके बाद, हम ऑडियो स्ट्रीम को संसाधित करने के लिए वेब ऑडियो एपीआई सेट करते हैं। इसमें एक AudioContext बनाना और 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 };
}

स्पष्टीकरण

  • ऑडियोकॉन्टेक्स्ट: ऑडियो वातावरण का प्रतिनिधित्व करता है।
  • मीडियास्ट्रीमसोर्स: माइक्रोफ़ोन स्ट्रीम को ऑडियो संदर्भ से जोड़ता है।
  • DynamicsCompressorNode: ऑडियो सिग्नल की गतिशील रेंज को कम करता है, पृष्ठभूमि शोर और प्रतिक्रिया को प्रबंधित करने में मदद करता है।

चरण 3: वाक् पहचान के साथ एकीकृत करें

आखिरकार, हम वाक् पहचान करने के लिए अपने ऑडियो प्रोसेसिंग सेटअप को वेब स्पीच एपीआई के साथ एकीकृत करते हैं।

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

स्पष्टीकरण

  • भाषण पहचान सेटअप: हम निरंतर और अंतरिम भाषण पहचान के लिए वेब स्पीच एपीआई स्थापित करते हैं।
  • इवेंट हैंडलिंग: हम पहचान परिणामों और त्रुटियों को संसाधित करने के लिए ऑनरिज़ल्ट और ऑनररर इवेंट को संभालते हैं।
  • पहचान प्रारंभ करें: हम वाक् पहचान प्रक्रिया शुरू करते हैं और सुनिश्चित करते हैं कि ऑडियो संदर्भ निलंबित न हो।

उम्मीद है आपको यह उपयोगी लगा होगा।

हैप्पी कोडिंग!

टिम.

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/fosteman/how-to-prevent-speaker-feedback-in-speech-transscription-using-web-audio-api-2da4?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3