/examples/android/app/src/main/java/com/tensorspeech/tensorflowtts/MainActivity.java

https://github.com/dathudeptrai/TensorflowTTS · Java · 82 lines · 63 code · 15 blank · 4 comment · 2 complexity · 94e9e3418fa0311305662fd1b57b1202 MD5 · raw file

  1. package com.tensorspeech.tensorflowtts;
  2. import android.os.Bundle;
  3. import android.text.TextUtils;
  4. import android.view.View;
  5. import android.widget.EditText;
  6. import android.widget.RadioGroup;
  7. import androidx.appcompat.app.AppCompatActivity;
  8. import com.tensorspeech.tensorflowtts.dispatcher.OnTtsStateListener;
  9. import com.tensorspeech.tensorflowtts.dispatcher.TtsStateDispatcher;
  10. import com.tensorspeech.tensorflowtts.tts.TtsManager;
  11. import com.tensorspeech.tensorflowtts.utils.ThreadPoolManager;
  12. /**
  13. * @author {@link "mailto:xuefeng.ding@outlook.com" "Xuefeng Ding"}
  14. * Created 2020-07-20 17:25
  15. */
  16. public class MainActivity extends AppCompatActivity {
  17. private static final String DEFAULT_INPUT_TEXT = "Unless you work on a ship, it's unlikely that you use the word boatswain in everyday conversation, so it's understandably a tricky one. The word - which refers to a petty officer in charge of hull maintenance is not pronounced boats-wain Rather, it's bo-sun to reflect the salty pronunciation of sailors, as The Free Dictionary explains./Blue opinion poll conducted for the National Post.";
  18. private View speakBtn;
  19. private RadioGroup speedGroup;
  20. @Override
  21. protected void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.activity_main);
  24. TtsManager.getInstance().init(this);
  25. TtsStateDispatcher.getInstance().addListener(new OnTtsStateListener() {
  26. @Override
  27. public void onTtsReady() {
  28. speakBtn.setEnabled(true);
  29. }
  30. @Override
  31. public void onTtsStart(String text) {
  32. }
  33. @Override
  34. public void onTtsStop() {
  35. }
  36. });
  37. EditText input = findViewById(R.id.input);
  38. input.setHint(DEFAULT_INPUT_TEXT);
  39. speedGroup = findViewById(R.id.speed_chooser);
  40. speedGroup.check(R.id.normal);
  41. speakBtn = findViewById(R.id.start);
  42. speakBtn.setEnabled(false);
  43. speakBtn.setOnClickListener(v ->
  44. ThreadPoolManager.getInstance().execute(() -> {
  45. float speed ;
  46. switch (speedGroup.getCheckedRadioButtonId()) {
  47. case R.id.fast:
  48. speed = 0.8F;
  49. break;
  50. case R.id.slow:
  51. speed = 1.2F;
  52. break;
  53. case R.id.normal:
  54. default:
  55. speed = 1.0F;
  56. break;
  57. }
  58. String inputText = input.getText().toString();
  59. if (TextUtils.isEmpty(inputText)) {
  60. inputText = DEFAULT_INPUT_TEXT;
  61. }
  62. TtsManager.getInstance().speak(inputText, speed, true);
  63. }));
  64. findViewById(R.id.stop).setOnClickListener(v ->
  65. TtsManager.getInstance().stopTts());
  66. }
  67. }