diff --git a/Audio-Transcription-Chrome/background.js b/Audio-Transcription-Chrome/background.js index 09de7dc..e21b04f 100644 --- a/Audio-Transcription-Chrome/background.js +++ b/Audio-Transcription-Chrome/background.js @@ -150,7 +150,14 @@ async function startCapture(options) { await sendMessageToTab(optionTab.id, { type: "start_capture", - data: { currentTabId: currentTab.id, host: options.host, port: options.port }, + data: { + currentTabId: currentTab.id, + host: options.host, + port: options.port, + multilingual: options.useMultilingual, + language: options.language, + task: options.task + }, }); } else { console.log("No Audio"); diff --git a/Audio-Transcription-Chrome/options.js b/Audio-Transcription-Chrome/options.js index ad7dfb1..ac2862c 100644 --- a/Audio-Transcription-Chrome/options.js +++ b/Audio-Transcription-Chrome/options.js @@ -79,11 +79,16 @@ async function startRecord(option) { stream.oninactive = () => { window.close(); }; - const socket = new WebSocket(`ws://${option.host}:${option.port}/`); let isServerReady = false; socket.onopen = function(e) { - socket.send("handshake"); + socket.send( + JSON.stringify({ + multilingual: option.multilingual, + language: option.language, + task: option.task + }) + ); }; socket.onmessage = async (event) => { diff --git a/Audio-Transcription-Chrome/popup.html b/Audio-Transcription-Chrome/popup.html index 5777929..4f2b6ec 100644 --- a/Audio-Transcription-Chrome/popup.html +++ b/Audio-Transcription-Chrome/popup.html @@ -15,5 +15,121 @@ +
+ + +
+ + - \ No newline at end of file + diff --git a/Audio-Transcription-Chrome/popup.js b/Audio-Transcription-Chrome/popup.js index 20b061c..87507a0 100644 --- a/Audio-Transcription-Chrome/popup.js +++ b/Audio-Transcription-Chrome/popup.js @@ -4,6 +4,11 @@ document.addEventListener("DOMContentLoaded", function () { const stopButton = document.getElementById("stopCapture"); const useServerCheckbox = document.getElementById("useServerCheckbox"); + const useMultilingualCheckbox = document.getElementById('useMultilingualCheckbox'); + const languageDropdown = document.getElementById('languageDropdown'); + const taskDropdown = document.getElementById('taskDropdown'); + let selectedLanguage = undefined; + let selectedTask = taskDropdown.value; // Add click event listeners to the buttons startButton.addEventListener("click", startCapture); @@ -25,6 +30,28 @@ document.addEventListener("DOMContentLoaded", function () { } }); + chrome.storage.local.get("useMultilingualModelState", ({ useMultilingualModelState }) => { + if (useMultilingualModelState !== undefined) { + useMultilingualCheckbox.checked = useMultilingualModelState; + languageDropdown.disabled = !useMultilingualModelState; + taskDropdown.disabled = !useMultilingualModelState; + } + }); + + chrome.storage.local.get("selectedLanguage", ({ selectedLanguage: storedLanguage }) => { + if (storedLanguage !== undefined) { + languageDropdown.value = storedLanguage; + selectedLanguage = storedLanguage; + } + }); + + chrome.storage.local.get("selectedTask", ({ selectedTask: storedTask }) => { + if (storedTask !== undefined) { + taskDropdown.value = storedTask; + selectedTask = storedTask; + } + }); + // Function to handle the start capture button click event async function startCapture() { // Ignore click if the button is disabled @@ -49,12 +76,17 @@ document.addEventListener("DOMContentLoaded", function () { action: "startCapture", tabId: currentTab.id, host: host, - port: port }, () => { - // Update capturing state in storage and toggle the buttons - chrome.storage.local.set({ capturingState: { isCapturing: true } }, () => { - toggleCaptureButtons(true); - }); - }); + port: port, + useMultilingual: useMultilingualCheckbox.checked, + language: selectedLanguage, + task: selectedTask + }, () => { + // Update capturing state in storage and toggle the buttons + chrome.storage.local.set({ capturingState: { isCapturing: true } }, () => { + toggleCaptureButtons(true); + }); + } + ); } // Function to handle the stop capture button click event @@ -96,4 +128,26 @@ document.addEventListener("DOMContentLoaded", function () { const useServerState = useServerCheckbox.checked; chrome.storage.local.set({ useServerState }); }); + + useMultilingualCheckbox.addEventListener('change', function() { + const useMultilingualModelState = useMultilingualCheckbox.checked; + if (useMultilingualModelState) { + languageDropdown.disabled = false; + taskDropdown.disabled = false; + } else { + languageDropdown.disabled = true; + taskDropdown.disabled = true; + } + chrome.storage.local.set({ useMultilingualModelState }); + }); + + languageDropdown.addEventListener('change', function() { + selectedLanguage = languageDropdown.value; + chrome.storage.local.set({ selectedLanguage }); + }); + + taskDropdown.addEventListener('change', function() { + selectedTask = taskDropdown.value; + chrome.storage.local.set({ selectedTask }); + }); }); diff --git a/Audio-Transcription-Chrome/style.css b/Audio-Transcription-Chrome/style.css index f8bba91..dc6f27b 100644 --- a/Audio-Transcription-Chrome/style.css +++ b/Audio-Transcription-Chrome/style.css @@ -105,3 +105,7 @@ label { .checkbox-container { padding: 10px; } + +.dropdown-container { + padding: 10px; +}