• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Probleme mit der Speech Recognition API

Toxuas

New member
Guten Tag, ich versuche momentan eine Sprachsteuerung in eine Website einzubauen , was soweit auch funktioniert,
allerdings stoße ich noch auf ein paar große Probleme:

- Auf Tablets muss jedesmal wenn auf der Website die API angesprochen wird, der Zugriff auf das Mikrofon zugelassen werden , kann man das irgendwie standardmäßig einstellen ?

-Momentan ist es so das die Sprachsteuerung bei $(document).ready getriggert wird, sich aber auch nach wenigen Sekunden wieder schließt da dann das onspeechend Event triggert , kann man das irgendwie verzögern oder modifizieren? Das Ziel ist es nämlich dauerhaft die Sprachsteuerung anzuhaben bis auch etwas gesagt wird.

-Wenn das onresult Event der SpeechRecognition ausgelöst wird , wird eine Methode aufgerufen in der ein Sound abgespielt wird , was allerdings in diesem Zusammenhang darin resultiert, das kein Sound abgespielt wird.
Ich habe die Vermutung das dies dadurch begründet ist, das ein Ton kommt wenn die Aufnahme gestoppt ist und dadurch das von mir aufgerufene Sound Event überschrieben wird.

Dies ist mein Code für die API
Code:
$(document).ready(function(){
		var grammar = "JSGF V1.0; grammar actions; public <action> = hallo | test | zuruck | zurueck | weiter | nochmal | nocheinmal | noch mal | zurück;";
		var recognition = new webkitSpeechRecognition();
		var speechRecognitionList = new webkitSpeechGrammarList();
		speechRecognitionList.addFromString(grammar,1);
		recognition.grammars = speechRecognitionList;
		recognition.last = "de-DE";
		recognition.interimResults = false;
		recognition.maxAlternatives = 1;

		recognition.start();
		
		recognition.onresult = function(event){
			var word = event.results[0][0].transcript;

			if( word === "Weiter" || word === "weiter"){
				nextArticle(true);
			}
			else if( word === "zurück" || word === "Zurück"){
				nextArticle(false);
			'}
			else if( word === "noch mal" || word === "noch einmal"){
				Speak();
			}
		}
		
		 recognition.onspeechend = function(){
		  alert("stop");
		  recognition.stop();
		}

		})
//FUNCTION nextArticle(bArticle)	
		//Inkrement/Dekrement der Zählervariable
		function nextArticle(bArticle){		
		 if(bArticle == true){
		 globalCounter++;
		 PlaySound("sounds/Continue.wav");
		
		} else if(bArticle == false && globalCounter>0){
			globalCounter--;')
			PlaySound("sounds/Back.wav");
			$("#Feedback").css("display","none");
		}
}
//FUNKTION Play Sound spielt einen sound ab
		function PlaySound(soundObj){
		var sound = new Audio(soundObj);
		sound.play();
		}

Dies ist nur der Codeaussschnitt von dem ich glaube, das er eine Rolle spielt.

Ich würde mich über Antworten freuen, wenn jemand Probleme hat meine Fragen zu verstehen werde ich gerne versuchen sie nochmal zu formulieren.

MfG Toxuas
 
- Auf Tablets muss jedesmal wenn auf der Website die API angesprochen wird, der Zugriff auf das Mikrofon zugelassen werden , kann man das irgendwie standardmäßig einstellen ?
jedesmal oder jedes 1. mal nach öffnen der seite?

-Momentan ist es so das die Sprachsteuerung bei $(document).ready getriggert wird, sich aber auch nach wenigen Sekunden wieder schließt da dann das onspeechend Event triggert , kann man das irgendwie verzögern oder modifizieren? Das Ziel ist es nämlich dauerhaft die Sprachsteuerung anzuhaben bis auch etwas gesagt wird.
einfach neu starten, oder nimm ein framework
https://github.com/TalAter/annyang

-Wenn das onresult Event der SpeechRecognition ausgelöst wird , wird eine Methode aufgerufen in der ein Sound abgespielt wird , was allerdings in diesem Zusammenhang darin resultiert, das kein Sound abgespielt wird.
Ich habe die Vermutung das dies dadurch begründet ist, das ein Ton kommt wenn die Aufnahme gestoppt ist und dadurch das von mir aufgerufene Sound Event überschrieben wird.
ist mir bisher nicht aufgefallen dass da ein ton kommt
 
Jedesmal wenn die Sprachsteuerung angesteuert wird muss ich die Berechtigung wieder erteilen.

Ja stimmt , einfach neu starten .. :D Darauf hätte ich auch selber kommen können. Schoneinmal vielen Dank dafür :)

Ich benutze beispielsweise das Asus Zen Pad 7 mit Android zum testen. Sobald die Aufnahme beendet ist kommt ein recht leiser Bestätigungs Ton.
 
Zuletzt bearbeitet:
Zurück
Oben