2011-12-19 6 views
6

Android'de kendi TTS uygulamalarını geliştirdim. TTS motorumu TTS uygulamalarını çalıştırmak yerine işletim sistemine dağıtmanın herhangi bir yolu var mı? Böylece diğer uygulamalar TTS'imi arayabilir mi? MS Window'da SAPI gibi bir şey. SVOX, motoru apk olarak paketleyebilir ve kurulduktan sonra, Andorid işletim sistemine yeni motorlar ekleyebilir, aynı şeyi nasıl yapacağımı bilmiyorum.TTS motorumu Android'e ekle TTS Serivce gibi SAPI

cevap

4

Metinden konuşmaya çalışan motorunuzun kullanılabilir hizmetler listesinde görünmesi için, uygun etkinlikleri ve bildirim girişlerini eklemeniz gerekir.

API 14 için

ve üzeri, sen TextToSpeechService uzatmak gerekiyor ve Bildiriminize aşağıdakileri ekleyin gerekir:

<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> 

Bu referanslar res gibi görünmelidir/xml/tts_engine.xml:

Ayrıca, çeşitli destekleyici etkinlikler eklemeniz gerekir. Burada Bildiriminize eklersiniz budur:

<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" /> 

Android'in ICS öncesi sürümlerini destekleyen planlıyorsanız, ayrıca belirli bir API uyan paylaşılan kitaplık gerekir.

Burada her bir faaliyetin uygulanması ayrıntılarına girmeye veya ICS öncesi API içine ama eSpeak TTS motorunun Android limanı için kaynak kodunda örnek bulabilirsiniz olmaz: http://code.google.com/p/eyes-free/source/browse/trunk/tts/espeak-tts/