diff --git a/api/transcribe.php b/api/transcribe.php index 040805b..7d839b8 100644 --- a/api/transcribe.php +++ b/api/transcribe.php @@ -70,7 +70,9 @@ if ($engine === 'openai') { } elseif ($engine === 'azure') { $apiKey = trim((string)($_POST['azure_key'] ?? '')); - $region = preg_replace('/[^a-z0-9]/', '', strtolower(trim((string)($_POST['azure_region'] ?? 'norwayeast')))); + if ($apiKey === '') $apiKey = (string)(dbnToolsEnv('DBN_AZURE_SPEECH_KEY') ?? ''); + $region = preg_replace('/[^a-z0-9]/', '', strtolower(trim((string)($_POST['azure_region'] ?? '')))); + if ($region === '') $region = preg_replace('/[^a-z0-9]/', '', strtolower((string)(dbnToolsEnv('DBN_AZURE_SPEECH_REGION') ?? 'norwayeast'))); if (!$apiKey) { dbnToolsError('An Azure Speech API key is required for the Azure engine.', 400, 'missing_azure_key'); } diff --git a/assets/js/tools.js b/assets/js/tools.js index 9d42eb8..77077de 100644 --- a/assets/js/tools.js +++ b/assets/js/tools.js @@ -56,8 +56,10 @@ const TRANSCRIBE_I18N = { beamSize: 'Beam size', beamFastest: '(fastest)', beamBest: '(best)', + beamSizeHint: 'Controls search breadth — higher values improve accuracy but take longer. 5 is recommended for legal recordings.', vadFilter: 'VAD filter', vadFilterLabel: 'Remove silence', + vadFilterHint: 'Voice Activity Detection — skips silent passages before transcribing. Speeds up processing and prevents the model hallucinating on silence.', run: 'Run', running: 'Transcribing…', runningOther: 'Running…', @@ -120,8 +122,10 @@ const TRANSCRIBE_I18N = { beamSize: 'Beam size', beamFastest: '(raskest)', beamBest: '(best)', + beamSizeHint: 'Styrer søkebredde — høyere verdier gir bedre nøyaktighet men tar lengre tid. 5 anbefales for juridiske opptak.', vadFilter: 'VAD-filter', vadFilterLabel: 'Fjern stillhet', + vadFilterHint: 'Taleaktivitetsdeteksjon — hopper over stille partier før transkripsjon. Raskere behandling og forhindrer hallusinasjon på stillhet.', run: 'Kjør', running: 'Transkriberer…', runningOther: 'Kjører…', @@ -184,8 +188,10 @@ const TRANSCRIBE_I18N = { beamSize: 'Розмір пучка', beamFastest: '(найшвидший)', beamBest: '(найкращий)', + beamSizeHint: 'Ширина пошуку — більше значення підвищує точність, але займає більше часу. 5 рекомендовано для юридичних записів.', vadFilter: 'VAD-фільтр', vadFilterLabel: 'Видалити тишу', + vadFilterHint: 'Виявлення мовної активності — пропускає тихі ділянки перед транскрипцією. Прискорює обробку та запобігає галюцинаціям на тиші.', run: 'Запустити', running: 'Транскрибування…', runningOther: 'Виконання…', @@ -248,8 +254,10 @@ const TRANSCRIBE_I18N = { beamSize: 'Rozmiar wiązki', beamFastest: '(najszybszy)', beamBest: '(najlepszy)', + beamSizeHint: 'Kontroluje szerokość wyszukiwania — wyższe wartości poprawiają dokładność, ale wydłużają czas. 5 zalecane dla nagrań prawnych.', vadFilter: 'Filtr VAD', vadFilterLabel: 'Usuń ciszę', + vadFilterHint: 'Wykrywanie aktywności głosowej — pomija ciche fragmenty przed transkrypcją. Przyspiesza przetwarzanie i zapobiega halucynacjom na ciszy.', run: 'Uruchom', running: 'Transkrybowanie…', runningOther: 'Uruchamianie…', @@ -901,7 +909,7 @@ async function runTranscribe() { return; } } - if (engine === 'azure') { + if (engine === 'azure' && !window.DBN_AZURE_SPEECH_CONFIGURED) { const key = document.getElementById('azureKeyInput')?.value?.trim(); if (!key) { els.status.textContent = currentUiT('missingAzureKey'); @@ -1208,7 +1216,9 @@ function setupTranscribeControls() { radio.addEventListener('change', () => { const engine = currentTranscribeEngine(); document.getElementById('openaiKeyControl')?.classList.toggle('is-hidden', engine !== 'openai'); - document.getElementById('azureKeyControl')?.classList.toggle('is-hidden', engine !== 'azure'); + // Hide azure key row if server has a pre-configured key + const azureNeedsKey = engine === 'azure' && !window.DBN_AZURE_SPEECH_CONFIGURED; + document.getElementById('azureKeyControl')?.classList.toggle('is-hidden', !azureNeedsKey); document.getElementById('modelControl')?.classList.toggle('is-hidden', engine === 'openai' || engine === 'azure'); }); }); diff --git a/transcribe.php b/transcribe.php index 4d35b27..2e76584 100644 --- a/transcribe.php +++ b/transcribe.php @@ -5,7 +5,9 @@ $toolTitle = 'Transcribe audio'; $toolKind = 'Audio Transcription'; $toolBadge = 'Whisper / GPU'; require_once __DIR__ . '/includes/layout.php'; +$azureConfigured = !empty(dbnToolsEnv('DBN_AZURE_SPEECH_KEY')); ?> +