2011-12-19 90 views
6

我已經在Android中開發了我自己的TTS應用程序。有沒有辦法將TTS引擎部署到操作系統中,而不是運行TTS應用程序,以便其他應用程序可以調用我的TTS?像MS Window中的SAPI。 SVOX可以將引擎打包爲apk,並且在安裝之後,它會將新引擎添加到Andorid操作系統中,不知道我該怎麼做。將我的TTS引擎添加到Android TTS Serivce like 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> 

此引用RES/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" /> 

如果你在支持的Android ICS之前的版本計劃,您還需要符合特定的API共享庫。

我不會去到每一個活動的實施細節這裏,或進入ICS預API,但你可以找到在源代碼示例,eSpeak文字轉語音引擎的Android端口: http://code.google.com/p/eyes-free/source/browse/trunk/tts/espeak-tts/