Google Voice Assistant

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
BigSandy
Příspěvky: 197
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Google Voice Assistant

Příspěvek od BigSandy » 24 srp 2020, 09:48

A podělil by ses o tu jednoduchou web stránku ;)
Ja našel toto.
https://groups.google.com/g/mitappinven ... AwAJ?pli=1

martinius96
Příspěvky: 542
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Google Voice Assistant

Příspěvek od martinius96 » 24 srp 2020, 11:07

Používam to tiež podobne ako kolega, technológia Webkit, web musí ísť pod HTTPS, inak Chrome nedovolí nahrávať hlas, respektíve spustiť mikrofón z bezpečnostných dôvodov. Funguje to iba s Google Chrome. Je to vo viacerých jazykových mutáciách (SK, CS, EN, RU), ktoré následne aj vkladám do niektorých projektov.
Môžeš to vyskúšať na: https://arduino.php5.sk/PHP_cs/
Pri zobrazení zdrojového kódu stránky môžeš vidieť javascript, ktorý celé nahrávanie hlasu po kliknutí na mikrofón spustí. Je to funkcia startDictation();
A čo sa týka post requestu, ktorý sa tam spúšťa na ajax.php súbor, vyzerá cca takto (ja to ukladám do databázy), príklad pre uloženie do .txt súboru, ktorý následne mikrokontróler prečíta GET requestom a môže urobiť akciu.

Kód: Vybrat vše

<?php 
   $preklad = $_POST['preklad'];
   $preklad = htmlspecialchars($preklad);
     $preklad = trim( $preklad );
     if($preklad == ""){
    echo "Prázdne pole nezapíšu :-)!";
    exit();
	
  }elseif(strlen($preklad) > 50){
    echo "Příliš dlouhé slovo!!";
	 exit();
  }else{
    //Bolo by vhodné previesť celý text na malé znaky, čo by zefektívnilo kód a znížilo počet OR 
            if ($preklad=="Zapni" || $preklad=="Zapnout" || $preklad=="zapni" || $preklad=="zapnout"){
     
      file_put_contents("preklady.txt", 'Zapni');
     }
     else if ($preklad=="Vypni" || $preklad=="Vypnout" || $preklad=="vypni" || $preklad=="vypnout"){
              
      file_put_contents("preklady.txt", 'Vypni');
     }
     }
?>
To rozpoznanie reči funguje fajn, aj na tvary slov, treba ich však vyslovovať zreteľne.
Hodí sa to do rôznych projektov. Možno z toho niečo využiješ aj pre tvoj projekt.
Obrázek

KamilV
Příspěvky: 429
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Google Voice Assistant

Příspěvek od KamilV » 24 srp 2020, 18:34

Kód: Vybrat vše

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <script src="https://code.responsivevoice.org/responsivevoice.js?key=*****"></script>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
  </head>
<body>

<script type="text/javascript">
var recognition = new webkitSpeechRecognition();    
    function voice() {
        if (window.hasOwnProperty('webkitSpeechRecognition')) {

            var result = '';
            recognition.continuous = true;
            recognition.interimResults = false;
            recognition.lang = "cs-CZ";
            recognition.start();
            recognition.onresult = function(e) {
                result = e.results[0][0].transcript;
                $('#out').text(result);

                if (result.toLowerCase().trim().substring(0, 5) == "zapni" || 
                    result.toLowerCase().trim().substring(0, 5) == "vypni" || 
                    result.toLowerCase().trim().substring(0, 5) == "kolik" || 
                    result.toLowerCase().trim().substring(0, 4) == "jaký" || 
                    result.toLowerCase().trim().substring(0, 8) == "upozorni" || 
                    result.toLowerCase().trim().substring(0, 6) == "nastav") {
                    $.post(
                        "ajax.php",
                        { voice: result }
                    );
                }

            };
            recognition.onerror = function(e) {
                recognition.stop();
                recognition.start();
            }
            recognition.onend = function() {
                recognition.start();
            };
        }
    }

    $( document ).ready(function() {
        voice();
    });
</script>
<div id="out"></div>
</body>
</html>
Ajaxově zapisuju (skriptem ajax.php) jen tehdy, když slovní pokyn začíná nějakým klíčovým slovem (zapni, vypni, kolik, jaký...)
Ta podmínka by se dala vyhodit a zahazovat to až v ajax.php, já jsem ale nechtěl dělat zbytečné requesty....

BigSandy
Příspěvky: 197
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Google Voice Assistant

Příspěvek od BigSandy » 29 srp 2020, 10:14

Tak jsem si chvilku hral přes MIT App Inventor.
https://www.learn2code.cz/kurzy/mit-app-inventor

Funkční poskladaný za pul hodky a umi česky :mrgreen:

A test přes PHP

Kód: Vybrat vše

<?php
$data = file_get_contents('php://input');
file_put_contents('./shm/testvoice', $data);
?>
Přílohy
app inventor.jpg

TabHornby
Příspěvky: 5
Registrován: 12 led 2022, 03:22
Reputation: 0

Re: Google Voice Assistant

Příspěvek od TabHornby » 12 led 2022, 09:04

Protože mám v mobilu Chrome, mohu si ji na něm otevřít, ale hodí se to jen na jednorázové povely, nepodařilo se mi u mobilu nastavit, aby se obrazovka nezamykala (jde mi nastavit jen interval, ale nejde mi to vypnout zcela). U tabletu to jde, že mi ta stránka běží ve fullscreenu nepřetržitě a čeká na povely.


_________________
kolczyki nausznice

BigSandy
Příspěvky: 197
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Google Voice Assistant

Příspěvek od BigSandy » 12 led 2022, 09:15

I když už jsem o level výše a umím to přes AS, mněl bych zajem o tu web stranku.

KamilV
Příspěvky: 429
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Google Voice Assistant

Příspěvek od KamilV » 12 led 2022, 11:51

TabHornby píše:
12 led 2022, 09:04
Protože mám v mobilu Chrome, mohu si ji na něm otevřít, ale hodí se to jen na jednorázové povely, nepodařilo se mi u mobilu nastavit, aby se obrazovka nezamykala (jde mi nastavit jen interval, ale nejde mi to vypnout zcela). U tabletu to jde, že mi ta stránka běží ve fullscreenu nepřetržitě a čeká na povely.
Mám stejnou zkušenost, na mobilu se mi nikdy nepodařilo vypnout zamykání obrazovky, takže jsem to provozoval na tabletu, který jel i mnoho dní v kuse...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů