Bonjour à tous,
J'ai travaillé sur une extension de navigateur qui devrait transcrire en direct toute vidéo diffusée dans le navigateur à l'aide de l'API de reconnaissance vocale. Cependant, je rencontre un problème qui fait que cela ne fonctionne pas comme prévu : la transcription n'apparaît pas et je ne sais pas pourquoi.
Ce que j'ai fait jusqu'à présent :
Manifest.json : j'ai configuré les autorisations pour capturer l'audio et exécuter les scripts nécessaires.
Background.js : le script d'arrière-plan est responsable de la capture audio à l'aide de chrome.tabCapture.
ContentScript.js : J'utilise l'API Web Speech (SpeechRecognition) pour traiter l'audio capturé et le transcrire.
Popup.js : Le popup est censé afficher la transcription en direct.
J'ai testé l'extension sur les navigateurs Brave et Chrome, mais la transcription ne fonctionne toujours pas.
Fichiers clés :
Manifest.json
{ "manifest_version": 3, "name": "Live Transcription Extension", "version": "1.0", "description": "A browser extension for live transcription", "permissions": [ "audioCapture", "activeTab", "storage", "tabCapture", "microphone" ], "action": { "default_popup": "popup.html" }, "background": { "service_worker": "background.js" }, "content_scripts": [ { "matches": ["<all_urls>"], "js": ["contentScript.js"] } ], "host_permissions": ["<all_urls>"] }
background.js
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.action === "start_transcription") { chrome.tabCapture.capture({ audio: true, video: false }, (stream) => { if (chrome.runtime.lastError || !stream) { console.error("Error capturing audio: ", chrome.runtime.lastError); sendResponse({ error: "Failed to capture audio" }); return; } sendResponse({ stream }); }); return true; } });
ContentScript.js
const startSpeechRecognition = () => { const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; if (!SpeechRecognition) { console.error("Speech Recognition API not supported."); return; } const recognition = new SpeechRecognition(); recognition.continuous = true; recognition.interimResults = true; recognition.lang = "en-US"; recognition.onresult = (event) => { let finalTranscript = ''; for (let i = event.resultIndex; i < event.results.length; ++i) { if (event.results[i].isFinal) { finalTranscript += event.results[i][0].transcript; } } chrome.runtime.sendMessage({ action: 'transcribe', text: finalTranscript }); }; recognition.onerror = (event) => { console.error("Speech recognition error: ", event.error); }; recognition.start(); }; startSpeechRecognition();
Popup.js
chrome.runtime.onMessage.addListener((message) => { if (message.action === 'transcribe') { const transcriptionDiv = document.getElementById('transcription'); transcriptionDiv.innerText += ` ${message.text}`; } });
Popup.html
<!DOCTYPE html> <html> <head> <title>Live Transcription</title> </head> <body> <h1>Live Transcription</h1> <div id="transcription"> Transcription will appear here... </div> <script src="popup.js"></script> </body> </html>
Le problème :
L'extension se charge bien, mais rien ne se passe lorsque j'essaie de transcrire une vidéo.
Aucune transcription n'apparaît dans la fenêtre contextuelle et je ne vois aucune erreur évidente dans la console Chrome.
J'ai également essayé d'exécuter l'extension sur Brave et j'obtiens toujours les mêmes résultats.
Ce que j'ai essayé :
J'ai vérifié l'API SpeechRecognition sur le navigateur : elle semble être prise en charge.
Autorisations de microphone accordées à l'extension.
Confirmé que le script d'arrière-plan capture l'audio, mais il ne semble pas déclencher la transcription.
J'ai essayé de tester l'extension localement et en production, mais cela ne fait aucune différence.
Problèmes possibles :
Autorisations du microphone : y a-t-il un problème dans la façon dont je demande des autorisations pour la capture audio ?
API SpeechRecognition : pourrait-il y avoir des problèmes de compatibilité avec le navigateur, ou quelque chose bloque-t-il la reconnaissance vocale ?
Gestion de la transcription : je ne sais pas si l'événement onresult dans le processus SpeechRecognition se déclenche correctement ou si le message n'arrive pas à la fenêtre contextuelle.
Toute aide ou conseil serait grandement apprécié ! Je suis bloqué là-dessus depuis un bon moment et j'adorerais que cela fonctionne.
Merci d'avance !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!