From 86adff9f07c6353dc604a5cb3b4b351c16aff318 Mon Sep 17 00:00:00 2001 From: Lucio Zambon <lucio.zambon@elettra.eu> Date: Mon, 17 Jun 2024 00:13:46 +0000 Subject: [PATCH] Update talk.php --- speech/talk.php | 67 +++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/speech/talk.php b/speech/talk.php index bf890a0..2a45335 100644 --- a/speech/talk.php +++ b/speech/talk.php @@ -1,6 +1,7 @@ <?php + $local = isset($_REQUEST['cdn'])? false: true; // true = use only locally installed modules, false = use cdn $hs = ['192.168.231.21'=>'do', '192.168.231.22'=>'re', '192.168.231.23'=>'mi', '192.168.231.24'=>'fa', '192.168.231.25'=>'sol', '192.168.231.26'=>'la', '192.168.231.27'=>'si']; - $lang = empty($_REQUEST['lang'])? 'en': substr($_REQUEST['lang'], 0, 2); + $lang = empty($_REQUEST['lang'])? 'it': substr($_REQUEST['lang'], 0, 2); $host = isset($hs[$_SERVER['REMOTE_ADDR']])? $hs[$_SERVER['REMOTE_ADDR']]: $_SERVER['REMOTE_ADDR']; if (!empty($_REQUEST['init'])) { $t = $_REQUEST['init']-0; @@ -74,7 +75,17 @@ die(json_encode($data)); } if (isset($_REQUEST['search'])) { - if (!empty($_REQUEST['search'])) {file_put_contents("./msg", $_REQUEST['search']); die("{$_REQUEST['search']} has been searched");} + require_once("../../conf.php"); + require_once("../../lib/sql_interface.php"); + $sql = open_db(); + $query = "SELECT speech, replace FROM speechreplace WHERE lang=$1"; + $data = $sql->sql_secure($query, array($lang)); + $replace = []; + foreach ($data as $d) { + $replace[$d['speech']] = $d['replace']; + } + $search = strtr($_REQUEST['search'], $replace); + if (!empty($search)) {file_put_contents("./msg", $search); die("$search has been searched");} } if (isset($_REQUEST['read'])) { set_time_limit(0); @@ -146,22 +157,24 @@ print_r($xml); die('</pre>'); } - ?> + <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>CS Talk</title> - <script src="../../lib/jquery/jquery.min.js"></script> - <link rel="stylesheet" href="https://puma-01.elettra.eu/lib/bootstrap4/bootstrap.min.css"> - <script src="https://puma-01.elettra.eu/lib/bootstrap4/bootstrap.bundle.min.js"></script> + <link rel="stylesheet" href="<?php echo ($local? '../../lib/jquery/jquery-ui.min.css': 'https://code.jquery.com/ui/1.13.3/themes/base/jquery-ui.css');?>"> + <script src="<?php echo ($local? '../../lib/jquery/jquery.min.js': 'https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js');?>" type="text/javascript"></script> + <script src="<?php echo ($local? '../../lib/jquery/jquery-ui.min.js': 'https://cdn.jsdelivr.net/npm/jquery-ui@1.13.3/dist/jquery-ui.min.js');?>" type="text/javascript"></script> + <link rel="stylesheet" href="../../lib/bootstrap4/bootstrap.min.css"> + <script src="../../lib/bootstrap4/bootstrap.bundle.min.js"></script> </head> <body onLoad='myload()'> + <div id='transcriptDiv' style='display:none;'></div> <div style="max-width: 500px; text-align: center"> <audio id='speechText' onended='speakagain();' onerror='showLog("audio err: "+event.error)'></audio> - <table id ='openTable' class="table table-hover"></table> <script> window.openData = []; const t0 = + new Date(); @@ -239,6 +252,7 @@ <span style='color: darkgreen; font-weight: bold;' onClick='commandlistinfo()'> ? </span> </div> <span style='color: darkblue; font-weight: bold;' id='miclabel'>comandi vocali </span> + <table id ='openTable' class="table table-hover"></table> <pre id='log'></pre> <script> if (document.location.search.indexOf('debug')==-1) $('#log').hide(); @@ -292,18 +306,21 @@ } recognition.onend = function(event) { showLog('.'); + // document.getElementById('miclabel').style.display = 'none'; document.getElementById('micna').style.display = 'none'; document.getElementById('micstart').style.display = 'none'; document.getElementById('micstop').style.display = 'inline'; if (keepAlive && aliveTimer==-1) aliveTimer = setTimeout(startRec, 200); } recognition.onstart = function(event) { + if (document.location.search.indexOf('debug')==-1) $('#log').hide(); if (firstRun) { firstRun = false; recognition.stop(); return; } showLog('-'); + document.getElementById('miclabel').style.display = 'none'; document.getElementById('micna').style.display = 'none'; document.getElementById('micstart').style.display = 'inline'; document.getElementById('micstop').style.display = 'none'; @@ -338,8 +355,6 @@ for (let i=0; i<3; i++) { $('#openTable').html($('#openTable').html()+'<tr><td>'+(i+1)+'</td><td>'+rlocale[i].title+'</td><td>'+rlocale[i].description+'</td><td>'+rlocale[i].exename+'</td></tr>'); window.openData.push(rlocale[i]); - // showLog(rlocale[i]); - // showLog(window.openData); } } window.openData.push(txt); @@ -378,8 +393,14 @@ } if (locale[lang].search.indexOf(tok)>-1) { mode = 'search'; - txt = txt.replace(tok+' ', '').replace('ing', 'inj').replace('inch', 'inj').split(' ').join('_').split('.').join('_').toUpperCase(); - const snd = './talk.php?search='+txt+'&token='+document.location.search.split('?d=')[1].split('&')[0]; + names = ['pippo', 'pluto', 'goofy', 'scrooge']; + // txt = txt.replace(tok+' ', '').replace('ing', 'inj').replace('inch', 'inj').split(' ').join('_').split('.').join('_').toUpperCase(); + txt = txt.replace(tok+' ', '').split(' ').join('_').split('.').join('_').toUpperCase(); + const token = document.location.search.indexOf('?d=')>-1? '&token='+document.location.search.split('?d=')[1].split('&')[0]; + const snd = './talk.php?search='+txt+token+"&lang="+lang; + $('#openTable').html('<tr><td colspan="5">' + locale[lang].searchCorrect + '</td></tr>'); + $('#openTable').html('<tr><td>'+txt+'</td><td><input id="sname"></input></td><td><button onClick="alert(5)">'+locale[lang].searchSubmit+'</button></td></tr>'); + $(function() {$(".sname").autocomplete({source: names, select: function(event, ui) {findComponent(ui.item.value); return false;}});}); showLog(snd); fetch(snd).then((response) => {return response.json();}).then((rlocale) => {showLog(rlocale); alert(rlocale);}); mode = ''; @@ -425,30 +446,6 @@ // document.getElementById('transcriptDiv').innerHTML = finalTranscript + '<i style=\"color:#00d;\">' + interimTranscript + '</i>'; document.getElementById('transcriptDiv').innerHTML = '<i style=\"color:#00d;\">' + finalTranscript + '</i>'; } - /*recognition.onresult = (event) => { - let interimTranscript = ''; - for (let i = event.resultIndex, len = event.results.length; i < len; i++) { - let transcript = event.results[i][0].transcript; - const dt = new Time() - t0; - if (event.results[i][0].transcript.length) showLog(dt+' i: '+i+', transcripts: '+event.results[i][0].transcript+(event.results[i][1]? ', transcripts: '+event.results[i][1].transcript:'')+'\n'); - if (event.results[i].isFinal) { - quick_add(transcript.toLowerCase()); - var meno = transcript.toLowerCase().indexOf('meno '); - console.log(meno, transcript.substring(meno+5,meno+6), transcript.substring(meno+5,meno+6) % 1); - if (meno>-1 && transcript.substring(meno+5,meno+6) % 1 === 0) { - console.log('replace'); - transcript = transcript.replace(transcript.substring(meno,meno+5), '-'); - } - // finalTranscript += transcript+'<br>\\n'; - if (transcript.length>0) finalTranscript = transcript; - } else { - interimTranscript += transcript+'<br>\\n'; - } - document.getElementById('transcriptDiv').innerHTML = '<i style=\"color:#ddd;\">' + interimTranscript + '</i>'; - } - // document.getElementById('transcriptDiv').innerHTML = finalTranscript + '<i style=\"color:#00d;\">' + interimTranscript + '</i>'; - document.getElementById('transcriptDiv').innerHTML = '<i style=\"color:#00d;\">' + finalTranscript + '</i>'; - }*/ showLog('start'+'\n'); recognition.start(); </script> -- GitLab