Pengenalan ucapan android dan teks untuk ucapan menjadi mudah.
implementation ' net.gotev:speech:x.y.z ' Ganti xyz dengan
Untuk mulai menggunakan perpustakaan, Anda harus menginisialisasi dalam aktivitas Anda
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 ();
}
} Anda dapat menemukan aplikasi demo yang berfungsi penuh yang menggunakan pustaka ini di direktori examples . Cukup periksa proyek dan cobalah.
Di dalam suatu kegiatan:
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!" );
} Di onDestroy aktivitas Anda, tambahkan:
@ Override
protected void onDestroy () {
Speech . getInstance (). shutdown ();
}Untuk mencegah kebocoran memori.
Tambahkan ini ke tata letak Anda:
< 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 > Penting bahwa SpeechProgressView selalu berada di dalam linearlayout untuk berfungsi dengan baik. Anda dapat menyesuaikan lebar dan tinggi sesuai dengan pengaturan tinggi bar (lihat di bawah).
Kemudian, ketika Anda memulai pengenalan suara, lulus juga SpeechProgressView :
Speech . getInstance (). startListening ( speechProgressView , speechDelegate );Anda dapat mengatur semua warna 5 bar sesuai keinginan. Ini hanya sebuah contoh:
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 );Di dalam suatu kegiatan:
Speech . getInstance (). say ( "say something" );Anda juga dapat memberikan panggilan balik untuk menerima status:
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" );
}
});Anda dapat mengonfigurasi berbagai parameter dengan menggunakan metode setter pada instance ucapan, yang bisa Anda dapatkan seperti ini di mana saja dalam kode Anda:
Speech . getInstance ()Lihat Javadocs untuk referensi lengkap.
Secara default, pencatatan perpustakaan dinonaktifkan. Anda dapat mengaktifkan log debug dengan memohon:
Logger . setLogLevel ( LogLevel . DEBUG );Dimanapun Anda inginkan dalam kode Anda. Anda dapat menyesuaikan tingkat detail dari debug ke OFF.
Library Logger menggunakan android.util.Log secara default, sehingga Anda akan mendapatkan output di LogCat . Jika Anda ingin mengarahkan ulang log ke output yang berbeda atau menggunakan logger yang berbeda, Anda dapat memberikan implementasi delegasi Anda sendiri seperti ini:
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
}
}); Gunakan Speech.getInstance().getSpeechToTextLanguage() dan Speech.getinstance().getTextToSpeechVoice() . Periksa aplikasi demo untuk contoh lengkap.
Gunakan Speech.getInstance().getSupportedSpeechToTextLanguages(listener) dan Speech.getInstance().getSupportedTextToSpeechVoices() . Periksa aplikasi demo untuk contoh lengkap.
Gunakan Speech.getInstance().setLocale(locale) dan Speech.getInstance().setVoice(voice) . Periksa aplikasi demo untuk contoh lengkap.
Saat Anda mengatur lokal, suara secara otomatis diubah ke suara default bahasa itu. Jika Anda ingin mengatur suara tertentu, ingatlah untuk mengatur ulang setiap kali Anda mengubah lokal juga.
Terima kasih kepada @zagum untuk implementasi asli dari tampilan pengenalan suara.
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.
Terima kasih kepada Kristiyan Petrov untuk tinjauan kode, perbaikan bug, dan ide -ide peningkatan perpustakaan.