2012-04-16 19 views
19

Wenn ich die startListening Methode eines SpeechRecognizer Objekts anrufe, beginnt der Spracherkenner auf Sprache zu hören. Ich möchte einen Dienst erstellen, der auf die Sprache eines bestimmten Schlüsselworts wartet: Wenn der Benutzer dieses Schlüsselwort sagt und der Spracherkenner dieses Schlüsselwort erkennt, wird der Dienst bereit, Benutzersprachbefehle zu empfangen.Kann ich den Spracherkenner unbegrenzt hören lassen?

Zu diesem Zweck, nach einem neuen SpeechRecognizer instanziiert, sollte ich seine startListening Methode aufrufen: kann ich den Spracherkenner für unbegrenzte Zeit hören?

+2

klingt wie du machst einen Android-Abhören - ich mag !! – Kristian

+1

Ziel ist es, eine oder mehrere Anwendungen mit der Stimme steuern zu können. – enzom83

+3

Sehen Sie sich die App namens Vlingo an. Sie erreichen dies, indem sie die Anwendung im Hintergrund laufen lassen und auf das Schlagwort "Hey Vlingo ..." warten. Das klingt nach dem, wonach Sie suchen. Ich würde versuchen, die vielen Fragen rund um einen Service im Hintergrund durchzugehen. Das klingt nach einem guten Start für Sie. – gobernador

Antwort

13

Die Android Speech recognizer kann durch die Absicht zusätzliche Daten angepasst werden. Siehe the android documentation.

public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

Die Höhe der Zeit, dass es sollte dauern, nachdem wir Rede aufhören zu hören, halten die Eingabe abgeschlossen. [...]

public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS seit: API Ebene 8

Die Mindestlänge einer Äußerung. Wir werden die Aufzeichnung nicht vor dieser Zeit stoppen. [...]

public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

Die Höhe der Zeit, dass es sollte dauern, nachdem wir hören Rede stoppen betrachten die Eingabe möglicherweise abgeschlossen. [...]

Setzen Sie die EXTRA_LANGUAGE_MODEL auf Websearch, um nur relevante Wörter zu erfassen.

+0

_Wenn diese Werte von der Implementierung des Erkenners abhängen, haben sie möglicherweise keine Auswirkungen_. Daher können wir annehmen, dass diese Werte nicht geändert werden können. In diesem Fall, wenn der Spracherkenner automatisch stoppt, weil er keine Stimme durch den Benutzer erkannt hat, sollte ich ihn erneut starten, indem er die 'startListening'-Methode aufruft: Dies würde jedoch ein Zeitintervall erzeugen, während dem der Spracherkenner nicht zuhört , weil der Neustart des Abhörens möglicherweise nicht sofort erfolgt. Wie überwinde ich dieses Hindernis? – enzom83

+0

Sie können Ihren eigenen Dienst implementieren, anstatt den Dienst von Google zu verwenden. Aber haben Sie wirklich getestet, um die Absicht zu parametrisieren? Ich denke, es ist einen Versuch wert. Ich habe es nicht alleine gemacht, aber ich denke (blind), dass der ursprüngliche Spracherkennungsdienst von Google eine Implementierung hat, die diese Parameter verwendet, andernfalls wären sie nicht so bald hinzugefügt worden (API 8). Das Problem mit einem Anpassungsdienst könnte der mögliche Konflikt zwischen Ihnen und dem ursprünglichen sein. – rockeye

+2

Ich habe festgestellt, dass der Standardwert von 'EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS' etwa 10 Sekunden beträgt, denn wenn ich nicht spreche, hört der Spracherkenner nach etwa 10 Sekunden automatisch auf zu hören. Also setze ich 'EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS' auf 100000 Millisekunden: Auf diese Weise sollte der Spracherkenner die Aufzeichnung nicht vor dieser Zeitdauer (100 Sekunden) stoppen, sondern immer nach etwa 10 Sekunden. – enzom83

Verwandte Themen