هناك شيء آخر كنت بحاجة إلى اكتشافه مؤخرًا لتوصيل محرك النسخ Assembly.ai الخاص بي إلى الواجهة الأمامية التي كانت عالية الصوت.
الخطوة الأولى هي طلب الوصول إلى الميكروفون مع تمكين إلغاء الصدى. هذه الميزة مدمجة في معظم المتصفحات الحديثة وتساعد في تقليل التعليقات الواردة من مكبرات الصوت.
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; } }
بعد ذلك، قمنا بإعداد Web Audio API لمعالجة البث الصوتي. يتضمن ذلك إنشاء سياق صوتي وتوصيل العقد المختلفة، بما في ذلك 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 }; }
أخيرًا، قمنا بدمج إعداد معالجة الصوت لدينا مع Web Speech API لإجراء التعرف على الكلام.
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();
نأمل أن تجد هذا مفيدًا.
تعليمات سعيدة!
تيم.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3