2011-12-19 4 views
6

Я разработал свои собственные приложения TTS в Android. Есть ли способ развернуть мой движок TTS в ОС вместо запуска приложений TTS, чтобы другие приложения могли вызвать мою TTS? Что-то вроде SAPI в MS Window. SVOX может упаковать двигатель как apk, и после его установки он добавляет новые двигатели в ОС Andorid, не уверенный, как я могу сделать то же самое.добавьте мой TTS Engine в Android TTS Serivce, как SAPI

ответ

4

Чтобы ваш механизм преобразования текста в речь отображался в списке доступных сервисов, вам необходимо добавить соответствующие действия и записи манифеста.

Для API 14 и выше, вам необходимо расширить TextToSpeechService и вам необходимо добавить следующие строки в манифесте:

<service 
     android:name=".MyTextToSpeechService" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.TTS_SERVICE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.speech.tts" 
      android:resource="@xml/tts_engine" /> 
    </service> 

Это ссылки Рез/XML/tts_engine.xml, который должен выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<tts-engine xmlns:android="http://schemas.android.com/apk/res/android" 
    android:settingsActivity="com.example.MyTtsSettingsActivity" /> 

Вам также необходимо добавить различные вспомогательные мероприятия. Вот то, что вы будете добавлять в манифесте:

<activity 
     android:name=".DownloadVoiceData" 
     android:theme="@android:style/Theme.Dialog" > 
     <intent-filter> 
      <action android:name="android.speech.tts.engine.INSTALL_TTS_DATA" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".CheckVoiceData" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.speech.tts.engine.CHECK_TTS_DATA" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".GetSampleText" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.speech.tts.engine.GET_SAMPLE_TEXT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".TtsSettingsActivity" 
     android:label="@string/tts_settings_label" > 
     <intent-filter> 
      <action android:name="android.speech.tts.engine.CONFIGURE_ENGINE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

    <!-- Legacy code for pre-ICS compatibility. --> 
    <activity 
     android:name=".MyTtsEngine" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.START_TTS_ENGINE" /> 
     </intent-filter> 
    </activity> 

    <provider 
     android:name="com.googlecode.eyesfree.espeak.providers.SettingsProvider" 
     android:authorities="com.googlecode.eyesfree.espeak.providers.SettingsProvider" /> 

Если вы планируете поддерживать до ICS версии Android, вы будете также нуждаться в разделяемую библиотеку, которая соответствует конкретному API.

Я не буду вдаваться в подробности реализации каждого вида деятельности здесь, или в предварительно ICS API, но вы можете найти примеры в исходном коде для Android порт двигателя озвучки TTS: http://code.google.com/p/eyes-free/source/browse/trunk/tts/espeak-tts/