Android -Spracherkennung und Text zur Sprache einfach gemacht.
implementation ' net.gotev:speech:x.y.z ' Ersetzen Sie xyz durch
Um die Bibliothek zu verwenden, müssen Sie sie in Ihrer Aktivität initialisieren
public class YourActivity extends Activity {
Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . your_layout );
Speech . init ( this , getPackageName ());
}
@ Override
protected void onDestroy () {
// prevent memory leaks when activity is destroyed
Speech . getInstance (). shutdown ();
}
} Sie finden eine vollständig funktionierende Demo -App, die diese Bibliothek im examples verwendet. Schauen Sie einfach das Projekt an und probieren Sie es aus.
In einer Aktivität:
try {
// you must have android.permission.RECORD_AUDIO granted at this point
Speech . getInstance (). startListening ( new SpeechDelegate () {
@ Override
public void onStartOfSpeech () {
Log . i ( "speech" , "speech recognition is now active" );
}
@ Override
public void onSpeechRmsChanged ( float value ) {
Log . d ( "speech" , "rms is now: " + value );
}
@ Override
public void onSpeechPartialResults ( List < String > results ) {
StringBuilder str = new StringBuilder ();
for ( String res : results ) {
str . append ( res ). append ( " " );
}
Log . i ( "speech" , "partial result: " + str . toString (). trim ());
}
@ Override
public void onSpeechResult ( String result ) {
Log . i ( "speech" , "result: " + result );
}
});
} catch ( SpeechRecognitionNotAvailable exc ) {
Log . e ( "speech" , "Speech recognition is not available on this device!" );
// You can prompt the user if he wants to install Google App to have
// speech recognition, and then you can simply call:
//
// SpeechUtil.redirectUserToGoogleAppOnPlayStore(this);
//
// to redirect the user to the Google App page on Play Store
} catch ( GoogleVoiceTypingDisabledException exc ) {
Log . e ( "speech" , "Google voice typing must be enabled!" );
} Fügen Sie in Ihrer Aktivität onDestroy hinzu:
@ Override
protected void onDestroy () {
Speech . getInstance (). shutdown ();
}Um Speicherlecks zu verhindern.
Fügen Sie dies Ihrem Layout hinzu:
< LinearLayout
android : orientation = " vertical "
android : layout_width = " wrap_content "
android : layout_height = " wrap_content "
android : id = " @+id/linearLayout " >
< net .gotev.speech.ui.SpeechProgressView
android : id = " @+id/progress "
android : layout_width = " 120dp "
android : layout_height = " 150dp " />
</ LinearLayout > Es ist wichtig, dass sich die SpeechProgressView immer in einem Linearlayout befindet, um ordnungsgemäß zu funktionieren. Sie können die Breite und Höhe entsprechend den Einstellungen der Balkenhöhen einstellen (siehe unten).
Wenn Sie dann mit der Spracherkennung beginnen, bestehen Sie auch an die SpeechProgressView :
Speech . getInstance (). startListening ( speechProgressView , speechDelegate );Sie können alle 5 -Bar -Farben festlegen, wie Sie möchten. Dies ist nur ein Beispiel:
int [] colors = {
ContextCompat . getColor ( this , android . R . color . black ),
ContextCompat . getColor ( this , android . R . color . darker_gray ),
ContextCompat . getColor ( this , android . R . color . black ),
ContextCompat . getColor ( this , android . R . color . holo_orange_dark ),
ContextCompat . getColor ( this , android . R . color . holo_red_dark )
};
speechProgressView . setColors ( colors ); int [] heights = { 60 , 76 , 58 , 80 , 55 };
speechProgressView . setBarMaxHeightsInDp ( heights );In einer Aktivität:
Speech . getInstance (). say ( "say something" );Sie können auch einen Rückruf zur Erhaltstatus angeben:
Speech . getInstance (). say ( "say something" , new TextToSpeechCallback () {
@ Override
public void onStart () {
Log . i ( "speech" , "speech started" );
}
@ Override
public void onCompleted () {
Log . i ( "speech" , "speech completed" );
}
@ Override
public void onError () {
Log . i ( "speech" , "speech error" );
}
});Sie können verschiedene Parameter konfigurieren, indem Sie die Setter -Methoden in der Sprachinstanz verwenden, die Sie überall in Ihrem Code so erhalten können:
Speech . getInstance ()Eine vollständige Referenz finden Sie in Javadocs.
Standardmäßig ist die Bibliotheksprotokollierung deaktiviert. Sie können das Debug -Protokoll aktivieren, indem Sie aufgerufen werden:
Logger . setLogLevel ( LogLevel . DEBUG );Wo immer Sie in Ihrem Code wollen. Sie können den Detailniveau von Debugg bis Off anpassen.
Der Bibliotheksprotokoll verwendet standardmäßig android.util.Log , sodass Sie die Ausgabe in LogCat erhalten. Wenn Sie Protokolle in unterschiedliche Ausgaben umleiten oder einen anderen Protokoller verwenden möchten, können Sie eine solche eigene Delegierterimplementierung wie folgt bereitstellen:
Logger . setLoggerDelegate ( new Logger . LoggerDelegate () {
@ Override
public void error ( String tag , String message ) {
//your own implementation here
}
@ Override
public void error ( String tag , String message , Throwable exception ) {
//your own implementation here
}
@ Override
public void debug ( String tag , String message ) {
//your own implementation here
}
@ Override
public void info ( String tag , String message ) {
//your own implementation here
}
}); Verwenden Sie Speech.getInstance().getSpeechToTextLanguage() und Speech.getinstance().getTextToSpeechVoice() . Überprüfen Sie die Demo -App für ein vollständiges Beispiel.
Verwenden Sie Speech.getInstance().getSupportedSpeechToTextLanguages(listener) und Speech.getInstance().getSupportedTextToSpeechVoices() . Überprüfen Sie die Demo -App für ein vollständiges Beispiel.
Verwenden Sie Speech.getInstance().setLocale(locale) und Speech.getInstance().setVoice(voice) . Überprüfen Sie die Demo -App für ein vollständiges Beispiel.
Wenn Sie das Gebietsschema einstellen, wird die Stimme automatisch in die Standardstimme dieser Sprache geändert. Wenn Sie eine bestimmte Stimme festlegen möchten, denken Sie daran, sie auch jedes Mal erneut einzustellen, wenn Sie das Gebietsschema wechseln.
Vielen Dank an @Zagum für die ursprüngliche Implementierung der Spracherkennungsansicht.
Copyright (C) 2019 Aleksandar Gotev
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Vielen Dank an Kristiyan Petrov für Code -Überprüfung, Fehlerbehebungen und Bibliotheksverbesserungsideen.