2011-12-19 16 views
6

He desarrollado mis propias aplicaciones TTS en Android. ¿Hay alguna manera de implementar mi motor TTS en el SO en lugar de ejecutar las aplicaciones TTS, para que otras aplicaciones puedan llamar a mi TTS? Algo como SAPI en MS Window. SVOX puede empaquetar el motor como apk y, una vez instalado, agrega nuevos motores al sistema operativo Andorid, no estoy seguro de cómo puedo hacer eso.agregar mi motor TTS a Android TTS Serivce como SAPI

Respuesta

4

Para que su motor de texto a voz aparezca en la lista de servicios disponibles, deberá agregar las actividades apropiadas y las entradas de manifiesto.

Para API 14 y anterior, es necesario extender TextToSpeechService y hay que añadir lo siguiente a su manifiesta:

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

Este referencias res/xml/tts_engine.xml, que debería tener este aspecto:

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

También deberá agregar una variedad de actividades de apoyo. Esto es lo que le añade a su manifiesta:

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

Si usted está planeando sobre el apoyo a las versiones pre-ICS de Android, también necesitará una biblioteca compartida que se ajusta a una API específica.

no voy a entrar en detalles de la ejecución de cada actividad aquí, o en la API de pre-ICS, pero se pueden encontrar ejemplos en el código fuente para el puerto Android de motor eSpeak TTS: http://code.google.com/p/eyes-free/source/browse/trunk/tts/espeak-tts/

Cuestiones relacionadas