Delta6400 Meinst Du nicht das da vielleicht etwas wenig Platz im Taster ist, um eim Mikrofonarray, und LS unterzubringen? Wenn ich mir die Matrix von https://www.hackster.io/matrix-labs/...project-63b9cd anschaue, bezweifel ich, das dies in einen Taster passt. Und wenn ich vor dem Taster stehen muss, damit er die Sprache erkennt, kann ich auch gleich drücken.....
Ankündigung
Einklappen
Keine Ankündigung bisher.
Snips AI Offline Spracherkennung in Edomi
Einklappen
X
-
Wie wär's mit dem hier freigeschnitten.pngChris (https://proknx.com)
wir haben ARAGON entwickelt, einen offline Sprachassistenten für KNX.
Google, Amazon und Apple hätten das auch gekonnt. Aber sie verdienen eben besser an unseren persönlichen Daten...
Kommentar
-
Die Matrix kenne ich und hab ich auch schon gesehen.
Aber man kann es ja dann auch "nur" mit 2 Mikrofonen machen (oben/unten).
Hier ist natürlich wirklich die Frage, ob die Entfernung um die Sprache zu verstehen zu groß ist.
Das zeigt dann ein Test.
Ich hab folgendes gesehen und bestell mir wahrscheinlich eins mal: INMP441
Ist ein Mikrofon was das Signal per I2S weitergibt.
Bezüglich Taster und nur KNX Leitung:
Dann hat man ja die Spannung schon und sendet das Sprach-Signal per WLAN.Gruß,
Andreas
Kommentar
-
https://www.heise.de/newsticker/meld...s-4593521.html
Das war es wohl mit Snips.
Einige Skill-Entwickler sind wohl echt angefressen, da sie eine Menge Arbeit und Zeit investiert haben.
Snips hat sein Versprechen, einige Komponenten irgendwann mal open-source zu machen, nie wirklich eingelöst, obwohl sie damit geworben haben.
Alternative: https://rhasspy.readthedocs.io/en/latest/
Bietet eine Oberfläche und man kann das ganze Training der ASR und der NLU auch direkt zuhause durchführen (vgl. Snips Console -> Train assistant).
https://community.home-assistant.io/...-toolkit/60862
- Likes 1
Kommentar
-
Achso, falls noch irgendwer vorsichtshalber die Paketquellen sichern möchte.
Ich habe es mit apt-mirror gemacht.
So sieht meine /etc/apt/mirror.list aus:
Code:############# config ################## # # set base_path /var/spool/apt-mirror # # set mirror_path $base_path/mirror # set skel_path $base_path/skel # set var_path $base_path/var # set cleanscript $var_path/clean.sh # set defaultarch <running host architecture> # set postmirror_script $var_path/postmirror.sh # set run_postmirror 0 set nthreads 20 set _tilde 0 # ############# end config ############## #deb http://archive.ubuntu.com/ubuntu artful main restricted universe multiverse #deb http://archive.ubuntu.com/ubuntu artful-security main restricted universe multiverse #deb http://archive.ubuntu.com/ubuntu artful-updates main restricted universe multiverse #deb http://archive.ubuntu.com/ubuntu artful-proposed main restricted universe multiverse #deb http://archive.ubuntu.com/ubuntu artful-backports main restricted universe multiverse #deb-src http://archive.ubuntu.com/ubuntu artful main restricted universe multiverse #deb-src http://archive.ubuntu.com/ubuntu artful-security main restricted universe multiverse #deb-src http://archive.ubuntu.com/ubuntu artful-updates main restricted universe multiverse #deb-src http://archive.ubuntu.com/ubuntu artful-proposed main restricted universe multiverse #deb-src http://archive.ubuntu.com/ubuntu artful-backports main restricted universe multiverse #clean http://archive.ubuntu.com/ubuntu # # from https://docs.snips.ai/articles/other-platforms # # Debian i386, amd64 deb [arch=amd64] https://debian.snips.ai/stretch stable main deb [arch=i386] https://debian.snips.ai/stretch stable main # Raspbian armv7(respeaker_iot, armhf), armv8(stretch, armhf) and arm64(buster) deb [arch=armhf] https://raspbian.snips.ai/respeaker_iot stable main deb [arch=armhf] https://raspbian.snips.ai/stretch stable main deb [arch=arm64] https://raspbian.snips.ai/410c_linaro_buster stable main clean https://debian.snips.ai/stretch clean https://raspbian.snips.ai/stretch clean https://raspbian.snips.ai/respeaker_iot clean https://raspbian.snips.ai/410c_linaro_buster
- Likes 1
Kommentar
-
Zitat von Nanosonde Beitrag anzeigenAlternative: https://rhasspy.readthedocs.io/en/latest/
Bietet eine Oberfläche und man kann das ganze Training der ASR und der NLU auch direkt zuhause durchführen (vgl. Snips Console -> Train assistant).
https://community.home-assistant.io/...-toolkit/60862
Kommentar
-
Das scheint´s nun endgültig gewesen zu sein:
https://forum.snips.ai/t/important-m...s-console/4145
So ein shit ... wollte gerade mit warm werden!
Kommentar
-
Zitat von gbglace Beitrag anzeigenkeine Ahnung warum sich das soviele ins Haus bauen
Kommentar
-
Hallo zusammen,
seit Tagen schon breche ich mir einen ab mit dem abändern des snips LBS auf einen Rhasspy JSON string. Aber egal was ich probiere, ich kriege das device aus E4 bzw E10 bis E19 einfach nicht in den log geschrieben.
Eigentlich schaut der string vom rhasspy nicht so sehr anders aus:
Code:{"sessionId": "", "siteId": "default", "input": "licht wohnen an", "intent": {"intentName": ":switchlight", "confidenceScore": 0.6666666666666667}, "slots": [{"slotName": "device_name", "confidence": 1, "value": {"kind": "device_name", "value": "licht"}, "rawValue": "licht"}, {"slotName": "rooms_name", "confidence": 1, "value": {"kind": "rooms_name", "value": "wohnen"}, "rawValue": "wohnen"}, {"slotName": "switchstate_name", "confidence": 1, "value": {"kind": "switchstate_name", "value": "an"}, "rawValue": "an"}], "asrTokens": [], "asrConfidence": 1}
Hier der log:
Code:2020-01-25 21:10:57 165729 29965 debug LBS19000289 [v0.11]: LBS: LBS started 2020-01-25 21:10:57 167273 29965 debug LBS19000289 [v0.11]: LBS: Payload changed to {"sessionId": "", "siteId": "default", "input": "licht wohnen an", "intent": {"intentName": ":switchlight", "confidenceScore": 0.6666666666666667}, "slots": [{"slotName": "device_name", "confidence": 1, "value": {"kind": "device_name", "value": "licht"}, "rawValue": "licht"}, {"slotName": "rooms_name", "confidence": 1, "value": {"kind": "rooms_name", "value": "wohnen"}, "rawValue": "wohnen"}, {"slotName": "switchstate_name", "confidence": 1, "value": {"kind": "switchstate_name", "value": "an"}, "rawValue": "an"}], "asrTokens": [], "asrConfidence": 1} 2020-01-25 21:10:57 168636 29965 debug LBS19000289 [v0.11]: On Array 2020-01-25 21:10:57 168824 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT START ================ 2020-01-25 21:10:57 168986 29965 debug LBS19000289 [v0.11]: ["ein","an","einschalten","auf","aufdrehen"] 2020-01-25 21:10:57 169126 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT END ================ 2020-01-25 21:10:57 171613 29965 debug LBS19000289 [v0.11]: Off Array 2020-01-25 21:10:57 171896 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT START ================ 2020-01-25 21:10:57 171999 29965 debug LBS19000289 [v0.11]: ["aus","ausschalten","ab","abdrehen"] 2020-01-25 21:10:57 172192 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT END ================ 2020-01-25 21:10:57 173695 29965 debug LBS19000289 [v0.11]: Lese Eingang 10 wohnen 2020-01-25 21:10:57 176570 29965 debug LBS19000289 [v0.11]: Lese Eingang 11 wc 2020-01-25 21:10:57 178880 29965 debug LBS19000289 [v0.11]: Lese Eingang 12 kueche 2020-01-25 21:10:57 183600 29965 debug LBS19000289 [v0.11]: Lese Eingang 13 2020-01-25 21:10:57 184863 29965 debug LBS19000289 [v0.11]: Lese Eingang 14 2020-01-25 21:10:57 186572 29965 debug LBS19000289 [v0.11]: Lese Eingang 15 2020-01-25 21:10:57 188608 29965 debug LBS19000289 [v0.11]: Lese Eingang 16 2020-01-25 21:10:57 190013 29965 debug LBS19000289 [v0.11]: Lese Eingang 17 2020-01-25 21:10:57 191255 29965 debug LBS19000289 [v0.11]: Lese Eingang 18 2020-01-25 21:10:57 192467 29965 debug LBS19000289 [v0.11]: Lese Eingang 19 2020-01-25 21:10:57 193691 29965 debug LBS19000289 [v0.11]: Device Array 2020-01-25 21:10:57 193876 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT START ================ 2020-01-25 21:10:57 193957 29965 debug LBS19000289 [v0.11]: {"10":"wohnen","11":"wc","12":"kueche"} 2020-01-25 21:10:57 194024 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT END ================ 2020-01-25 21:10:57 195275 29965 debug LBS19000289 [v0.11]: Value Array 2020-01-25 21:10:57 195419 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT START ================ 2020-01-25 21:10:57 195492 29965 debug LBS19000289 [v0.11]: ["switchstate_name"] 2020-01-25 21:10:57 195558 29965 debug LBS19000289 [v0.11]: ================ ARRAY/OBJECT END ================ 2020-01-25 21:10:57 197402 29965 debug LBS19000289 [v0.11]: On found 1 2020-01-25 21:10:57 198677 29965 debug LBS19000289 [v0.11]: Snips IntentName found switchlight 2020-01-25 21:10:57 200014 29965 debug LBS19000289 [v0.11]: [COLOR=#ff0000][B]Slot Name Device not found[/B][/COLOR] 2020-01-25 21:10:57 201293 29965 debug LBS19000289 [v0.11]: Slot Name Value found 1 2020-01-25 21:10:57 202516 29965 debug LBS19000289 [v0.11]: [B][COLOR=#ff0000]Slot Name Device not in array[/COLOR][/B]
PHP-Code:###[DEF]###
[name = Snips Value 0.11]
[e#1 option = Debug #init=3 ]
[e#2 trigger = MQTT Payload ]
[e#3 important = Snips IntentName #init=Switch ]
[e#4 important = Slot Name Device #init=Device ]
[e#5 important = Slot Name Value #init=value ]
[e#6 important = Slot On Synonyms #init=ein,an,einschalten,auf,aufdrehen ]
[e#7 important = Slot Off Synonyms #init=aus,ausschalten,ab,abdrehen ]
[e#8 trigger = Generate Snips Import Strings #init=0 ] No change needed, will trigger once on startup anyway
[e#9 option = Multiplikator ]
[e#10 = Names 0 ]
[e#11 = Names 1 ]
[e#12 = Names 2 ]
[e#13 = Names 3 ]
[e#14 = Names 4 ]
[e#15 = Names 5 ]
[e#16 = Names 6 ]
[e#17 = Names 7 ]
[e#18 = Names 8 ]
[e#19 = Names 9 ]
[a#1 = Snips Slot Device Import] Copy this output for import as Snips Slots for Devices
[a#2 = Snips Slot On-Off Import] Copy this output for import as Snips Slots for On-Off
[a#10 = Output 0 ]
[a#11 = Output 1 ]
[a#12 = Output 2 ]
[a#13 = Output 3 ]
[a#14 = Output 4 ]
[a#15 = Output 5 ]
[a#16 = Output 6 ]
[a#17 = Output 7 ]
[a#18 = Output 8 ]
[a#19 = Output 9 ]
[v#100 = 0.11 ] // Version
[v#101 = 19000289 ] // LBS ID
[v#102 = Snips value] // LBS name
[v#103 = 3 ] // Loglevel
[v#104 = 1 ] // One logfile per instance
[v#105 = 1 ] // log ID in each line
###[/DEF]###
###[HELP]###
###[/HELP]###
###[LBS]###
<?php
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if ($E[2]['refresh'] == 1 && $E[2]['value'] != "") {
setLogicElementVar($id, 103, $E[1]['value']); // set loglevel to #VAR 103
LB_LBSID_logging($id, "LBS: LBS started",7);
LB_LBSID_logging($id, "LBS: Payload changed to ".$E[2]['value'], 6);
$jsonArray = json_decode($E[2]['value'], true); /// hier wird json decodiert aus Eingang 2(payload MQTT) !!!!!!!!!!!!!
if(json_last_error() == JSON_ERROR_NONE){
$entity = strtolower(trim($E[4]['value'])); /// hier Eingang 4="slot name device": kleinb. + leerz. weg evtl c&p für weiteren eingang!!!!
$OnArray = explode(",",strtolower(trim($E[6]['value']))); /// explode trennt: hier durch Komma , Eingang 6 = slotONsynonyms
LB_LBSID_logging($id,"On Array ",8,$OnArray);
$OffArray = explode(",",strtolower(trim($E[7]['value'])));
LB_LBSID_logging($id,"Off Array ",8,$OffArray);
$jsonArray = json_decode($E[2]['value'], true);
for ($i = 10; $i < 20; $i++) {
LB_LBSID_logging($id, "Lese Eingang $i ".$E[$i]['value'],8);
if($E[$i]['value'] != ''){
$locationArray[$i] = strtolower(trim($E[$i]['value']));
}}
LB_LBSID_logging($id,"Device Array ",8,$locationArray);
$intenName = explode(":",$jsonArray["intent"]["intentName"]); /// explode trennt: hier durch :
$intenName = strtolower(trim($intenName[1]));
$pos = $loc = $ent = '';
unset($val);
$Name = false;
if ( $intenName == strtolower(trim($E[3]['value'])) ) { /// E3=slot intentName
$ent = $intenName;
$valueArray = explode(",", strtolower($E[5]['value']));
LB_LBSID_logging($id,"Value Array ",8,$valueArray);
$switch = 0;
foreach($jsonArray['slots'] as $slots ){
if(strtolower(trim($slots['slotName'])) == strtolower(trim($E[5]['value']))){ /// E5=slot name value
$Name=true;
break;
}}
if($Name){
foreach($jsonArray['slots'] as $slots ){
if(in_array(strtolower(trim($slots['value']['value'])),$locationArray)){
if(strtolower(trim($slots['entity'])) == $entity){
$loc = $slots['value']['value'];
$posarray = (array_keys($locationArray, strtolower(trim($slots['value']['value']))));
$pos = $posarray[0];
break;
}}}
foreach($jsonArray['slots'] as $slots ){
if(in_array(strtolower(trim($slots['value']['value'])),$OnArray)){
$val = 1;
LB_LBSID_logging($id,"On found $val ",8);
$switch = 1;
break;
}}
foreach($jsonArray['slots'] as $slots ){
if(in_array(strtolower(trim($slots['value']['value'])),$OffArray)){
$val = 0;
$switch = 1;
LB_LBSID_logging($id,"Off found $val $pos",8);
break;
}}
if($switch != 1){
foreach($jsonArray['slots'] as $slots ){
if(in_array(strtolower(trim($slots['slotName'])),$valueArray)){
$switch = 0;
$val = $slots['value']['value'];
LB_LBSID_logging($id,"val found $val ",8);
break;
}}}
if($ent != ''){LB_LBSID_logging($id,"Snips IntentName found $ent ",8);}
if($loc != ''){LB_LBSID_logging($id,"Slot Name Device found $loc ",8);}else{LB_LBSID_logging($id,"Slot Name Device not found",8);}
if($val != ''){LB_LBSID_logging($id,"Slot Name Value found $val ",8);}else{LB_LBSID_logging($id,"Slot Name Value not found",8);}
if($pos != ''){LB_LBSID_logging($id,"Slot Name Device Key found $pos" ,8);}else{LB_LBSID_logging($id,"Slot Name Device not in array",8);}
}
if(isset($val) && $pos != ''){
LB_LBSID_logging($id,"switch $switch". $E[9]['value'],1); /// E9=Multiplikator
if($E[9]['value'] != '' && $switch == 0){
$val = round(($val*$E[9]['value']),0);
LB_LBSID_logging($id,"Multiplikator erkannt ".$E[9]['value']." Neuer Wert $val" ,8);
}logic_setOutput($id,$pos, $val);
LB_LBSID_logging($id,"Ausgang $pos auf $val gesetzt" ,8);
}}else{
LB_LBSID_logging($id,"Snips IntentName not found",8);
}}else{
if(phpversion() < 5.5){
LB_LBSID_logging($id,"incorrect JSON string " ,3);
}else {
LB_LBSID_logging($id,"incorrect JSON string - ".json_last_error_msg() ,3);
}}}
if ($E[8]['refresh'] == 1) {
// loop through all devices
$SLOT_EXPORT_DEVICE = "";
for ($i = 10; $i < 20; $i++) {
if($E[$i]['value'] != ''){
$SLOT_EXPORT_DEVICE .= $E[$i]['value']."\n";
}}
logic_setOutput($id,1,$SLOT_EXPORT_DEVICE);
$SLOT_EXPORT_ON_OFF = "";
$ONsynonyms = explode(",",$E[6]['value']);
for ($k = 0; $k < count($ONsynonyms); $k++) {
if (trim($ONsynonyms[$k]) != "") {
$SLOT_EXPORT_ON_OFF .= trim($ONsynonyms[$k]);
if ($k < count($ONsynonyms)-1) $SLOT_EXPORT_ON_OFF .= ",";
}}
if ($SLOT_EXPORT_ON_OFF != "") $SLOT_EXPORT_ON_OFF .= "\n";
$OFFsynonyms = explode(",",$E[7]['value']);
for ($k = 0; $k < count($OFFsynonyms); $k++) {
if (trim($OFFsynonyms[$k]) != "") {
$SLOT_EXPORT_ON_OFF .= trim($OFFsynonyms[$k]);
if ($k < count($OFFsynonyms)-1) $SLOT_EXPORT_ON_OFF .= ",";
}}
logic_setOutput($id,2,$SLOT_EXPORT_ON_OFF);
}}}
function LB_LBSID_logging($id, $msg, $priority, $var = NULL){
$E = getLogicEingangDataAll($id);
$logLevel = getLogicElementVar($id, 103);
if (is_int($priority) && $priority <= $logLevel && $priority > 0) {
$logLevelNames = array(
'none',
'emerg',
'alert',
'crit',
'err',
'warning',
'notice',
'info',
'debug'
);
$version = getLogicElementVar($id, 100);
$lbsNo = getLogicElementVar($id, 101);
$logName = getLogicElementVar($id, 102) . "-LBS$lbsNo";
$logName = preg_replace('/ /', '_', $logName);
if (logic_getVar($id, 104))
$logName .= "-$id";
if (logic_getVar($id, 105) == 1)
//$msg .= " ($id)";
strpos($_SERVER['SCRIPT_NAME'], $lbsNo) ? $scriptname = 'EXE' . $lbsNo : $scriptname = 'LBS' . $lbsNo;
writeToCustomLog($logName, str_pad($logLevelNames[$logLevel], 7), $scriptname . " [v$version]:\t" . $msg);
if (isset($var)) {
writeToCustomLog($logName, str_pad($logLevelNames[$logLevel], 7), $scriptname . " [v$version]:\t================ ARRAY/OBJECT START ================");
writeToCustomLog($logName, str_pad($logLevelNames[$logLevel], 7), $scriptname . " [v$version]:\t" . json_encode($var));
writeToCustomLog($logName, str_pad($logLevelNames[$logLevel], 7), $scriptname . " [v$version]:\t================ ARRAY/OBJECT END ================");
}}}
?>
###[/LBS]###
###[EXEC]###
<?
// nothing to do
?>
###[/EXEC]###
Kann mir hier jemand auf die Sprünge helfen, warum und wo es hakt in diesem LBS?
Kommentar
Kommentar