皆さん、こんにちは
私は、音声認識 API を使用して、ブラウザーで再生されているビデオをライブ文字起こしするブラウザー拡張機能の開発に取り組んでいます。しかし、期待どおりに動作しないという問題に遭遇しています。文字起こしが表示されず、その理由がわかりません。
これまでにやったこと:
Manifest.json: 音声をキャプチャし、必要なスクリプトを実行するための権限を設定しました。
Background.js: バックグラウンド スクリプトは、chrome.tabCapture を使用してオーディオをキャプチャします。
ContentScript.js: Web Speech API (SpeechRecognition) を使用して、キャプチャした音声を処理し、文字に起こします。
Popup.js: ポップアップにはライブ文字起こしが表示されます。
Brave ブラウザと Chrome ブラウザの両方で拡張機能をテストしましたが、文字起こしはまだ機能しません。
キーファイル:
マニフェスト.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}`; } });
ポップアップ.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: ブラウザーとの互換性の問題がある可能性がありますか、それとも音声認識をブロックしているものがありますか?
文字起こしの処理: SpeechRecognition プロセスの onresult イベントが正しく起動しているのか、それともメッセージがポップアップに表示されていないのかがわかりません。
助けやアドバイスをいただければ幸いです。私はかなり長い間これに行き詰まっており、これをうまく機能させたいと思っています。
よろしくお願いします!
以上がライブ文字起こしブラウザ拡張機能についてサポートが必要 – 動作しないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。