eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TextToSpeechTest.java 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /*
  2. * Copyright (C) 2012 Reece H. Dunn
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.reecedunn.espeak.test;
  17. import java.util.Locale;
  18. import android.speech.tts.TextToSpeech;
  19. import android.speech.tts.TextToSpeech.OnInitListener;
  20. import android.test.AndroidTestCase;
  21. import static org.hamcrest.MatcherAssert.assertThat;
  22. import static org.hamcrest.Matchers.*;
  23. public class TextToSpeechTest extends AndroidTestCase
  24. {
  25. private TextToSpeech mEngine = null;
  26. private boolean mInitialised = false;
  27. private int mStatus = TextToSpeech.ERROR;
  28. private OnInitListener mInitCallback = new OnInitListener()
  29. {
  30. @Override
  31. public void onInit(int status)
  32. {
  33. mStatus = status;
  34. mInitialised = true;
  35. }
  36. };
  37. @Override
  38. public void setUp() throws Exception
  39. {
  40. try
  41. {
  42. // Wait until the text-to-speech engine is initialised:
  43. mEngine = new TextToSpeech(getContext(), mInitCallback);
  44. for (int count = 0; !mInitialised && count < 20; ++count)
  45. {
  46. Thread.sleep(250);
  47. }
  48. assertThat(mInitialised, is(true));
  49. assertThat(mStatus, is(TextToSpeech.SUCCESS));
  50. assertThat(mEngine.getDefaultEngine(), is("com.reecedunn.espeak"));
  51. }
  52. catch (Exception e)
  53. {
  54. tearDown();
  55. throw e;
  56. }
  57. }
  58. @Override
  59. public void tearDown()
  60. {
  61. if (mEngine != null)
  62. {
  63. mEngine.shutdown();
  64. mEngine = null;
  65. }
  66. }
  67. public void testUnsupportedLanguage()
  68. {
  69. assertThat(mEngine, is(notNullValue()));
  70. Locale initialLocale = mEngine.getLanguage();
  71. assertThat(mEngine.isLanguageAvailable(new Locale("cel")), is(TextToSpeech.LANG_NOT_SUPPORTED));
  72. assertThat(mEngine.getLanguage().getLanguage(), is(initialLocale.getLanguage()));
  73. assertThat(mEngine.getLanguage().getCountry(), is(initialLocale.getCountry()));
  74. assertThat(mEngine.getLanguage().getVariant(), is(initialLocale.getVariant()));
  75. }
  76. public void testLanguages()
  77. {
  78. assertThat(mEngine, is(notNullValue()));
  79. for (VoiceData.Voice data : VoiceData.voices)
  80. {
  81. try
  82. {
  83. final Locale iana1 = new Locale(data.ianaLanguage, data.ianaCountry, data.variant);
  84. final Locale iana2 = new Locale(data.ianaLanguage, data.ianaCountry, "test");
  85. final Locale iana3 = new Locale(data.ianaLanguage, "VU", data.variant);
  86. final Locale java1 = new Locale(data.javaLanguage, data.javaCountry, data.variant);
  87. final Locale java2 = new Locale(data.javaLanguage, data.javaCountry, "test");
  88. final Locale java3 = new Locale(data.javaLanguage, "VUT", data.variant);
  89. assertThat(mEngine.isLanguageAvailable(iana1), is(TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE));
  90. assertThat(mEngine.setLanguage(iana1), is(TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE));
  91. assertThat(mEngine.getLanguage().getLanguage(), is(data.javaLanguage));
  92. assertThat(mEngine.getLanguage().getCountry(), is(data.javaCountry));
  93. assertThat(mEngine.getLanguage().getVariant(), is(data.variant));
  94. assertThat(mEngine.isLanguageAvailable(iana2), is(TextToSpeech.LANG_COUNTRY_AVAILABLE));
  95. assertThat(mEngine.setLanguage(iana2), is(TextToSpeech.LANG_COUNTRY_AVAILABLE));
  96. assertThat(mEngine.getLanguage().getLanguage(), is(data.javaLanguage));
  97. assertThat(mEngine.getLanguage().getCountry(), is(data.javaCountry));
  98. assertThat(mEngine.getLanguage().getVariant(), is(""));
  99. assertThat(mEngine.isLanguageAvailable(iana3), is(TextToSpeech.LANG_AVAILABLE));
  100. assertThat(mEngine.setLanguage(iana3), is(TextToSpeech.LANG_AVAILABLE));
  101. assertThat(mEngine.getLanguage().getLanguage(), is(data.javaLanguage));
  102. assertThat(mEngine.getLanguage().getCountry(), is(""));
  103. assertThat(mEngine.getLanguage().getVariant(), is(""));
  104. assertThat(mEngine.isLanguageAvailable(java1), is(TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE));
  105. assertThat(mEngine.setLanguage(java1), is(TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE));
  106. assertThat(mEngine.getLanguage().getLanguage(), is(data.javaLanguage));
  107. assertThat(mEngine.getLanguage().getCountry(), is(data.javaCountry));
  108. assertThat(mEngine.getLanguage().getVariant(), is(data.variant));
  109. assertThat(mEngine.isLanguageAvailable(java2), is(TextToSpeech.LANG_COUNTRY_AVAILABLE));
  110. assertThat(mEngine.setLanguage(java2), is(TextToSpeech.LANG_COUNTRY_AVAILABLE));
  111. assertThat(mEngine.getLanguage().getLanguage(), is(data.javaLanguage));
  112. assertThat(mEngine.getLanguage().getCountry(), is(data.javaCountry));
  113. assertThat(mEngine.getLanguage().getVariant(), is(""));
  114. assertThat(mEngine.isLanguageAvailable(java3), is(TextToSpeech.LANG_AVAILABLE));
  115. assertThat(mEngine.setLanguage(java3), is(TextToSpeech.LANG_AVAILABLE));
  116. assertThat(mEngine.getLanguage().getLanguage(), is(data.javaLanguage));
  117. assertThat(mEngine.getLanguage().getCountry(), is(""));
  118. assertThat(mEngine.getLanguage().getVariant(), is(""));
  119. }
  120. catch (AssertionError e)
  121. {
  122. throw new VoiceData.Exception(data, e);
  123. }
  124. }
  125. }
  126. }