diff --git a/Audio-Transcription-Firefox/content.js b/Audio-Transcription-Firefox/content.js index eb8a32a..61a99fa 100644 --- a/Audio-Transcription-Firefox/content.js +++ b/Audio-Transcription-Firefox/content.js @@ -38,10 +38,16 @@ function resampleTo16kHZ(audioData, origSampleRate = 44100) { return resampledData; } -function startRecording(host, port) { - socket = new WebSocket(`ws://${host}:${port}/`); +function startRecording(data) { + socket = new WebSocket(`ws://${data.host}:${data.port}/`); socket.onopen = function(e) { - socket.send("handshake"); + socket.send( + JSON.stringify({ + multilingual: data.useMultilingual, + language: data.language, + task: data.task + }) + ); }; let isServerReady = false; @@ -209,7 +215,7 @@ browser.runtime.onMessage.addListener((request, sender, sendResponse) => { const { action, data } = request; if (action === "startCapture") { isCapturing = true; - startRecording(data.host, data.port); + startRecording(data); } else if (action === "stopCapture") { isCapturing = false; diff --git a/Audio-Transcription-Firefox/popup.html b/Audio-Transcription-Firefox/popup.html index 3766564..7393898 100644 --- a/Audio-Transcription-Firefox/popup.html +++ b/Audio-Transcription-Firefox/popup.html @@ -15,5 +15,121 @@ +
+ + +
+ + \ No newline at end of file diff --git a/Audio-Transcription-Firefox/popup.js b/Audio-Transcription-Firefox/popup.js index 1ef684d..905f3d3 100644 --- a/Audio-Transcription-Firefox/popup.js +++ b/Audio-Transcription-Firefox/popup.js @@ -1,11 +1,17 @@ document.addEventListener("DOMContentLoaded", function() { - var startButton = document.getElementById("startCapture"); - var stopButton = document.getElementById("stopCapture"); + const startButton = document.getElementById("startCapture"); + 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; + browser.storage.local.get("capturingState") .then(function(result) { - var capturingState = result.capturingState; + const capturingState = result.capturingState; if (capturingState && capturingState.isCapturing) { toggleCaptureButtons(true); } else { @@ -26,6 +32,28 @@ document.addEventListener("DOMContentLoaded", function() { } }); + browser.storage.local.get("useMultilingualModelState", ({ useMultilingualModelState }) => { + if (useMultilingualModelState !== undefined) { + useMultilingualCheckbox.checked = useMultilingualModelState; + languageDropdown.disabled = !useMultilingualModelState; + taskDropdown.disabled = !useMultilingualModelState; + } + }); + + browser.storage.local.get("selectedLanguage", ({ selectedLanguage: storedLanguage }) => { + if (storedLanguage !== undefined) { + languageDropdown.value = storedLanguage; + selectedLanguage = storedLanguage; + } + }); + + browser.storage.local.get("selectedTask", ({ selectedTask: storedTask }) => { + if (storedTask !== undefined) { + taskDropdown.value = storedTask; + selectedTask = storedTask; + } + }); + startButton.addEventListener("click", function() { let host = "localhost"; let port = "9090"; @@ -39,7 +67,17 @@ document.addEventListener("DOMContentLoaded", function() { browser.tabs.query({ active: true, currentWindow: true }) .then(function(tabs) { browser.tabs.sendMessage( - tabs[0].id, { action: "startCapture", data: {host, port} }); + tabs[0].id, + { + action: "startCapture", + data: { + host: host, + port: port, + useMultilingual: useMultilingualCheckbox.checked, + language: selectedLanguage, + task: selectedTask + } + }); toggleCaptureButtons(true); browser.storage.local.set({ capturingState: { isCapturing: true } }) .catch(function(error) { @@ -85,4 +123,26 @@ document.addEventListener("DOMContentLoaded", function() { const useServerState = useServerCheckbox.checked; browser.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; + } + browser.storage.local.set({ useMultilingualModelState }); + }); + + languageDropdown.addEventListener('change', function() { + selectedLanguage = languageDropdown.value; + browser.storage.local.set({ selectedLanguage }); + }); + + taskDropdown.addEventListener('change', function() { + selectedTask = taskDropdown.value; + browser.storage.local.set({ selectedTask }); + }); }); diff --git a/Audio-Transcription-Firefox/style.css b/Audio-Transcription-Firefox/style.css index f8bba91..6e743dc 100644 --- a/Audio-Transcription-Firefox/style.css +++ b/Audio-Transcription-Firefox/style.css @@ -105,3 +105,7 @@ label { .checkbox-container { padding: 10px; } + +.dropdown-container { + padding: 10px; +} \ No newline at end of file