首頁 > web前端 > js教程 > 主體

需要有關我的即時轉錄瀏覽器擴充功能的幫助 – 不工作

Patricia Arquette
發布: 2024-10-20 16:39:02
原創
893 人瀏覽過

Need Help with My Live Transcription Browser Extension – Not Working

大家好,

我一直在開發一個瀏覽器擴展,它應該使用語音識別 API 即時轉錄瀏覽器中播放的任何視訊。然而,我遇到了一個問題,它沒有按預期工作——轉錄沒有出現,我不確定為什麼。

到目前為止我所做的:
Manifest.json:我已經設定了捕獲音訊並運行必要腳本的權限。
Background.js:後台腳本負責使用 chrome.tabCapture 擷取音訊。
ContentScript.js:我正在使用 Web Speech API (SpeechRecognition) 來處理捕獲的音訊並對其進行轉錄。
Popup.js:彈出視窗應該會顯示即時轉錄。
我已經在 Brave 和 Chrome 瀏覽器上測試了該擴展程序,但轉錄仍然無法正常工作。
關鍵文件:
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>

登入後複製

問題:
擴充功能加載正常,但當我嘗試轉錄影片時沒有任何反應。
彈出視窗中沒有出現任何轉錄,而且我在 Chrome 控制台中沒有看到任何明顯的錯誤。
我也嘗試在 Brave 上運行該擴展,但仍然得到相同的結果。
我嘗試過的:
在瀏覽器上檢查了 SpeechRecognition API——似乎是支援的。
已向擴充功能授予麥克風權限。
確認後台腳本捕獲了音頻,但似乎沒有觸發轉錄。
嘗試在本地和生產環境中測試擴展,但沒有什麼區別。
可能的問題:
麥克風權限:我請求音訊擷取權限的方式有問題嗎?
SpeechRecognition API:瀏覽器是否有相容性問題,或者是否有東西阻止了語音辨識?
轉錄處理:我不確定語音辨識過程中的 onresult 事件是否正確觸發,或者訊息是否未到達彈出視窗。
任何幫助或建議將不勝感激!我在這個問題上堅持了很長一段時間,並且很想讓它發揮作用。

提前致謝!

以上是需要有關我的即時轉錄瀏覽器擴充功能的幫助 – 不工作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!