2015-05-16 13 views
10

Ich habe eine Aktivität, die RecognitionListener implementiert. Um es kontinuierlich zu machen, onEndOfSpeech() jedes Mal starte ich den Hörer wieder:Kontinuierliche Spracherkennung Android - ohne Lücken

speech.startListening(recognizerIntent); 

Aber, dauert es einige Zeit (etwa eine halbe Sekunde), bis es beginnt, so gibt es diese eine halbe Sekunde Lücke, wo nichts hören . Daher vermisse ich Wörter, die in dieser Zeitdifferenz gesprochen wurden.

Auf der anderen Seite, wenn ich Google Voice-Eingabe verwenden, um Nachrichten anstelle der Tastatur diktieren - diese Zeit Lücke gibt es nicht. Bedeutung - es gibt eine Lösung.

Was ist das?

Dank

+0

Haben Sie Erfolg darin? – Herry

Antwort

2

versuchen auf ein paar andere api suchen ....

speech demo: Quelle auf CLI here und diskutiert here und betrieben hat here

können Sie die Vollduplex Google API verwenden (seine Rate auf 50 pro Tag begrenzt)

Oder wenn Sie diese allgemeine Idee, überprüfen Sie ibm wa Tson diskutiert here

IMO - es ist komplexer, aber nicht begrenzt.

+0

HTTP-Streaming zu Drittanbieterdiensten scheint die einzige Lösung zu diesem Zeitpunkt. –

2

Es gibt Optionen wie:

intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 2000); // value to wait 

oder

intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 2000); 

These aufgehört auf Jelly Bean zu arbeiten und oben, aber auf ICS arbeiten und unten - nicht sicher, ob beabsichtigt oder ein Fehler!

+0

Danke, ich meinte wenn das nicht klappt ... –

3

Ich empfehle die Verwendung CMUSphinx, um Sprache kontinuierlich zu erkennen. Um eine kontinuierliche Spracherkennung mithilfe der Google Spracherkennung API zu erreichen, müssen Sie möglicherweise auf eine Schleife in einem Hintergrunddienst zurückgreifen, der zu viele Ressourcen beansprucht und die Gerätebatterie entlädt.

Auf der anderen Seite funktioniert Pocksphinx wirklich gut. Es ist schnell genug, um einen Schlüsselsatz zu erkennen und Sprachbefehle hinter dem Sperrbildschirm zu erkennen, ohne dass Benutzer ihr Gerät berühren. Und das alles offline. Sie können versuchen, die demo.

Wenn Sie wirklich von Google api verwenden möchten, see this

+1

Danke, obwohl Pocksphinx nicht gut für natürlichsprachliches Diktieren funktioniert (es funktioniert hervorragend für eine begrenzte Grammatik - großartig für Befehle), und nicht die Lösung in der Link zu Google API Ergebnis in dem gleichen Problem wie ich gepostet? –

+0

@RonenRabinovici Sorry, ich habe den Link aktualisiert –

+0

Wie lade ich pocketsphinx herunter –