2013-06-04 17 views
5

Sto cercando di scoprire se il motore TTS di Google fornito con il mio telefono Android viene installato come impostazione predefinita con tutti i telefoni Android che lo supportano? Non sono sicuro del tipo di riferimento da considerare per capirlo, quindi il mio piano è di andare su Softbank, un rivenditore, e chiedere. Ritengo che sia una domanda a cui non saranno in grado di rispondere, però.Il motore TTS di Google su tutti i telefoni Android e dove posso ottenerlo?

Mi è stato detto che Galaxies non viene fornito con Google TTS, in particolare; quindi, chiunque abbia un Galaxy può almeno mettermi dritto su quello ....

Mi chiedo anche, come posso ottenere una versione pacchettizzata del motore TTS di Google? Non riesco a trovarlo su Play Store. Il meglio che ho trovato è stato trovato guardando la licenza (quelle dolci piccole cose hanno sempre nomi e siti per gli sviluppatori). Quindi, è il motore HTS, usando HMM, giusto? Ma non sono in grado di trovare un pacchetto per Android sul loro sito web. Il mio prossimo passo è contattare lo sviluppatore, e attualmente sto leggendo la mia prova di e-mail tradotta (se tutto va bene, posso trovare la mia risposta e postarla).

Qualsiasi informazione sarebbe molto apprezzata.

+0

È possibile controllare a livello di codice e quindi installare se il motore non esiste. –

+0

Perché ne hai bisogno? Non è distribuito separatamente e probabilmente dipende da alcuni dati proprietari e/o servizi web. Se desideri utilizzarlo per il tuo dispositivo, probabilmente devi concederlo in licenza da Google. In ogni caso, non è esattamente una domanda di programmazione. –

+0

@HoanNguyen Ma non so dove trovare i binari. –

risposta

4

non credo che la risposta accettata è propriamente corretto. Questo codice non controlla se il motore TTS di google è installato. Si avvia appena un intento che i motori TTS in generale rispondono per chiedere se i dati TTS per loro sono installati.

Se non è installato alcun motore TTS, è possibile che si verifichi un FC causato da un'eccezione del tipo ActivityNotFoundException. Se hai un altro motore TTS (come pico) risponderà e controllerà i suoi dati. Se hai più di un motore TTS, ti chiederà quale motore TTS vuoi che funzioni.

Controllare invece il nome del pacchetto nel gestore pacchetti. Questo codice controlla SVOX Pico TTS:

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    if(isPackageInstalled(getPackageManager(), "com.svox.pico")){ 
     ttsInstalled = true; // This would be good to have it as a static member 
    } 
} 


public static boolean isPackageInstalled(PackageManager pm, String packageName) { 
     try { 
      pm.getPackageInfo(packageName, 0); 
     } catch (NameNotFoundException e) { 
      return false; 
     } 
     return true; 
} 
1

Google TTS è un pacchetto proprietario sviluppato da Google ed è disponibile nella maggior parte dei dispositivi (in particolare sui dispositivi Nexus) a partire da ICS [citazione necessaria]. Fa parte delle app sviluppate da Google che includono Google Play Store, Google Maps, Google+, Gmail, YouTube, Ricerca Google, Google Play Music, Google Play Books e molti altri. Non tutti sono disponibili per il download da Play Store.

Per quanto posso dire, non è possibile averlo a meno che in qualche modo Google decida di renderlo open source e disponibile pubblicamente. Come hai già detto, Google TTS utilizza la patch HTS (non è un motore di per sé) per HTK (lo so anche dalla pagina della licenza) che è rilasciata con la licenza Modified BSD. Cioè, potresti non essere mai in grado di ottenere una copia del motore.

Se si desidera sviluppare un motore TTS, si consiglia di dare un'occhiata al motore PICO TTS, il cui codice sorgente è disponibile in AOSP repository.

+0

Si prega di leggere le altre risposte. Ci siamo finiti. –

+0

Grazie per AOSP, però. :) –

2

Questo codice verifica se è installato TextToSpeech e se non andare a Google Store per scaricare

Intent intent = new Intent(); 
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
ArrayList<String> languages = new ArrayList<String>(); 
languages.add("eng-USA"); //$NON-NLS-1$ 
intent.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR, 
                languages); 
startActivityForResult(intent, REQUEST_TTS_DATA_CHECK_CODE); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
    super.onActivityResult(requestCode, resultCode, intent); 

    switch (requestCode) 
    { 
     case REQUEST_TTS_DATA_CHECK_CODE: 
      if (resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) 
      { 
       // show Alert Dialog to ask user go to play store to install 
       // When user click OK this is the code to set 
       intent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
       startActivity(intent); 
      } 
      break; 

} 
Problemi correlati